Tu as une certaine expérience des DLL windows?
Parce qu'en fait, tu vas créer une DLL windows (chargée et utilisée par 4D suivant l'interface décrite dans la 4D Plugin API) et tu vas devoir faire en sorte d'appeler la dll de ta badgeuse depuis ta dll plugin 4D.
Bref tu vas avoir une circulation du code comme suit (pour un envoi de données/commandes à la badgeuse):
4D --> ton plug-in 4D --> la DLL badgeuse (--> le hardware badgeuse)
Bon, je sais pas trop ce que ton wizard génère, très probablement le squelette d'une dll (le 'plug-in' 4D), mais ensuite il va falloir que tu ajoutes le code de traitement spécifique à tes besoins, et pu passeras par un LoadLibrary(...)/FreeLibrary(...) pour charger/libérer ta dll badgeuse.
Tiens par exemple ici: http://4d.1045681.n5.nabble.com/Pl [...] 13446.html
J'ai trouvé du code montrant comment charger depuis le plug-in une dll située dans le même répertoire que le plug-in
*************************************
__declspec(dllexport) BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved );
char gPluginPath[_MAX_PATH] = ""; //Full path to the plugin Windows folder
BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) {
if ( fdwReason == DLL_PROCESS_ATTACH ) {
char *pos = NULL;
GetModuleFileName( hinstDLL, gPluginPath, sizeof( gPluginPath ) );
pos = strrchr( gPluginPath, '\\' );
gPluginPath[ pos-gPluginPath+1 ] = '\0';
}
return TRUE;
}
BOOL LoadDLL ( char* dllName, HINSTANCE* library ) {
char fullPath[_MAX_PATH];
fullPath[0] = 0;
(void *)strcpy( fullPath, gPluginPath );
(void *)strcat( fullPath, dllName );
(void *)strcat( fullPath, ".dll" );
*library = LoadLibraryEx( fullPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH );
if ( *library == NULL ) {
LPTSTR errorText;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
(DWORD)GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&errorText,
0, NULL );
PA_Alert( (char *)errorText );
LocalFree( errorText );
}
return ( *library != NULL );
}
et plus loin dans son code appel à la DLL externe nommée ici mydll.dll
HINSTANCE myLibrary;
if ( LoadDLL( "mydll", &myLibrary ) == TRUE ) {
// Do some stuff here
}
*************************************
On est dans le plug-in dont le squelette a été généré par le wizard (le DllMain est probablement généré, vide, par le wizard), comme on le voit avec l'appel PA_Alert(...) qui si j'en crois la doc ( http://4d.developpez.com/documenta [...] U84725.HTM ) va afficher une boite de dialogue windows, et on fait appel à des fonctions de l'API Windows comme LoadLibraryEx, GetModuleFileName, etc (et plus loin dans le code, à des fonctions de la dll badgeuse, une fois celle ci chargée en mémoire, en passant par GetProcAddress).
Si tu n'as aucune notion relative à l'API Windows, il va falloir que tu en acquières un minimum (avec un vieux Petzold ou c'est en C par exemple, ou sur le Web) avant de te lancer la dedans.
A+,
Message édité par gilou le 11-05-2012 à 11:12:05
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --