popstatic a écrit :@progi1984: ReadDirectoryChanges_ (sans le W) n'existe pas dans l'API windows.
@Denis:
1) Certes toutes les API ne sont pas déclrée dans PB, je comprends. Seulement comment compiler un programme qui les utilisent??
Elles ne sont pas déclarées donc "tant pis on les utilise pas"?
Non, PB a de la ressource, et il y a le choix
3 manières de faire dans le cas d'API non déclarées :
1) Les API sont des fonctions d'une dll, il faut utiliser les fonctions librairies disponibles
Code : Tout sélectionner
CallCFunction
CallCFunctionFast
CallFunction
CallFunctionFast
CloseLibrary
CountLibraryFunctions
ExamineLibraryFunctions
GetFunction
GetFunctionEntry
IsLibrary
LibraryFunctionAddress
LibraryFunctionName
LibraryID
NextLibraryFunction
OpenLibrary
Il faut commencer avec la fonction OpenLibrary()
Un exemple est fourni avec la doc PB, voir la page d'aide PureBasic - Library
Tu trouveras aussi des exemples sur les forums
2) Cette manière, je ne l'ai pas faite depuis 2 ans, j'espère qu'elle fonctionne encore (je pense que oui)
Il s'agit de créer le fichier Pbl nécessaire à PureBasic pour pouvoir utiliser les API comme une fonction de PB suivi du caractère _
Tu trouveras les outilis necessaires dans le dossier PureBasic :
\Library SDK\DLL Importer
ou il y a un fichier texte (en anglais) et l'outil DLL Importer.exe qui permet de créer tout ça
Je ne développe pas mais il me semble avoir expliqué un peu ça ici (lis tout et c'est en deuxième page je crois )
http://www.purebasic.fr/french/viewtopic.php?t=2561
3) utiliser les Import de PB, mais pour cela, tu dois trouver le fichier lib correspondant à la dll ou sont tes API
Par exemple, le fichier UxTheme.lib pour la dll UxTheme.DLL
Ces fichiers lib , soit tu les trouves sur internet soit tu télécharges la doc de Microsoft (Plateforme SDK), voir le lien ici dans la liste des liens utiles de notre forum ici
http://www.purebasic.fr/french/viewtopic.php?t=1498
Puis tu utilises les imports
Les imports peuvent être utilisés avec les dll même non microsoft et celle suivant le protocole C doivent être déclarées avec ImportC
Il y a un outil sympa de ts-soft sur le forum anglais qui génère le code d'import avec toutes les fonctions de la dll, utilises-le, il va bien
c'est Lib2PBImport Version 1.2
Il est ici
http://www.purebasic.fr/english/viewtopic.php?t=25353
Une précision sur les imports, valable pour la 1ère manière aussi : Vérifies toujours par code la présence de la dll.
Avec les imports, si la dll est absente, tu auras un message d'erreur en fonctionnement car les fonctions sont testées ou la présence de la dll, je ne sais pas.
Par exemple, Gdi+ étant loin d'être sur toutes les bécanes, voilà mon code pour tester sa présence (je colle ça tout au début, en initialisation)
Je stocke le nombre de fonctions, c'est un moyen simple de connaître la version de Gdi+ (Gdi+1.0 --> 609 fonctions, Gdi+ 1.1 630 fonctions si je me souviens bien)
Code : Tout sélectionner
If OpenLibrary(0, "GDIPLUS.DLL")
gdiplusVersion = CountLibraryFunctions(0)
CloseLibrary(0)
Else
MessageRequester("Erreur", "GdiPlus.dll est absent, installez d'abord Gdiplus" , 16)
End
EndIf
Debug gdiplusVersion
A+
Denis