x

Bonjour,

Je suis gérant d'une société de services et de conseil située en Pays de la Loire et spécialisée en développement sur mesure sous les outils PCSOFT WinDev, WebDev et WinDev Mobile. 

Nous intervenons principalement sur le territoire français, mais nos missions nous amènent également vers d'autres contrées (USA, Suisse, Belgique, Nouvelle Calédonie ...) 

Nous proposons les services suivants:

- Développement sur mesure au forfait
- Délégation de collaborateurs sur site (régie).
- Reprise complète de vos applications, sites web et Mobiles (TMA)
- Renfort d'équipe informatique.

Si vous souhaitez discuter d'un projet ou tout simplement faire connaissance, n'hésitez pas à me contacter au 06.86.67.72.32 ou contact[@]ennovsys.fr

A très bientôt,

Vincent ROY

Appel de procédures globales d’une WDL Windev via une DLL externe

Bonsoir,

J’ai reçu Windev 12 il y a maintenant quelques semaines (Ca change la vie par rapport à Windev 10 Express !!) et je me suis donc mis à faire un petit tool que j’ai nommé WDGenProc.
Ce dernier permet d’appeler n’importe quelles procédures globales d’une bibliothèque Windev (WDL) d’un programme externe (C/VB) par le biais d’une dll externe (une sorte de wrapper).
Pour faire plus précis voila ce que ça donne:
Programme externe (C/VB) => DLL externe (WDGenDllProc.dll) => Bibliothèque Windev (WDL)

Voici ce que permet WDGenProc:
- Charge une WDL que vous avez choisi
- Liste les procédures globales présentes dans la WDL
- Permet d’ajouter des paramètres et leur types des procédures globales
- Génère le code source du programme externe en C (Génère également un projet Visual C++) et Visual Basic

Vous allez me dire qu’il n’y a rien de nouveau. En effet, ca sert à éviter de se taper le coding de la dll qui pour certain est carrément récalcitrant sans se prendre la tête!!
Imaginez que vous ayez par exemple un programme de gestion de comptabilité. Disons que ce programme permet l’ajout de plugins par accès de DLL. Comme Windev ne permet pas la création de DLL, WDGenProc est donc une alternative (enfin moi je le vois comme ça ;) ) à ce « défaut » de l’AGL (ce n’est pas péjoratif). Vous allez donc créer une WDL Windev avec une belle fenêtre, boutons, etc … et l’appeler facilement dans votre gestion commerciale.
NB: Le wrapper a été codé en Visual C++ 2005, donc comme d’habitude, il faudra installer le petit utilitaire de déploiement (présent dans le téléchargement de WDGenProc)
Si vous avez des questions, suggestions, vous avez mon mail dans la partie <à propos>

Pour finir, je ne change pas mes habitudes, voici une copie d’écran du programme, le téléchargement du prog ainsi qu’une vidéo que j’ai mis sur youtube (A ce que j’ai entendu dire c’est la mode ….) :

Download
Downloaded 163 times

WDGenProc

Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

7 Comments on "Appel de procédures globales d’une WDL Windev via une DLL externe"

commenter

Bonsoir, Meilleurs voeux 2009
Je travaille sur Windev Mobile et doit faire un hook. Pour cela une DLL est obligatoire, donc je dois me mettre au C++. Mais j’aimerais faire le traitement du hook dans WDM. Il faut donc que le DLL appelle une procédure (éventuellement un callback) de WDM. Coment faire cela au plus simple en C++.
Merci d’avance pour votre aide. J’ai trouvé qque chose mais je n’y comprends rien.

Jacques

commenter

Oups j’ai oublié de mentionner le lien de ce que j’ai trouvé:
http://www.cppfrance.com/codes/CALLBACK-DLL-DEMANDE-FORUM_24227.aspx

Merci

commenter

Bonsoir,
Meilleurs voeux également.
Pour votre problème, ca dépend de ce que vous voulez faire et ce que vous voulez hooker.
L’exemple que vous donnez en lien explique simplement comment appeler une procédure d’un exécutable.

Explication rapide:
- L’exécutable contient une procedure nommée MyCallBack avec en paramètre une chaine.

- La DLL contient une fonction exportée nommée DemandeCallMyCallBack avec en paramètre un DWORD qui va contenir l’adresse de la procédure MyCallBack de l’executable.

En gros voila ce que ca fait:

1- L’executable lance la procédure DemandeCallBack.
2- DemandeCallBack va lancer la fonction _DemandeCallMyCallBack@4 contenue dans la DLL en lui passant en paramètre l’adresse de la fonction MyCallBack
3- _DemandeCallMyCallBack@4 va appeler la procédure MyCallBack de l’exécutable grace à son adresse, ce qui va afficher la MessageBox.

Pour finir, cette source ne parle pas de « hook » ;)
A+
Vince

commenter

Merci pour cette réponse rapide.
Il s’agit de hooker avec WH_keyboard_LL. J’ai trouvé sur le web ce qu’il faut pour écrire la dll partagée (pragma). Ma connaissance du C++ me limite à cela. Pour traiter le hook, je souhaite le faire en WD : là je suis plus à l’aise, d’où l’idée dans le callback du hook d’appeler une procédure de WD qui va traiter tout cela. Est-ce que le bout de code peut m’aider d’après vous ?
Bonne journée.
Jacques

commenter

Pour hooker le clavier, pas besoin de passer par une DLL externe je pense.
Ceci devrait fair l’affaire:
http://www.wdforge.org/modules/newbb/viewtopic.php?topic_id=5923&forum=19&post_id=23926#forumpost23926

commenter

euh, ben non pour un Pocket PC. Ya pas de clavier, et dans les hook, seul WH_keyboard_LL fonctione avec Windows Mobile 6 qui n’est plus documentée depuis WM5. Pour hooker sur des applications autres que l’instance qui hook, cad toutes les appli du PPC, il est impératif selon la littérature, de passer par une DLL sinon ça fonctionne pas. Sinon, j’ai réussi avec WD à appeler la dll du bout de code, à passer MyCallBack, et faire afficher un message par la DLL dans fenetre WD. Il rste à voir si maintenant cela fonctionne dans un hook, et surtout dans une fonction callback de la DLL, puis pour toutes les appli sur l’écran.
Je te remercie pour ton aide car cela a clarifié le séquencement de ce qui se passe et m’a débloqué malgré ma méconnaissance du C.
Juste une précision. Dans la DLL, la fonction « _DemandeCallMyCallBack@4″ n’existe pas : le _ et le @4 sont impératifs pour fonctionner, je ne sais pas à quoi cela sert …

Encore merci

Jacques

commenter

Bonsoir,
Exact, j’avais zappé le fait que c’était pour windows mobile.
Pour le hook, voir ce lien:
http://msdn.microsoft.com/en-us/library/ms644959.aspx#wh_keyboard_llhook et plus précisément « LowLevelKeyboardProc function. ».
L’API SetWindowsHookEx devrait fonctionner en lui passant le paramètre WH_KEYBOARD_LL . (http://msdn.microsoft.com/en-us/library/ms644990.aspx)
En ce qui concerne _DemandeCallMyCallBack@4, c’est le nom que le compilateur donne à la fonction exportée au moment de la compilation.
Le 4 après le @ représente le nombre d’octets des paramètres de la fonction.
Si tu veux que le nom de la fonction dans le source soit le meme que celui dans la « DLL », il faut rajouter un fichier de definition (*.DEF) ou bien passer un paramètre au compilo je crois, mais je ne me souviens plus de la syntaxe.
A+
Vince

Leave a Reply

Name:
Email:
Website:
Comment:
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>