Généralité. 2 Que sont les API ?. 2 Applications : 3 Les bibliothèques d'API le

Généralité. 2 Que sont les API ?. 2 Applications : 3 Les bibliothèques d'API les plus courantes. 3 Les différentes API et leur fonction. 4 A/ Lecture – écriture de fichier : 4 ReadFile. 4 WriteFile. 4 _lread. 4 _lwrite. 5 B/ Plus orienté sur la localisation de fichier : 5 SetFilePointer 5 GetSystemDirectory(A) 5 GetPrivateProfileString(A) 6 GetPrivateProfileInt(A) 6 WritePrivateProfileString (A) 6 WritePrivateProfileInt(A) 7 C/ Base de registres Windows : 7 RegCreateKey(A) 7 RegDeleteKey(A) 8 RegQueryValueExA.. 8 RegCloseKey(A) 9 RegOpenKey(A) 9 D/ Boîte de dialogue : 9 GetWindowText(A) 9 GetDlgItemText(A) 9 GetDlgItemInt 10 Hmemcpy. 10 MessageBox(A) 11 MessageBoxExA.. 12 MessageBeep. 12 ShowWindow.. 13 SendMessage. 13 WSPRINTF. 13 E/ Date et heure : 14 GetSystemTime. 14 GetLocalTime. 14 SystemTimeToFileTime. 14 SetTimer 14 F/ Génération d’une fenêtre : 15 CreateWindow.. 15 CreateWindowExA.. 15 Bitblt (similaire à hmemcpy) 15 G/ Appel au CD-ROM... 16 GetDriveType(A) 16 GetLogicalDrives(A) 16 GetLogicalDriveStrings(A) 16 GetWindowWord. 17 GetWindowLong. 17 H/ Messages : 17 BMSG xxxx WM_GETTEXT. 17 BMSG xxxx WM_COMMAND.. 18 Généralité Que sont les API ? API est l'abréviation de "Application Programming Interface" soit en français "Interfaces de Programmation d'applications". En fait ce sont des procédures stockées dans des bibliothèque (DLL : "Dynamic-Link Library" = en français "Bibliothèques de liaisons dynamiques" : librairie contenant des procédures appelable depuis plusieurs programmes) et que l'ont peut appeler depuis plusieurs programmes. L'interface de programmation Win32 (Win32 API) est commune aux systèmes d'exploitation Windows 95 et Windows NT. Les API Windows offrent aux programmeurs la possibilité d'interagir avec le système d'exploitation. Elles offrent des possibilités presque infinies, et dépassent de très loin les possibilités apportées par les environnement de développement (Visual Basic, Windev, ...). Par exemple, elles vous permettront de contrôler une application, d'accéder à la base de registres, de jouer des sons, etc ... Les API ne sont en fait que des fonctions semblables à celle que vous pouvez créer dans votre environnement de développement : en règle générale, on leur fournit un certain nombre de paramètres, et elles renvoient quelque chose, ou réalisent une action précise. Ces fonctions sont contenues dans des fichiers dll, tels "user32.dll", "kernel32.dll", ou bien d'autres encore. Les fonctions les plus couramment utilisées sont celles qui constituent Microsoft Windows lui-même. Ces procédures sont toutefois écrites en langage C, et doivent donc être déclarées avant de pouvoir les utilisées avec d'autres langages. Les API Windows sont plutôt faciles à utiliser, une fois que l'on connaît leur déclaration et leurs paramêtres. Leurs difficultés sont autres : les problèmes se posent généralement lorsqu'on cherche l'API qui nous rendrait service, puisqu'on se trouve alors confronté à des milliers de fonctions aux noms pas toujours très explicites. Lorsque enfin on a trouvé celle qui convient, on découvre qu'on est incapable de l'utiliser, car on ne connaît ni sa déclaration, ni ses paramètres, ni son utilisation ! Pour résoudre ce problème, il n'y a pas cinquante solutions : la première est de chercher des exemples utilisant cette API, la deuxième est d'acquérir un livre spécialisé sur les API (il n'en existe que quelques uns en français) ; leur prix avoisine généralement les 400 F (le livre de Richard Simon et al. de chez S&SM Ressources D'EXPERTS : Programmation des API WIN32, est très bien). Cela dit, elle peut souvent se montrer utile, ne serait-ce que pour savoir quelle API peut nous servir. Enfin, dernières ressources possibles, très intéressantes, mais malheureusement en C++ : la documentation de Visual C++, qui propose une liste de toutes les API, ou, si vous n'avez pas Visual C++, le MSDN Online sur le site de Microsoft (qui contient entre autres cette documentation), ou encore le fichier d'aide win32.hlp (Win32 programmer’s Reference), diponible en téléchargement gratuitement (attention, le zip avoisinne les 6-7 Mo ...). Ce fichier d'aide contient une description très complète des APIs de Widows, des structures à utiliser, etc, mais là encore, en C++... Applications : • Utiliser des fonctions multimédia. • Attaquer des fonctions du noyaux Windows (mémoire, processus, etc...). • Travailler dans la base de registres. • etc ... Les bibliothèques d'API les plus courantes Fichier Description Advapi32.dll Bibliothèque de services API avancés gérant de nombreuses API, y compris de nombreux appels de sécurité et de registre Comdlg32.dll Bibliothèque d'API de boîte de dialogue commune Gdi32.dll Bibliothèque d'API pour périphérique à interface graphique Kernel32.dll Support d'API de base pour les noyaux Windows 32 bits Lz32.dll Routines de compression 32 bits Mpr.dll Bibliothèque de routeurs fournisseurs multiples Netapi32.dll Bibliothèque d'API réseau 32 bits Shell32.dll Bibliothèque d'API Shell 32 bits User32.dll Bibliothèque pour routines d'interfaces utilisateur Version.dll Bibliothèque de versions Winmm.dll Bibliothèque multimédia Windows Winspool.drv Interface de spouleur d'impression contenant des appels API de spouleur d'impression Les différentes API et leur fonction A/ Lecture – écriture de fichier : Appel générique sur la lecture et l’écriture d’un fichier, habituellement de nature binaire : ReadFile Lit les données d'un fichier. BOOL ReadFile( HANDLE hFile, // handle du fichier à lire LPVOID lpBuffer, // pointeur vers le tampon chargé de récupérer les données lu dans le fichier. DWORD nNumberOfBytesToRead, // nombre d'octets à lire dans le fichier LPDWORD lpNumberOfBytesRead, // pointeur vers une variable chargée de recueillir le nombre d'octets lus. LPOVERLAPPED lpOverlapped // pointeur vers une structure OVERLAPPED. Cette structure est nécessaire si le fichier est créé avec l'attribut FILE_FLAG_OVERLAPPED. ); Code de retour : TRUE si la fonction a été exécutée avec succès, FALSE dans le cas contraire. WriteFile Ecrit des données dans un fichier. BOOL WriteFile( HANDLE hFile, // handle du fichier à l'intérieur duquel la fonction doit écrire. LPCVOID lpBuffer, // pointeur vers le tampon contenant les données à écrire. DWORD nNumberOfBytesToWrite, // nombre d'octets à écrire dans le fichier. LPDWORD lpNumberOfBytesWritten, // pointeur vers une variable chargée de recueillir le nombre d'octet effectivement écrits par la fonction. LPOVERLAPPED lpOverlapped // pointeur vers une structure OVERLAPPED. Cette structure est nécessaire si le fichier est créé avec l'attribut FILE_FLAG_OVERLAPPED. ); Code de retour : TRUE si la fonction a été exécutée avec succès, FALSE dans le cas contraire. _lread La fonction _lread lit les données d’un fichier spécifié. Cette fonction est prévue pour les applications 16 bits. Les applications basées sur 32 bits devront utiliser la fonction ReadFile. UINT _lread( HFILE hFile, // handle du fichier à lire. LPVOID lpBuffer, // pointeur vers le tampon chargé de récupérer les données lu dans le fichier. UINT uBytes // longueur, en octet, du buffer de données. ); Code de retour : La valeur retournée indique le nombre d’octets actuellement lu dans le fichier. Si le nombre d’octets lu est moins important que uBytes, la fonction a atteint la fin du fichier (EOF) avant de lire le nombre d’octets spécifié. Si la fonction échoue, la valeur de retour est HFILE_ERROR. _lwrite La fonction _lwrite écrit des données dans un fichier spécifié. Elle est utilisée dans des applications 16 bits (WriteFile sera utilisée pou les appli 32 bits) UINT _lwrite( HFILE hFile, // handle du fichier à écrire. LPCSTR lpBuffer, // pointeur vers le tampon contenant les données à écrire. UINT uBytes // nombre d’octets à écrire. ); Code de retour : En cas de succès, la valeur retournée indiquera le nombre d’octets actuellement écrit dans le fichier. Si la fonction échoue, la valeur de retour est HFILE_ERROR. B/ Plus orienté sur la localisation de fichier : SetFilePointer Déplace le pointeur d'un fichier ouvert. DWORD SetFilePointer ( HANDLE hFile, // handle du fichier dont le pointeur doit être modifié LONG lDistanceToMove, // distance sur laquelle le pointeur doit être modifié PLONG lpDistanceToMoveHigh, // pointeur vers les 32 bits de poids fort représentant la distance sur laquelle le pointeur doit être déplacé. lpDistanceToMoveHigh est également chargé de récupérer la nouvelle valeur du mot de poids fort de la position du pointeur. DWORD dwMoveMethod // Position de départ du pointeur ) ; FILE_BEGIN = 0 La position de départ correspond au début du fichier. FILE_CURRENT = 1 La position actuelle du curseur représente le point de départ. FILE_END = 2 La position de départ est égale à la fin du fichier. Code de retour : Si la fonction a été exécutée avec succès, elle retourne les 32 bits de poids faible représenatnt la nouvelle position du curseur. Si la fonction échoue, le code de retour est 0xFFFFFFFF. GetSystemDirectory(A) Permet de connaître le nom du répertoire Windows\System (pour la première fonction) et le nom du répertoire Windows pour la seconde. UINT GetSystemDirectory( LPTSTR lpBuffer, // Chaîne qui recevra en retour le nom du répertoire UINT uSize // Taille de la chaîne qui recoit le résultat ); Renvoie la longueur du résultat donné si la fonction a réussi, sinon 0. Si l'erreur vient du fait que la taille de la chaîne n'est pas assez importante, le résultat retourné est la longueur à prévoir pour récupérer le résultat. Appel à la lecture et écriture de fichier de type *.INI : GetPrivateProfileString(A) La fonction GetPrivateProfileString récupère une chaîne de caractères d’une section spécifiée dans un fichier d’initialisation. Cette fonction est prévue pour une compatibilité avec les applications 16 bits. Les applications 32 bits devront uploads/Litterature/ api.pdf

  • 39
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager