Broadcast a célp zene lejátszható a vkontakte státuszában

És még:
- Java Native Interface - Java-interakció natív kóddal.
- Hozzon létre egy DLL-könyvtárat, amely az AIMP Távoli API-t használja.
- Modul létrehozása OwnLang számára.
- Kapcsolódás a VK API-hoz.

Fejlécfájl létrehozása C-re
A C-vel való interakcióhoz meg kell határoznia a natív módszerek aláírását és az osztályok elrendezését. Tegyük fel, hogy a Dll-könyvtárral való interakció osztályának megvan a neve AIMP, a targetpremote csomagban kell lennie, és rendelkeznie kell a currentTrack metódussal, amely egy tömböt ad vissza. Mi ilyen osztályt írunk.

nyilvános végleges AIMP osztály # 123;

nyilvános statikus natív karakterlánc # 91; # 93; currentTrack # 40; # 41; ;

Compile AIMP.java
javac aimpremote \ AIMP.java

És használja a segédprogramot a fejléc fájlok javah létrehozásához
javah aimpremote.AIMP

Ennek eredményeképpen megkapjuk a aimpremote_AIMP.h fájlt a következő tartalommal:

/ * NEM SZERELJE EZT A FÁJL - azt a * /

Dll-könyvtár írása
Hozzon létre egy új LibAIMPRemote nevű Win32 projektet.

Broadcast a célp zene lejátszható a vkontakte státuszában

Broadcast a célp zene lejátszható a vkontakte státuszában

Fejlécfájlok hozzáadása: a generált aimpremote_AIMP.h és apiRemote.h az AIMP SDK-ból (letölthető a hivatalos webhelyről).
Broadcast a célp zene lejátszható a vkontakte státuszában

A projekt beállításaiban megmarad egy konfiguráció a könyvtár 64 bites verziójának összeállításához és a fejléc fájlok összekapcsolásához a JDK-ból.
Broadcast a célp zene lejátszható a vkontakte státuszában
Broadcast a célp zene lejátszható a vkontakte státuszában

Most implementáljuk az currentTrack funkciót. Hozzon létre három elemből álló elemet (előadó, cím, album), és töltse ki a memóriakártyáról származó adatokat.

#define WRITE_TO_STRING_ARRAY (i, x) \

memcpy (charBuffer, pBuff, (x) * 2); \

enV-> SetObjectArrayElement (info, (i), env-> NewString (charBuffer, (x)));

JNIEXPORT jobjectArray JNICALL Java_aimpremote_AIMP_currentTrack

# 40; JNIEnv * env, jclass jobj # 41; # 123;

HANDLE hAIMP = OpenFileMapping # 40; FILE_MAP_READ, hamis. AIMPRemoteAccessClass # 41; ;

ha # 40;. hAIMP # 41; # 123;

jobjectArray info = env -> NewObjectArray # 40; 3. env -> FindClass # 40; "java / lang / String" # 41;. 0 # 41; ;

PAIMPRemoteFileInfo aimpFileInfo = # 40; PAIMPRemoteFileInfo # 41;

MapViewOfFile # 40; hAIMP, FILE_MAP_READ, 0. 0. AIMPRemoteAccessMapFileSize # 41; ;

ha # 40; aimpFileInfo # 41; # 123;

LPWSTR pBuff = # 40; LPWSTR # 41; # 40; # 40; PBYTE # 41; aimpFileInfo + sizeof # 40; TAIMPRemoteFileInfo # 41; # 41; ;

jchar charBuffer # 91; 256 # 93; ;

WRITE_TO_STRING_ARRAY # 40; 2. aimpFileInfo -> AlbumLength # 41; ;

WRITE_TO_STRING_ARRAY # 40; 0. aimpFileInfo -> ArtistLength # 41; ;

pBuff + = aimpFileInfo -> DateLength

+ aimpFileInfo -> FileNameLength

+ aimpFileInfo -> GenreLength;

WRITE_TO_STRING_ARRAY # 40; 1. aimpFileInfo -> CímHossz # 41; ;