Page 1 sur 1

[Tuto] Divers Exemples de DllCall()

Posté : jeu. 25 mars 2010 04:10
par SagePourpre
Le but de ce sujet est de partager vos utilisations de DllCall
afin d'en faire profiter les autres.

:arrow: Si vous n'y connaissez rien, allez tout d'abord voir ce tutoriel pour
vous initier à DllCall et ces possibilités énormes .
http://autoitscript.fr/forum/viewtopic. ... 147#p36147

:arrow: Ensuite, pour pouvoir voir les fonctions à l'intérieur d'un dll précis,
vous aurez besoin de Dll Export Viewer
Site : http://www.nirsoft.net/utils/dll_export_viewer.html
Lien de téléchargement direct ( 32 bits ) : http://www.nirsoft.net/utils/dllexp.zip
Lien de téléchargement direct ( 64 bits ) : http://www.nirsoft.net/utils/dllexp-x64.zip

:arrow: Enfin, si ce n'a pas été fait, un petit tour dans l'aide d'autoit pour la fonction DllCall peut vous
éclairer un peu plus.


:arrow: Finalement, connaître le nom d'une fonction ne suffit pas, pour l'utiliser, il vous faut les renseignements
sur son fonctionnement. Vous pourrez trouver ces renseignement très facilement dans le cas
des dll de Windows sur MSDN : http://msdn.microsoft.com/en-us/library ... 85%29.aspx
(Fonction Sleep dans le lien suivant )



Afin que le tout soit clair, veuillez utiliser la formule suivante

Courte description

Code : Tout sélectionner

DllCall()
[Spoiler]Informations supplémentaires + exemple concis [/Spoiler]


*****************************************************


P.s. : Si vous voulez apprendre à utiliser DllCall correctement, je vous conseille vivement
de commencer par le tutoriel au début de ce message ( tutoriel en anglais )




edit : Pour commencer, voici un exemple facile à comprendre

Message Box

Code : Tout sélectionner

DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "text", "str", "title", "int", 0)
► Afficher le texte

Re: [..] Vos DllCall()

Posté : jeu. 25 mars 2010 08:06
par SagePourpre
Déplacer une fenêtre à l'aide de la souris.

Code : Tout sélectionner

DllCall("user32.dll", "long", "SendMessage", "hwnd", $gui, "int", $WM_SYSCOMMAND, "int", 0xF009, "int", 0)
► Afficher le texte

Ouvrir un processus

Code : Tout sélectionner

$ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
► Afficher le texte


Libérer la mémoire vive d'une application

Code : Tout sélectionner

DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
► Afficher le texte

Re: [Tuto] Vos DllCall()

Posté : jeu. 25 mars 2010 22:50
par SagePourpre
Obtenir la position du curseur de la souris

Code : Tout sélectionner

$tPOINTAPI = DllStructCreate("long x;long y")
DllCall("user32.dll","long","GetCursorPos","ptr",DllStructGetPtr($tPOINTAPI))
► Afficher le texte
Obtenir les informations sur un Volume (complexe)
Utilisation de DllStructCreate, DllStructGetPtr et DllStructGetData

Code : Tout sélectionner

DllCall('kernel32.dll','long','GetVolumeInformationW', _
'ptr' , DllStructGetPtr($lpRootPathName), _
'ptr' , DllStructGetPtr($lpVolumeNameBuffer), _
'long', $nVolumeNameSize, _
'ptr' , DllStructGetPtr($lpVolumeSerialNumber), _
'ptr' , DllStructGetPtr($lpMacimumComponentLength), _
'ptr' , DllStructGetPtr($lpFileSystemFlags), _
'ptr' , DllStructGetPtr($lpFileSystemNameBuffer), _
'long',$nFileSystemNameSize)
► Afficher le texte

J'ai traduis ces 2 exemples trouvés sur autoit.de. 8)

Re: [Tuto] Vos DllCall()

Posté : sam. 27 mars 2010 09:31
par SagePourpre
Qu'est-ce que j'ai pour vous aujourd'hui ?
*pige 1 bout de papier dans son chapeau de dllcall*


Appui sur une touche

Code : Tout sélectionner

DllCall ("user32.dll","int","keybd_event","int",0x20,"int",0,"long",0,"long",0)
► Afficher le texte

Re: [Tuto] Vos DllCall()

Posté : ven. 09 avr. 2010 23:24
par SagePourpre
Astuce du jour : Si vous êtes avide d'étudier plus de DllCall, les #include d'autoit
sont une bonne manière de voir les dllcall en action. (exemple : GdiPlus.au3)


Un très bon #include à ajouter dans votre librairie et qui de plus regorge de dllcall
de toutes sortes ...

WinAPIEx UDF
http://www.autoitscript.com/forum/index ... opic=98712

Re: [Tuto] Vos DllCall()

Posté : sam. 10 avr. 2010 00:50
par timmalos
Tuto tres utile, bravo ;)

Re: [Tuto] Vos DllCall()

Posté : sam. 10 avr. 2010 10:48
par Tlem
Pour WinAPIEx, j'ai prévu de le rajouter dans le prochain Pack AutoIt-Fr. ;)
UDF, api, properties, exemples et fichier d'aide, cet add-on est vraiment très complet. 8)

Il faut juste que je regarde comment je pourrait le rajouter dans l'aide principale de AutoIt. ;)

Re: [Tuto] Vos DllCall()

Posté : sam. 10 avr. 2010 12:07
par GMib
Il me semble que les sources de l'aide son disponible.
http://www.autoitscript.com/autoit3/fil ... .0-src.exe

Re: [Tuto] Vos DllCall()

Posté : dim. 11 avr. 2010 10:17
par Tlem
Certes, mais cela ne suffit pas. Il faut aussi des UDF non présents et le HTML Help Author de Microsoft. ;)

Mais j'avais déjà tout cà. ;)
J'ai donc terminé de re-créer le fichier AutoIt.chm pour prendre en compte WinAPIEx.chm. 8)

Par contre, le fichier AutoIt.chm contient deux pages HTML dont une qui présente la dernière version de AutoIt. Donc le fichier AutoIt.chm contient le numéro de la version en cours de AutoIt. :roll:

Re: [Tuto] Vos DllCall()

Posté : dim. 11 avr. 2010 12:27
par SagePourpre
timmalos a écrit :Tuto tres utile, bravo ;)

Merci ! ...

J'aurais aimé pouvoir mettre plus de théorie pour accompagner ces quelques exemples
mais l'information sur le sujet est peu abondante.

Re: [Tuto] Vos DllCall()

Posté : ven. 16 avr. 2010 21:08
par Tlem
Pour ceux ou celles qui n'ont pas envie d'attendre la prochaine version du Pack AutoIt-FR mais qui souhaiteraient obtenir la version WinAPIEx avec la modification du fichier d'aide AutoIt.chm afin de prendre en compte WinAPIEx.chm, vous pouvez télécharger une archive autoextractible qui réalise l'installation complète ici : http://www.autoitscript.fr/download/ind ... Ex_2.4.exe

*** N'oubliez pas que la page principale AutoIt.chm affichera les infos de la version 3.3.6.0 de AutoIt.

Re: [Tuto] Vos DllCall()

Posté : ven. 16 avr. 2010 21:10
par Tlem
Mise à jour du message précédent pour WinAPIEx_2.4. :mrgreen: