Fonctions API - Visual Basic Research Center

Liste des fonctions API disponibles (212)

A

AddFontResource
AnimateWindow
Arc
ArcTo
ArrangeIconicWindows

B

Beep
BitBlt
BringWindowToTop

C

CharLower
CharUpper
ClipCursor
CloseHandle
ClosePrinter
CopyFile
CopyRect
CreateBitmap
CreateBitmapIndirect
CreateCompatibleBitmap
CreateCompatibleDC
CreateDirectory

D

DeleteFile
DeleteMenu
DrawIcon
DrawMenuBar

E

Ellipse
EnableMenuItem
EnableWindow
EnumChildWindows
EnumWindows
EqualRect
ExitWindows
ExtFloodFill
ExtractIcon

F

FindClose
FindExecutable
FindFirstFile
FindNextFile
FindWindow
FlashWindow
FtpCreateDirectory
FtpDeleteFile
FtpGetCurrentDirectory
FtpPutFile
FtpRemoveDirectory
FtpRenameFile
FtpSetCurrentDirectory

G

GetActiveWindow
GetBitmapDimensionEx
GetBkColor
GetBkMode
GetClassName
GetClipCursor
GetComputerName
GetCurrentProcess
GetCursorPos
GetDesktopWindow
GetDiskFreeSpace
GetDoubleClickTime
GetDriveType
GetExitCodeProcess
GetFileAttributes
GetForegroundWindow
GetKeyState
GetLastError
GetLocalTime
GetLogicalDrives
GetMenu
GetMenuItemCount
GetMenuItemID
GetMenuString
GetNextWindow
GetOpenFileName
GetParent

GetPixel
GetPrivateProfileString
GetSaveFileName
GetShortPathName
GetSubMenu
GetSystemDirectory
GetSystemMenu
GetSystemMetrics
GetSystemTime
GetTempFileName
GetTempPath
GetTextCharacterExtra
GetTextColor
GetTextFace
GetTickCount
GetUserName
GetVolumeInformation
GetWindowLong
GetWindowRect
GetWindowsDirectory
GetWindowText
GetWindowTextLength
GlobalMemoryStatus

H

HiliteMenuItem
HttpOpenRequest
HttpQueryInfo
HttpSendRequest

I

InflateRect
InternetCloseHandle
InternetConnect
InternetOpen
InternetOpenUrl
InternetReadFile
IntersectRect
IsCharAlpha
IsCharAlphaNumeric
IsCharLower
IsCharUpper
IsChild
IsIconic
IsWindow
IsWindowVisible
IsZoomed

J

K

keybd_event

L

LineTo
LoadCursorFromFile
LockWindowUpdate
LockWorkStation
lstrcat

M

mciExecute
MessageBeep
mouse_event
MoveToEx
MoveWindow

N

O

OpenIcon
OpenPrinter

P

PaintDesktop
PrinterProperties
PtInRect

Q

R

Rectangle
RegCloseKey
RegCreateKey
RegOpenKey
RegQueryValueEx
RegSetValueEx
RemoveDirectory

Afficher la liste par librairie

RemoveFontResource
RoundRect

S

ScreenToClient
SetBitmapDimensionEx
SetBkColor
SetBkMode
SetComputerName
SetCursorPos
SetDoubleClickTime
SetFileAttributes
SetLocalTime
SetPixel
SetPriorityClass
SetRect
SetRectEmpty
SetSystemTime
SetTextCharacterExtra
SetTextColor
SetVolumeLabel
SetWindowLong
SetWindowPos
SetWindowText
SHAddToRecentDocs
ShowCursor
ShowWindow
Sleep
SQLAllocConnect
SQLAllocEnv
SQLAllocStmt
SQLBindCol
SQLBindParameter
SQLColAttributes
SQLConnect
SQLDescribeCol
SQLDisconnect
SQLDriverConnect
SQLError
SQLExecDirect
SQLExecute
SQLExtendedFetch
SQLFetch
SQLFreeConnect
SQLFreeEnv
SQLFreeStmt
SQLGetCursorName
SQLGetData
SQLGetInfo
SQLMoreResults
SQLNumParams
SQLNumResultCols
SQLParamData
SQLParamOptions
SQLPrepare
SQLPutData
SQLRowCount
SQLSetConnectOption
SQLSetCursorName
SQLSetPos
SQLSetScrollOptions
SQLSetStmtOption
SQLTables
SQLTransact
StretchBlt
SwapMouseButton

T

TextOut
TransparentBlt

U

UnionRect
UpdateWindow

V

W

waveOutGetNumDevs
WNetConnectionDialog
WNetDisconnectDialog
WritePrivateProfileString
WriteProfileString

X

Y

Z

Liste des fonctions API - Visual Basic Research Center - http://docvb.free.fr


AddFontResource

 Fonction AddFontResource

Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" ( _
ByVal lpFileName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet d'ajouter une fonte (de la faire enregistrer par le système).
lpFileName est une chaîne de caractère indiquant le fichier de fonte à manipuler (extensions ".TTF", ".FON", ...).
La valeur de retour indique le nombre de polices ajoutées.
Pour que le sytème prennent en compte les modifications, il faut faire un SendMessage ( HWND_BROADCAST , WM_FONTCHANGE , 0 , 0 ).

Pas d'exemple disponible...

Retour à la liste des API


AnimateWindow

 Fonction AnimateWindow

Declare Function AnimateWindow Lib "user32" ( _
ByVal hwnd As Long, _
 ByVal dwTime As Long, _
 ByVal dwFlags As Long) As Long
Versions :
. Windows 95/98 : A partir de 98
. Windows NT : Non
. Windows 2000/XP : Oui

Description :
Cette fonction a pour but d'afficher ou cacher une fenêtre en utilisant un effet spécial(fondu, roulement, implosion, explosion).
hwnd est le handle de la fenêtre sur laquelle on agit.
dwTime représente la durée de l'effet en millisecondes.
dwFlags est une combinaison des constantes ci-dessous.
En cas d'échec la fonction retourne 0, sinon une valeur différente de 0.

Remarque : pour utiliser AW_SLIDE, il faut préciser une (ou deux) directions.

Constante | Valeur | Définition
AW_HOR_POSITIVE | &H1 | Anime la fenêtre de gauche à droite.
AW_HOR_NEGATIVE | &H2 | Anime la fenêtre de droite à gauche.
AW_VER_POSITIVE | &H4 | Anime la fenêtre du haut vers le bas.
AW_VER_NEGATIVE | &H8 | Anime la fenêtre du bas vers le haut.
AW_CENTER | &H10 | Réduction de la fenêtre vers son centre (avec AW_HIDE), et inversement (avec AW_ACTIVATE).
AW_HIDE | &H10000 | Cache la fenêtre.
AW_ACTIVATE | &H20000 | Active la fenêtre.
AW_BLEND | &H80000 | Effet de "fondu" sur la fenêtre (si elle est au premier niveau).
AW_SLIDE | &H40000 | Fait "rouler" la fenêtre.

Exemple d'utilisation :

' (Exemple de Alain Quinet - alain.quinet@free.fr)

' Dans un module, vous définissez la fonction qui suit :

Private Declare Function AnimateWindow Lib "user32" ( _
ByVal hWnd As Long, _
ByVal dwTime As Long, _
ByVal dwFlags As Long) As Long

' Dans l'évènement Form_Load (ou Form_Activate) d'une feuille,
' vous tapez le code suivant :
Private Sub Form_Load()
' Cet appel de fonction fera s'afficher progressivement la
' fenêtre de son centre vers ses bords
Debug.Print AnimateWindow(Me.hWnd, 10000, &H10 Or &H20000)
End Sub


ArcTo

 Fonction ArcTo

Declare Function ArcTo Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal X1 As Long, _
 ByVal Y1 As Long, _
 ByVal X2 As Long, _
 ByVal Y2 As Long, _
 ByVal X3 As Long, _
 ByVal Y3 As Long, _
 ByVal X4 As Long, _
 ByVal Y4 As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction dessine un arc elliptique.
hdc est un pointeur (handle) vers la zone de dessin.
X1, Y1 indique les coordonnées du point "haut-gauche" du rectangle qui contiendra l'arc.
X2, Y2 indique les coordonnées du point "bas-droit" du rectangle qui contiendra l'arc.
X3, Y3 spécifie les coordonnées du point de départ de la ligne servant au découpage de l'arc.
X4, Y4 spécifie les coordonnées du point d'arrivée de la ligne servant au découpage de l'arc.

La différence avec la fonction "Arc" est que celle-ci met, en plus, à jour le point d'insertion courant. Ainsi, les dessins (lignes) suivantes partiront du point marquant la fin de l'arc.

Le dessin se fait dans le sens contraire des aiguilles d'une montre et par rapport aux points X3,Y3 et X4,Y4.
Ainsi avec :
Arc lghdc, 50, 50, 100, 100, 25, 75, 150, 75
On dessine le bas d'un arc de cercle.

Alors qu'avec :
Arc Me.hdc, 50, 50, 100, 100, 150, 75, 25, 75
On dessine le haut d'un arc de cercle.

La fonction retourne 0 si elle échoue.

Pas d'exemple disponible...


Arc

 Fonction Arc

Declare Function Arc Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal X1 As Long, _
 ByVal Y1 As Long, _
 ByVal X2 As Long, _
 ByVal Y2 As Long, _
 ByVal X3 As Long, _
 ByVal Y3 As Long, _
 ByVal X4 As Long, _
 ByVal Y4 As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction dessine un arc elliptique.
hdc est un pointeur (handle) vers la zone de dessin.
X1, Y1 indique les coordonnées du point "haut-gauche" du rectangle qui contiendra l'arc.
X2, Y2 indique les coordonnées du point "bas-droit" du rectangle qui contiendra l'arc.
X3, Y3 spécifie les coordonnées du point de départ de la ligne servant au découpage de l'arc.
X4, Y4 spécifie les coordonnées du point d'arrivée de la ligne servant au découpage de l'arc.

Le dessin se fait dans le sens contraire des aiguilles d'une montre et par rapport aux points X3,Y3 et X4,Y4.
Ainsi avec :
Arc lghdc, 50, 50, 100, 100, 25, 75, 150, 75
On dessine le bas d'un arc de cercle.

Alors qu'avec :
Arc Me.hdc, 50, 50, 100, 100, 150, 75, 25, 75
On dessine le haut d'un arc de cercle.

La fonction retourne 0 si elle échoue.

Pas d'exemple disponible...


ArrangeIconicWindows

 Fonction ArrangeIconicWindows

Declare Function ArrangeIconicWindows Lib "user32" Alias "ArrangeIconicWindows" ( _
ByVal hwnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de réorganiser l'agencement des icônes attachées à la fenêtre passée en paramêtre.
Vous pouvez de cette manière réorganiser le bureau en donnant le handle correspondant.

Pas d'exemple disponible...


Beep

 Fonction Beep

Declare Function Beep Lib "kernel32" Alias "Beep" ( _
ByVal dwFreq As Long, _
 ByVal dwDuration As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction produit un son simple à travers le haut-parleur.
dwFreq est la fréquence en Hertz du son à générer.
dwDuration est la durée du son.
Attention, la fonction est synchrone, elle ne rend pas la main tant que le son n'est pas fini.
De plus, sous Windows 95 les arguments ne sont pas pris en compte, le son standard est produit.

Pas d'exemple disponible...


BitBlt

 Fonction BitBlt

Declare Function BitBlt Lib "gdi32" Alias "BitBlt" ( _
ByVal hDestDC As Long, _
 ByVal x As Long, _
 ByVal y As Long, _
 ByVal nWidth As Long, _
 ByVal nHeight As Long, _
 ByVal hSrcDC As Long, _
 ByVal xSrc As Long, _
 ByVal ySrc As Long, _
 ByVal dwRop As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Phil - plancon@onetelnet.fr)
La fonction Bitblt permet de copier une image dans un conteneur image (PictureBox, Image, Form,...). Cette fonction préservera les dimensions de l'image.
Plusieurs options de copie sont possibles à l'aide du paramètre dwRop.
hDestDC : Endroit où l'image sera copiée (ex: form1.hdc, picture1.hdc).
x : Coordonnée en x du coin supérieur gauche d'où l'image sera copiée.
y : Coordonnée en y du coin supérieur gauche d'où l'image sera copiée.
nWidth : Largeur de l'image.
nHeight : Hauteur de l'image.
hSrcDC : Endroit d'où l'on prend l'image.
xSrc : Coordonnée en x du coin supérieur gauche de l'image source.
ySrc : Coordonnée en y du coin supérieur gauche de l'image source.
dwRop : Méthode utilisée pour copier l'image, voir la liste des constantes ci-dessous.

Constante | Valeur | Définition
SRCAND | &H8800C6 | Combine source et destination avec l'opérateur logique AND.
SRCCOPY | &HCC0020 | Copie l'image source intégralement sans se soucier de l'image de destination.
SRCERASE | &H440328 | Combine source et l'inversion de la destination avec l'opérateur logique AND.
SRCINVERT | &H660046 | Combine source et destination avec l'opérateur logique XOR.
SRCPAINT | &HEE0086 | Combine source et destination avec l'opérateur logique OR.
NOTSRCCOPY | &H330008 | Copie l'image source inversée sans se soucier de l'image de destination.
NOTSRCERASE | &H1100A6 | Combine source et destination avec l'opérateur logique OR puis inversion.
MERGEPAINT | &HBB0226 | Combine le source inversé et l'image de destination avec l'opérateur logique OR.
DSTINVERT | &H550009 | Inversion de l'image de destination sans se soucier du source.
BLACKNESS | &H42 | Tout en noir.
WHITENESS | &HFF0062 | Tout en blanc.

Exemple d'utilisation :

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

Private Const SRCCOPY = &HCC0020

Private Sub Form_Load()
' Mettre ScaleMode en Pixel et Autoredraw = true
' (Pour enregistrer l'image en mémoire)
' Charger une Image dans Picture1
' Cette exemple copie sur form1 une image 32x32 à partir de picSource
x = BitBlt(Form1.hDC, 20, 20, 32, 32, Picture1.hDC, 10, 10, SRCCOPY)
Form1.Refresh ' Montre l'image une fois la page rafraîchit
End Sub


BringWindowToTop

 Fonction BringWindowToTop

Declare Function BringWindowToTop Lib "user32" ( _
ByVal hWnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction met la fenêtre, dont le handle est envoyé en paramêtre, au premier plan. Elle se positionne devant toutes les autres et devient la fenêtre active. Elle renvoie 'Vrai' si la fonction a fonctionné, sinon 'Faux'.

Pas d'exemple disponible...


CharLower

 Fonction CharLower

Declare Function CharLower Lib "user32" Alias "CharLowerA" ( _
ByVal lpsz As String) As String
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
La fonction convertit tous les caractères du texte passé en paramètre en minuscule.
lpsz est le texte à mettre en minuscule.
La fonction retourne le texte convertit.

Pas d'exemple disponible...


CharUpper

 Fonction CharUpper

Declare Function CharUpper Lib "user32" Alias "CharUpper" ( _
ByVal lpsz As String) As String
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
La fonction convertit tous les caractères du texte passé en paramètre en majuscule.
lpsz est le texte à mettre en majuscule.
La fonction retourne le texte convertit.

Pas d'exemple disponible...


ClipCursor

 Fonction ClipCursor

Declare Function ClipCursor Lib "user32" ( _
lpRect As Any) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction vous pouvez modifier l'espace de mouvement de la souris (ne la faire évoluer que dans votre fenêtre courante par exemple).
lpRect est une structure RECT (définie ci-dessous), qui contient la zone dans laquelle la souris sera autorisée à se déplacer (attention, la fonction travaille en pixel).
La fonction retourne Vrai si elle a réussi, sinon, False.
Si par exemple vous voulez que la souris reste à l'intérieure de votre fenêtre vous pouvez faire :
Dim tmpR As RECT
tmpR.Top = Me.Top / Screen.TwipsPerPixelY
tmpR.Left = Me.Left / Screen.TwipsPerPixelX
tmpR.Right = (Me.Left + Me.Width) / Screen.TwipsPerPixelX
tmpR.Bottom = (Me.Top + Me.Height) / Screen.TwipsPerPixelY
Call ClipCursor(tmpR)
Pour rétablir la situation normale :
tmpR.Top = 0
tmpR.Left = 0
tmpR.Right = Screen.Width
tmpR.Bottom = Screen.Height
Call ClipCursor(tmpR)

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Pas d'exemple disponible...


CloseHandle

 Fonction CloseHandle

Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" ( _
ByVal hObject As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cet fonction sert à fermer un Handle ouvert.
Elle est utilisée dans de nombreux cas, pour les fichiers, pour les processus, pour les threads, ...
Si la fonction échoue elle retourne 0.

Exemple d'utilisation :

' Exemple de Phil (plancon@onetelnet.fr)

Option Explicit
' ---Les API concernant le contrôle des processus et des tâches sous Windows---
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, _
lpExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
' Ferme une application extérieure
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, _
ByVal uExitCode As Long) As Long
' Ferme notre application
Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)

' ---Autres API---
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetLastError Lib "kernel32" () As Long

' ---Ici les constantes---
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400

Sub Shell(ByVal Tache As String)
' ---Cette fonction crée une tache puis regarde si elle est active---
' Tache est un nom de fichier
' ---Déclaration des variables---
Dim hProcess As Long
Dim RetVal As Long
' ---Ouvre un programme et récupère son handle (hProcess)---
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(Tache, 6))
' ---Regarde si le processus est actif---
Do
' Retourne le status du processus en cours
GetExitCodeProcess hProcess, RetVal
' Les 2 lignes suivantes sont recommandées pour éviter de faire
' travailler le système avec GetExitCodeProcess
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
CloseHandle (hProcess)
End Sub

Private Sub Form_Load()
TesMort ("c:\winnt\notepad.exe")
End Sub

Sub TesMort(ByVal Tache As String)
' ---Tue une application en cours---
' Cette fonction force l'arrêt d'une tâche.
' ---Déclaration des variables---
Dim hProcess As Long
Dim RetVal As Long
' ---Ouvre un programme et récupère son handle (hProcess)---
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(Tache, 6))
' ---Regarde si le processus est actif---
If (hProcess <= 0) Then
MsgBox "OpenProcess() a échoué : " & GetLastError()
Else
' Sinon le tue
If TerminateProcess(hProcess, 1) Then
MsgBox "TerminateProcess() a échoué " & GetLastError()
Else
MsgBox "Tu es mort"
CloseHandle (hProcess)
End If
End If
End Sub


ClosePrinter

 Fonction ClosePrinter

Declare Function ClosePrinter Lib "winspool.drv" ( _
ByVal hPrinter As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction ferme un accès à une imprimante (ouvert avec OpenPrinter ou AddPrinter).
hPrinter est un pointeur vers une imprimante.
Si la fonction échoue elle retourne 0.

Exemple d'utilisation :

' Ne pas oublier les déclarations de types de de constantes.
' Le code suivant ouvre simplement la fenêtre des propriétés
' de l'imprimante courante.
Dim lgRep As Long, lgHnd As Long, tyPrinter As PRINTER_DEFAULTS
lgRep = OpenPrinter(Printer.DeviceName, lgHnd, tyPrinter)
If (lgRep <> 0) Then
lgRep = PrinterProperties(Me.hwnd, lgHnd)
ClosePrinter lgHnd
End If


CopyFile

 Fonction CopyFile

Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" ( _
ByVal lpExistingFileName As String, _
 ByVal lpNewFileName As String, _
 ByVal bFailIfExists As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction est à utiliser pour copier des fichiers. Les attributs du fichier copié le sont également (sauf les caractéristiques liées à la sécurité).
lpExistingFileName : Chaîne contenant le fichier à copier.
lpNewFileName : Chaîne avec le nom et le chemin de la destination de la copie.
bFailIfExists : Indique la marche à suivre si la destination contient déjà un fichier du même nom. S'il est à 'Vrai' et que le fichier est déjà présent la fonction renvoie une erreur, s'il est à 'Faux' et que le fichier est déjà présent, celui-ci est remplacé et aucune erreur n'est retournée.
Dans tous les cas, renvoie 'Vrai' si la fonction a réussi, sinon 'Faux'.

Exemple d'utilisation :

' Exemple proposé par : Gasser (jdg@urbanet.ch)

Public Function CopyFile(ByVal SourceFileName As String, _
ByVal TargetFileName As String, _
ByVal FailIfTargetExists As Boolean) As Long

Dim strSourceTmp, strTargetTmp As String
Dim lgFailIfExists As Long

strSourceTmp = SourceFileName & Space$(250 - Len(SourceFileName))
strTargetTmp = TargetFileName & Space$(250 - Len(TargetFileName))

lgFailIfExists = CLng(FailIfTargetExists)

On Error Resume Next
Call APICopyFile(strSourceTmp, strTargetTmp, lgFailIfExists)
On Error GoTo 0

If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical
End If

CopyFile = Err.Number
End Function


CopyRect

 Fonction CopyRect

Declare Function CopyRect Lib "user32" ( _
lpDestRect As RECT, _
 lpSourceRect As RECT) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de copier le contenu d'une structure RECT dans une autre.
lpDestRect est donc la structure de destination,
et lpSourceRect est la structure source.
La fonction retourne Vrai si la copie s'est effectuée, sinon, False.

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Pas d'exemple disponible...


CreateBitmapIndirect

 Fonction CreateBitmapIndirect

Declare Function CreateBitmapIndirect Lib "gdi32" ( _
lpBitmap As BITMAP) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de faire une image à partir du type BITMAP détaillé ci-dessous.
lpBitmap pointe vers une variable de type BITMAP,
La fonction retourne un handle vers l'image si tout c'est bien passé, sinon 0.

Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type

Pas d'exemple disponible...


CreateBitmap

 Fonction CreateBitmap

Declare Function CreateBitmap Lib "gdi32" ( _
ByVal nWidth As Long, _
 ByVal nHeight As Long, _
 ByVal nPlanes As Long, _
 ByVal nBitCount As Long, _
 lpBits As Any) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Comme son nom l'indique, cette fonction vous permet de faire une bitmap. Cette fonction ne peut pas être utilisée seule, elle doit être combinée avec d'autres afin d'obtenir un résultat sous VB.
nWidth est la largeur du bitmap à créer,
nHeight est la hauteur du bitmap à créer,
nPlanes représente le nombre de "plans" de couleurs,
nBitCount représente le nombre de bit utilisé pour définir la couleur d'un point,
lpBits est un tableau d'octets qui indique les couleurs utilisés pour chaque point du bitmap (c'est la couleur de référence).
La fonction retourne le handle du bitmap en cas de succès, sinon 0.

Pas d'exemple disponible...


CreateCompatibleBitmap

 Fonction CreateCompatibleBitmap

Declare Function CreateCompatibleBitmap Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal nWidth As Long, _
 ByVal nHeight As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de créer une image en fonction d'un contexte d'affichage. L'image a ainsi les mêmes caractéristiques graphiques que son conteneur (palette).
hdc est un handle sur un contexte d'affichage.
nWidth et nHeight sont les dimensions de l'image à créer.
La fonction retourne un handle sur l'image, s'il y a une erreur, elle renvoie 0.

Pas d'exemple disponible...


CreateCompatibleDC

 Fonction CreateCompatibleDC

Declare Function CreateCompatibleDC Lib "gdi32" ( _
ByVal hdc As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction, vous pouvez créer un contexte de périphérique mémoire résultant d'un contexte de périphérique. Fonction assez obscure quand on lit la définition, mais qui peut être vue comme la traduction en zone mémoire (et ainsi manipulable) d'un objet écran.
hdc est donc le contexte de l'objet dont il faut créer un contexte mémoire.
Renvoie 0 en cas d'échec, sinon, le contexte créé.

Pas d'exemple disponible...


CreateDirectory

 Fonction CreateDirectory

Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" ( _
ByVal lpPathName As String, _
 lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction sert à créer un répertoire.
lpPathName est le chemin complet du répertoire à créer.
lpSecurityAttributes est une structure qui renseigne les informations de sécurité du nouveau répertoire (voir détail ci-dessous). Cela n'est pas nécessaire sous Win9x (valeur Null).
Sous NT ou Win2000, une valeur Null donne les attributs de sécurité par défaut au répertoire.
La valeur Vrai est retournée par la fonction si la création a eu lieu, sinon False.

Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Pas d'exemple disponible...


DeleteFile

 Fonction DeleteFile

Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" ( _
ByVal lpFileName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Rien de bien compliqué ici. Cette fonction sert tout simplement à effacer un fichier.
lpFileName est le nom du fichier à effacer.
La fonction retourne Vrai si la suppression a eu lieu, sinon, False.
Equivalent de la commande "Kill" sous Visual Basic.

Exemple d'utilisation :

' Exemple proposé par : Christophe M (ch.m@free.fr)
'-----------------------------------------------------------
' Déclarations
'-----------------------------------------------------------
Option Explicit

' Récupérer le chemin du répertoire temporaire
Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" ( _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long

' Créer un nom de fichier temporaire
Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" ( _
ByVal lpszPath As String, _
ByVal lpPrefixString As String, _
ByVal wUnique As Long, _
ByVal lpTempFileName As String) As Long

' Créer un fichier
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long

' Fermer un fichier
Public Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long

' Supprimer un fichier
Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" ( _
ByVal lpFileName As String) As Long

'--------------------------------------
' Constantes et structure pour l'API CreateFile
'--------------------------------------
' Type des attributs de sécurité
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

' Valeur de retour si erreur
Public Const INVALID_HANDLE_VALUE = -1

' dwDesiredAccess
Public Const GENERIC_WRITE = &H40000000
Public Const GENERIC_READ = &H80000000

' dwShareMode
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2

' dwCreationDisposition
Public Const CREATE_NEW = 1
Public Const CREATE_ALWAYS = 2
Public Const OPEN_EXISTING = 3
Public Const OPEN_ALWAYS = 4
Public Const TRUNCATE_EXISTING = 5

' dwFlagsAndAttributes
' attributs
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
' flags
Public Const FILE_FLAG_WRITE_THROUGH = &H80000000
Public Const FILE_FLAG_OVERLAPPED = &H40000000
Public Const FILE_FLAG_NO_BUFFERING = &H20000000
Public Const FILE_FLAG_RANDOM_ACCESS = &H10000000
Public Const FILE_FLAG_SEQUENTIAL_SCAN = &H8000000
Public Const FILE_FLAG_DELETE_ON_CLOSE = &H4000000
Public Const FILE_FLAG_BACKUP_SEMANTICS = &H2000000
Public Const FILE_FLAG_POSIX_SEMANTICS = &H1000000

'-----------------------------------------------------------
' creerFicTemp
'-----------------------------------------------------------
Public Function creerFicTemp(ByRef pS_messErr As String, _
ByRef pS_pathFicTemp As String, _
ByRef pI_handleFicCreer As Long, _
Optional pB_fermerFic As Boolean = True) As Boolean

' Crée un fichier temporaire (unique) dans le répertoire temp du système
' pS_pathFicTemp : nom du fichier .tmp créé (affecté par référence)
' pI_handleFicCreer : handle du fichier .tmp créé (affecté par référence)
' pB_fermerFic : à true = on ferme le fichier

On Error GoTo errVB

Static sI_bufferLength As Long
Static sS_prefix As String * 3 ' préfixe du fichier temp
Dim lS_repTemp As String ' repertoire temp
Dim lS_nomFicTemp As String ' fichier temp
Dim lO_securAttr As SECURITY_ATTRIBUTES
Dim lI_handleTemp As Long ' handle fic temporaire
Dim lI_handleFic As Long ' handle fic créé

' initialisation de la structure SECURITY_ATTRIBUTES
lO_securAttr.nLength = Len(lO_securAttr)
lO_securAttr.bInheritHandle = True
lO_securAttr.lpSecurityDescriptor = 0

' initialisation des variables
sI_bufferLength = 50
sS_prefix = "CHM" ' mon trigramme
lS_repTemp = Space$(50)
lS_nomFicTemp = Space$(100)
creerFicTemp = False ' la fonction est en erreur par défaut

' récupération du répertoire temp
If GetTempPath(sI_bufferLength, lS_repTemp) = 0 Then
Form1.Print "Impossible de trouver le chemin du répertoire temporaire !"
Exit Function
End If

' génération d'un nom de fichier (unique dans le répertoire temporaire)
If GetTempFileName(Mid$(lS_repTemp, 1, InStrRev(lS_repTemp, "\")), _
sS_prefix, 0, lS_nomFicTemp) = 0 Then
pS_messErr = "Impossible de créer un fichier temporaire !"
Exit Function
End If

' "nettoyage" du nom du fichier
lS_nomFicTemp = Mid$(lS_nomFicTemp, 1, InStrRev(lS_nomFicTemp, ".tmp", , vbTextCompare) + 3)
pS_pathFicTemp = lS_nomFicTemp

' création du fichier dans le répertoire temporaire
lI_handleFic = CreateFile(lS_nomFicTemp, _
0, _
0, _
lO_securAttr, _
CREATE_ALWAYS, _
FILE_ATTRIBUTE_NORMAL, _
lI_handleTemp)

If lI_handleFic = INVALID_HANDLE_VALUE Then
pS_messErr = "Impossible de créer le fichier temporaire !"
Exit Function
End If

pI_handleFicCreer = lI_handleFic

If pB_fermerFic Then
' fermeture du fichier
If CloseHandle(lI_handleFic) <> 1 Then
pS_messErr = "Impossible de fermer le fichier ayant le handle : " & lI_handleFic
Exit Function
End If
End If

' tout est Ok
creerFicTemp = True
Exit Function

errVB:
pS_messErr = "Erreur inattendu : " & Err.Description
End Function


DeleteMenu

 Fonction DeleteMenu

Declare Function DeleteMenu Lib "user32" Alias "DeleteMenu" ( _
ByVal hMenu As Long, _
 ByVal nPosition As Long, _
 ByVal wFlags As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Permet de supprimer un élément de menu.
hMenu est le handle du menu à manipuler.
nPosition est la position du menu (ou sous-menu) qui sera supprimé.
wFlags est la méthode de repérage utilisée : MF_BYCOMMAND ou MF_BYPOSITION.

Exemple d'utilisation :

' Origine : fred - chapeaux.ronds@wanadoo.fr

' Le code qui suis permet de désactiver les boutons "X", "min", "max".
' Créer un nouveau projet vb et coller le code suivant dans
' "déclaration" puis essayer les trois boutons les uns après les autres
' (pour cela enlever l'apostrophe devant "no_min" et "no_max").

Option Explicit

Private Declare Function DeleteMenu Lib "user32" (ByVal _
hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal _
hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, ByVal _
nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, ByVal _
nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const MF_BYCOMMAND = &H0&
Private Const MF_BYPOSITION = &H400
Private Const SC_MINIMIZE = &HF020
Private Const SC_MAXIMIZE = &HF030
Private Const SC_CLOSE = 6
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000

Private Sub no_x()
' Désactiver X
Dim hMenu As Long, k As Long
hMenu = GetSystemMenu(hwnd, False)
k = DeleteMenu(hMenu, SC_CLOSE, MF_BYPOSITION)
End Sub

Private Sub no_min()
' Désactiver 'minimiser'
Dim hMenu As Long, k As Long
hMenu = GetSystemMenu(hwnd, False)
k = DeleteMenu(hMenu, SC_MINIMIZE, MF_BYCOMMAND)
k = GetWindowLong(hwnd, GWL_STYLE)
k = k Xor WS_MINIMIZEBOX
SetWindowLong hwnd, GWL_STYLE, k
End Sub

Private Sub no_max()
' Désactiver 'maximiser'
Dim hMenu As Long, k As Long
hMenu = GetSystemMenu(hwnd, False)
k = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
k = GetWindowLong(hwnd, GWL_STYLE)
k = k Xor WS_MAXIMIZEBOX
SetWindowLong hwnd, GWL_STYLE, k
End Sub

Private Sub Form_Load()
no_x
' no_min
' no_max
End Sub


DrawIcon

 Fonction DrawIcon

Declare Function DrawIcon Lib "user32" ( _
ByVal hdc As Long, _
 ByVal x As Long, _
 ByVal y As Long, _
 ByVal hIcon As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction vous permet de dessiner une icône dont vous avez récupéré un handle. Concrètement cette fonction est utilisée après un ExtractIcon ou un LoadIcon par exemple.
hdc est le handle de l'objet dans lequel sera dessinée l'icône.
x et y sont les coordonées de départ de l'icône à dessiner.
hIcon est le handle de l'icône.
La fonction renvoie "Vrai" si tout c'est bien passé, sinon "Faux".

Exemple d'utilisation :

' Exemple de Philippe Plançon

' Extraire les icônes d'un exécutable
Dim FichierExtraction As String
Dim NbIcon As Long
Dim Handle As Long ' Adresse pointée par ExtractIcon
Dim X As Long ' Retour

' Les API
Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, _
ByVal X As Long, ByVal Y As Long, ByVal hIcon As Long) As Long
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" _
(ByVal hInst As Long, ByVal lpszExeFileName As String, _
ByVal nIconIndex As Long) As Long

Private Sub Extraction()
' ---Demande du fichier---
FichierExtraction = InputBox$("Fichier contenant l'icône à extraire (.ICO,.EXE,.DLL):", _
"Extraction d'icône", App.Path & "\" & App.EXEName & ".exe")
If FichierExtraction = vbNullString Then Exit Sub
' ---Initialise---
Picture1.Cls
' ---Retourne le nombre d'icône contenu par le fichier---
' Le -1 est important : il déclenche l'option de "comptage" des icônes
NbIcon = ExtractIcon(Handle, FichierExtraction, -1)
Label1.Caption = "Nombre d'icône = " & Str$(NbIcon)
' ---Extraction et dessine l'icône---
' Le premier icône est indexé en 0
NbIcon = ExtractIcon(Handle, FichierExtraction, NbIcon - 1)
X = DrawIcon(Picture1.hdc, 0, 0, NbIcon)
End Sub


DrawMenuBar

 Fonction DrawMenuBar

Declare Function DrawMenuBar Lib "user32" ( _
ByVal hwnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction sert à rafraîchir un menu après une opération de mise à jour sur celui-ci.
hwnd est le handle de la feuille dont on veut rafraîchir le menu.
La fonction retourne 1 en cas de succès, sinon 0.

Exemple d'utilisation :

' Origine : Philippe Plançon (plancon@onetelnet.fr)
' Rafraîchir un menu
Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
...
' Appel
lgRetour = DrawMenu(Feuille.hWnd)
' Ou, sans valeur de retour
DrawMenu Feuille.hWnd
...


Ellipse

 Fonction Ellipse

Declare Function Ellipse Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal X1 As Long, _
 ByVal Y1 As Long, _
 ByVal X2 As Long, _
 ByVal Y2 As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction dessine une ellipse (et accessoirement un cercle).
On définit un rectangle dans lequel sera placée l'ellipse. Pour dessiner un cercle, il faut donc faire un carré.
hdc est le contexte de sortie (dessin).
X1, Y1 définissent le point haut/gauche du rectangle utilisé pour dessiner l'ellipse.
X2, Y2 répresentent le point bas/droit du rectangle.

Pas d'exemple disponible...


EnableMenuItem

 Fonction EnableMenuItem

Declare Function EnableMenuItem Lib "user32" ( _
ByVal hMenu As Long, _
 ByVal wIDEnableItem As Long, _
 ByVal wEnable As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Permet de rendre accesible ou non un menu.
hMenu est un handle sur le menu.
wIDEnableItem est soit la position, soit l'identifiant de l'item de menu que l'on veut rendre (ou non) accessible.
wEnable est un ensemble de constante qui indique l'état du menu. Il sert également à indiquer la méthode de référencement du menu (MF_BYCOMMAND ou MF_BYPOSITION, voir GetMenuString). Les autres constantes valides sont données ci-dessous.

Constante | Valeur | Définition
MF_ENABLED | &H0& | Rend le menu accessible.
MF_DISABLED | &H2& | Rend le menu inaccessible, à utiliser conjointement avec MF_GRAYED.
MF_GRAYED | &H1& | Donne un aspect grisé au menu.

Pas d'exemple disponible...


EnableWindow

 Fonction EnableWindow

Declare Function EnableWindow Lib "user32" ( _
ByVal hWnd As Long, _
 ByVal fEnable As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction sert à activer ou désactiver une fenêtre.
Donner en paramêtre le handle de la fenêtre. Puis 'Vrai' pour la rendre active ou 'Faux' pour qu'elle soit inactive. Renvoie 'Vrai' si elle était déjà active sinon 'Faux'.

Pas d'exemple disponible...


EnumChildWindows

 Fonction EnumChildWindows

Declare Function EnumChildWindows Lib "user32" ( _
ByVal hWndParent As Long, _
 ByVal lpEnumFunc As Long, _
 ByVal lParam As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction énumère toutes les fenêtres filles d'une fenêtre principale (MDI).
Il faut utiliser une fonction de rappel (callback) pour pouvoir récupérer les valeurs.
hWndParent est le handle de la fenêtre parent à examiner.
lpEnumFunc est un pointeur vers la fonction de rappel (utilisation de AddressOf sous VB)
lParam est un paramêtre qui sera passé à la fonction de rappel.

La fonction de rappel reçoit deux paramêtres :
hWndChild qui est le handle d'une fenêtre fille (on peut alors utiliser par exemple GetWindowText pour récupérer le titre de la fenêtre).
lParam est la variable qui vient de EnumChildWindow.

Si tout s'est déroulé correctement la fonction retourne Vrai, sinon False.

Pas d'exemple disponible...


EnumWindows

 Fonction EnumWindows

Declare Function EnumWindows Lib "user32" ( _
ByVal lpEnumFunc As Long, _
 ByVal lParam As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction énumère toutes les fenêtres principales de windows. Il faut utiliser une fonction de rappel (callback) pour pouvoir récupérer les valeurs.
lpEnumFunc est un pointeur vers la fonction de rappel (utilisation de AddressOf sous VB).
lParam est un paramêtre qui sera passé à la fonction de rappel.

La fonction de rappel reçoit deux paramêtres :
hWnd donne le handle d'une fenêtre (on peut alors utiliser par exemple GetWindowText pour récupérer le titre de la fenêtre).
lParam est la variable qui vient de EnumWindow.
Si tout s'est déroulé correctement la fonction retourne Vrai, sinon False.

Exemple d'utilisation :

' Déclaration des API utilisées
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

' Variable temporaire utilisée uniquement par la fonction GetWindowsList
' pour stocker les fenêtres.
Public stGetWindowsList As String

' Exemple d'utilisation :
' Dim tabFenetre
' tabFenetre = GetWindowsList
Public Function GetWindowsList()
' Cette fonction retourne sous forme de tableau l'ensemble
' des titres des fenêtres de premier niveau ouvertes sous windows.
Dim lgRep As Long
stGetWindowsList = vbNullString
' Appel de l'API et envoi du pointeur vers notre fonction de rappel
lgRep = EnumWindows(AddressOf EnumWindowsProc, 0)
' Découpage de la chaîne pour retourner un tableau
GetWindowsList = Split(stGetWindowsList, vbCrLf)
End Function

' Déclaration de la fonction de rappel
Public Function EnumWindowsProc(ByVal lgHwnd As Long, ByVal lgParam As Long) As Long
Dim stTmp As String, lgTmp As Long, lgRet As Long
stTmp = Space$(120)
lgTmp = 119
' On récupère le titre de la fenêtre à partir du handle
lgRet = GetWindowText(lgHwnd, stTmp, lgTmp)
stTmp = Replace(stTmp, Chr$(0), vbNullString)
' Stockage du résultat dans la chaine temporaire (ajout au texte existant).
' On pourrait imaginer construire une chaîne plus complexe en ajoutant également le handle
' de la fenêtre, ce qui permettrait des manipulations externes (comme une fermeture par exemple).
If (Trim$(stTmp) <> vbNullString) Then stGetWindowsList = stGetWindowsList & stTmp & vbCrLf
' Retourne 1 systématiquement
EnumWindowsProc = 1
End Function


EqualRect

 Fonction EqualRect

Declare Function EqualRect Lib "user32" ( _
lpRect1 As RECT, _
 lpRect2 As RECT) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
La fonction compare deux structures RECT et indique si elles sont identiques.
lpRect1 et lpRect2 sont les deux éléments qui seront comparés.
La fonction retourne Vrai si c'est égal, sinon, False.

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Pas d'exemple disponible...


ExitWindows

 Fonction ExitWindows

Declare Function ExitWindows Lib "user32" Alias "ExitWindowsEx" ( _
ByVal dwReserved As Long, _
 ByVal uReturnCode As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Plusieurs actions peuvent être effectuées avec cette fonction. De la simple fermeture de session Windows, jusqu'au redémarrage de l'ordinateur. Tout cela en fonction des constantes ci-dessous. uReturnCode reçoit la constante, dwReserved est un paramêtre réservé (peu importe la valeur).
Si tout se passe bien la fonction retourne 'Vrai' sinon 'Faux'.

Constante | Valeur | Définition
EWX_LOGOFF | 0 | Arrête les programmes en cours et ferme la session courante.
EWX_SHUTDOWN | 1 | Arrête les programmes et arrête l'ordinateur. On va jusqu'au message qui indique à l'utilisateur qu'il peut éteindre son ordinateur en toute sécurité.
EWX_REBOOT | 2 | Provoque un redémarrage de l'ordinateur.
EWX_FORCE | 4 | Force les applications qui ne répondent pas à se fermer.

Exemple d'utilisation :

' (Exemple de Alain Quinet - alain.quinet@free.fr)
' Une fois compilé et généré sous forme d'éxécutable,
' ce petit programme vous permettra d'arrêter votre
' machine sans passer par "Démarrer" - "Arrêter"...

' Dans un module, vous définissez les déclarations
' et vous tapez la fonction qui suit :
Public uReturnCode As Long
Public dwReserved As Long

Declare Function ExitWindows Lib "user32" Alias "ExitWindowsEx" ( _
ByVal dwReserved As Long, _
ByVal uReturnCode As Long) As Long

' Dans l'évènement Form_Activate (ou Form_Load) d'une feuille,
' vous tapez le code suivant :
Private Sub Form_Activate()

uReturnCode = 1 ' Vous permettra d'arrêter votre machine

Call ExitWindows(uReturnCode, dwReserved)
End Sub


ExtFloodFill

 Fonction ExtFloodFill

Declare Function ExtFloodFill Lib "gdi32" ( _
ByVal hDC As Long, _
 ByVal XStart As Long, _
 ByVal YStart As Long, _
 ByVal ClrRef As Long, _
 ByVal FillType As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(Origine : Cath - h.cathelineau@infonie.fr)

La fonction ExtFloodFill remplit une surface avec la couleur contenue dans la propriété FillColor de l'objet.
Le coloriage commence au point défini par les coordonnées XStart, YStart et cesse :
- si FillType = 0, lorsqu'une couleur égale à ClrRef est atteinte.
- si FillType = 1, lorsqu'une couleur différente de ClrRef est rencontrée.

Si la fonction réussie, elle retourne une valeur différente de 0.

(ci-desous un exemple d'application basé sur FillType = 0)

Exemple d'utilisation :

' Origine : Cath (h.cathelineau@infonie.fr)

Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hDC As Long, _
ByVal XStart As Long, ByVal YStart As Long, _
ByVal ClrRef As Long, ByVal FillType As Long) As Long

Private Sub Form_Activate()
Dim I As Integer
' Préparation de la feuille
Me.ScaleMode = 3
Me.Move (Screen.Width - 4410) / 2, _
(Screen.Height - 6450) / 2, _
6450, 4410
' Préparation du contrôle PictureBox (Picture1)
With Picture1
.AutoRedraw = True
.ScaleMode = vbPixels
.ForeColor = vbBlack
.FillColor = vbRed
.Top = 7
.Left = 7
.Height = 250
.Width = 250
End With
' Préparation du dessin exemple
Picture1.FillStyle = 1
Picture1.Line (10, 10)-(190, 170), 0&, B
Picture1.Line (10, 10)-(190, 170), 0&
Picture1.Line (10, 170)-(190, 10), 0&
Picture1.Circle (100, 90), 80, 0&, , , 0.6
Picture1.Circle (100, 90), 70, 0&, , , 2
' Palette de couleurs
For I = 1 To 16
Me.Line (260, 11 * I)-(300, (11 * I) + 11), QBColor(0), B
Me.Line (261, (11 * I) + 1)-(299, (11 * I) + 10), QBColor(I - 1), BF
Next
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
' Enregistre la couleur du point courant sous la souris.
Picture1.FillColor = Point(X, Y)
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
' Remplit la zone correspondante du contrôle PictureBox
' avec la couleur courante de la palette.
Dim X1 As Long, Y1 As Long, lgRet As Long
X1 = CLng(X)
Y1 = CLng(Y)
Picture1.FillStyle = 0
lgRet = ExtFloodFill(Picture1.hDC, X1, Y1, 0&, 0&)
Picture1.Refresh
End Sub


ExtractIcon

 Fonction ExtractIcon

Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" ( _
ByVal hInst As Long, _
 ByVal lpszExeFileName As String, _
 ByVal nIconIndex As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet d'extraire un icône depuis un fichier (DLL, ICO, EXE).
hInst est le handle de l'application utilisant la fonction.
lpszExeFileName est le nom du fichier dont on va extraire les icônes.
nIconIndex est l'index de l'icône à extraire. Si la valeur vaut -1, la fonction retourne le nombre total d'icône pouvant être extraits.

Exemple d'utilisation :

' Exemple de Philippe Plançon

' Extraire les icônes d'un exécutable
Dim FichierExtraction As String
Dim NbIcon As Long
Dim Handle As Long ' Adresse pointée par ExtractIcon
Dim X As Long ' Retour

' Les API
Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, _
ByVal X As Long, ByVal Y As Long, ByVal hIcon As Long) As Long
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" _
(ByVal hInst As Long, ByVal lpszExeFileName As String, _
ByVal nIconIndex As Long) As Long

Private Sub Extraction()
' ---Demande du fichier---
FichierExtraction = InputBox$("Fichier contenant l'icône à extraire (.ICO,.EXE,.DLL):", _
"Extraction d'icône", App.Path & "\" & App.EXEName & ".exe")
If FichierExtraction = vbNullString Then Exit Sub
' ---Initialise---
Picture1.Cls
' ---Retourne le nombre d'icône contenu par le fichier---
' Le -1 est important : il déclenche l'option de "comptage" des icônes
NbIcon = ExtractIcon(Handle, FichierExtraction, -1)
Label1.Caption = "Nombre d'icône = " & Str$(NbIcon)
' ---Extraction et dessine l'icône---
' Le premier icône est indexé en 0
NbIcon = ExtractIcon(Handle, FichierExtraction, NbIcon - 1)
X = DrawIcon(Picture1.hdc, 0, 0, NbIcon)
End Sub


FindClose

 Fonction FindClose

Declare Function FindClose Lib "kernel32" ( _
ByVal hFindFile As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction vous fermez une procédure de recherche en indiquant son handle en paramêtre. Il est important de respecter la fermeture des handles qui ne sont plus utilisés pour libérer de la ressource mémoire.

Exemple d'utilisation :

Option Explicit
'----------------------------------------
'------Déclarations propres aux API------
'----------------------------------------
'---Les constantes---
Private Const MAX_PATH = 260
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_READONLY = &H1
Private Const FILE_ATTRIBUTE_HIDDEN = &H2
Private Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_ATTRIBUTE_TEMPORARY = &H100
Private Const FILE_ATTRIBUTE_COMPRESSED = &H800

'---Les API---
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

'---Les types---
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

'----------------------------------------------
'------Déclarations propres à la fonction------
'----------------------------------------------
Private Type ListeFichier
Fichiers() As WIN32_FIND_DATA
Chemin() As String * MAX_PATH
Nombre As Long
End Type
Private Sub Form_click()
' Alogtihme récursif
'---Déclaration des variables---
Dim ResultatRecherche As ListeFichier
Dim NombreOccurence As Long
Dim i
'---Recherche de tous les fichiers *.frm sur le lecteur D:\---
NombreOccurence = Rechercher("D:\", "*.frm", ResultatRecherche)
' Toutes les informations de la recherche sont dans la variables ResultatRecherche
MsgBox NombreOccurence & " ont été trouvées (ou a été trouvé)" & Chr(13) & _
"Le premier fichier trouvé est : " & Trim$(ResultatRecherche.Chemin(1)) & _
Trim$(ResultatRecherche.Fichiers(1).cFileName)
End Sub

'--------------------------------------------------------
'---La fonction Rechercher : ---
'--- Cette fonction recherche tous les fichiers dans ---
'--- le répertoire spécifié et ses sous-repertoires ---
'--- Elle retourne le nombre d'occurences trouvées ---
'--------------------------------------------------------
Private Function Rechercher(Chemin As String, FichierR As String, _
ResultatRecherche As ListeFichier) As Long
'---Déclaration des variables---
Dim lpFindFileData As WIN32_FIND_DATA
Dim hFindFile As Long
Dim lgRep As Long
Dim CheminRep As String
'---Recherche tous les fichiers demandés dans le répertoire Chemin---
hFindFile = FindFirstFile(Chemin & FichierR, lpFindFileData)
If hFindFile <> INVALID_HANDLE_VALUE Then
Do
' Mémorise
ResultatRecherche.Nombre = ResultatRecherche.Nombre + 1
ReDim Preserve ResultatRecherche.Chemin(1 To ResultatRecherche.Nombre)
ReDim Preserve ResultatRecherche.Fichiers(1 To ResultatRecherche.Nombre)
ResultatRecherche.Chemin(ResultatRecherche.Nombre) = Chemin
ResultatRecherche.Fichiers(ResultatRecherche.Nombre) = lpFindFileData
' Initialise lpFindFileData (Variable texte uniquement)
lpFindFileData.cAlternate = String$(14, 0)
lpFindFileData.cFileName = String$(MAX_PATH, 0)
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
FindClose hFindFile
'---Recherche dans les sous-répertoires---
hFindFile = FindFirstFile(Chemin & "*.*", lpFindFileData)
If (hFindFile <> INVALID_HANDLE_VALUE) Then
Do
' Si c'est un répertoire on continu le recherche
If (lpFindFileData.dwFileAttributes And _
FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
' Extraction du nom du répertoire
CheminRep = Mid$(lpFindFileData.cFileName, 1, _
InStr(1, lpFindFileData.cFileName, Chr$(0)) - 1)
' Attention dans les sous-répertoire aux
' répertoires . et .. (Retour répertoire parent)
If (CheminRep <> ".") And (CheminRep <> "..") Then
CheminRep = Chemin & CheminRep & "\"
Rechercher = Rechercher(CheminRep, FichierR, ResultatRecherche)
End If
End If
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
FindClose hFindFile
'---Retourne le nombre d'occurrences trouvées---
Rechercher = ResultatRecherche.Nombre
End Function


FindExecutable

 Fonction FindExecutable

Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" ( _
ByVal lpFile As String, _
 ByVal lpDirectory As String, _
 ByVal lpResult As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette Fonction permet de connaître l'application associé à un fichier donné, c'est-à-dire celle qui se lance lorsqu'on double clique sur le fichier depuis l'explorateur.
lpFile est le nom du fichier dont on cherche l'application associée.
lpDirectory est le répertoire ou se trouve le fichier précédent.
lpResult est un buffer dans lequel sera placé le résultat de la fonction.
Si la fonction échoue la chaîne lpResult est vide et le chiffre correspond à l'erreur.

Exemple d'utilisation :

Private Declare Function FindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" (ByVal lpFile As String, _
ByVal lpDirectory As String, ByVal lpResult As String) As Long

Private Function FichierAssocie(stFichier As String, stChemin As String) As String
' Retour l'application associé au fichier passé en argument.
Dim stRep As String
Dim lgRep As Long
' Initialisation du buffer de retour
stRep = Space$(250)
' Appel à la fonction
lgRep = FindExecutable(stFichier, stChemin, stRep)
' Traitement de la valeur de retour
stRep = Left$(stRep, InStr(1, stRep, vbNullChar) - 1)
' Retourne le résultat
FichierAssocie = stRep
End Function


FindFirstFile

 Fonction FindFirstFile

Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" ( _
ByVal lpFileName As String, _
 lpFindFileData As WIN32_FIND_DATA) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de parcourir un répertoire pour retrouver un ou plusieurs fichiers. lpFileName doit contenir le chemin du répertoire ainsi que le filtre de fichier à appliquer (*.txt pour des fichiers texte ou *.* pour récupérer tous les fichiers). La valeur retournée par la fonction est un handle de recherche qui vous permet de parcourir les fichiers suivants faisant partie du filtre. Il sera utilisé en paramêtre de la fonction FindNextFile (pour avancer de fichier en fichier) et FindClose (pour arrêter la recherche). Si le résultat est zéro, la fonction a échoué.
Le résultat de la recherche de FindFirstFile est renvoyé dans une structure WIN32_FIND_DATA pour le premier fichier trouvé.

Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Constante | Valeur | Définition
MAX_PATH | 260 | Longueur maximale d'un nom de fichier

Exemple d'utilisation :

Option Explicit
'----------------------------------------
'------Déclarations propres aux API------
'----------------------------------------
'---Les constantes---
Private Const MAX_PATH = 260
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_READONLY = &H1
Private Const FILE_ATTRIBUTE_HIDDEN = &H2
Private Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_ATTRIBUTE_TEMPORARY = &H100
Private Const FILE_ATTRIBUTE_COMPRESSED = &H800

'---Les API---
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

'---Les types---
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

'----------------------------------------------
'------Déclarations propres à la fonction------
'----------------------------------------------
Private Type ListeFichier
Fichiers() As WIN32_FIND_DATA
Chemin() As String * MAX_PATH
Nombre As Long
End Type
Private Sub Form_click()
' Alogtihme récursif
'---Déclaration des variables---
Dim ResultatRecherche As ListeFichier
Dim NombreOccurence As Long
Dim i
'---Recherche de tous les fichiers *.frm sur le lecteur D:\---
NombreOccurence = Rechercher("D:\", "*.frm", ResultatRecherche)
' Toutes les informations de la recherche sont dans la variables ResultatRecherche
MsgBox NombreOccurence & " ont été trouvées (ou a été trouvé)" & Chr(13) & _
"Le premier fichier trouvé est : " & Trim$(ResultatRecherche.Chemin(1)) & _
Trim$(ResultatRecherche.Fichiers(1).cFileName)
End Sub

'--------------------------------------------------------
'---La fonction Rechercher : ---
'--- Cette fonction recherche tous les fichiers dans ---
'--- le répertoire spécifié et ses sous-repertoires ---
'--- Elle retourne le nombre d'occurences trouvées ---
'--------------------------------------------------------
Private Function Rechercher(Chemin As String, FichierR As String, _
ResultatRecherche As ListeFichier) As Long
'---Déclaration des variables---
Dim lpFindFileData As WIN32_FIND_DATA
Dim hFindFile As Long
Dim lgRep As Long
Dim CheminRep As String
'---Recherche tous les fichiers demandés dans le répertoire Chemin---
hFindFile = FindFirstFile(Chemin & FichierR, lpFindFileData)
If hFindFile <> INVALID_HANDLE_VALUE Then
Do
' Mémorise
ResultatRecherche.Nombre = ResultatRecherche.Nombre + 1
ReDim Preserve ResultatRecherche.Chemin(1 To ResultatRecherche.Nombre)
ReDim Preserve ResultatRecherche.Fichiers(1 To ResultatRecherche.Nombre)
ResultatRecherche.Chemin(ResultatRecherche.Nombre) = Chemin
ResultatRecherche.Fichiers(ResultatRecherche.Nombre) = lpFindFileData
' Initialise lpFindFileData (Variable texte uniquement)
lpFindFileData.cAlternate = String$(14, 0)
lpFindFileData.cFileName = String$(MAX_PATH, 0)
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
FindClose hFindFile
'---Recherche dans les sous-répertoires---
hFindFile = FindFirstFile(Chemin & "*.*", lpFindFileData)
If (hFindFile <> INVALID_HANDLE_VALUE) Then
Do
' Si c'est un répertoire on continu le recherche
If (lpFindFileData.dwFileAttributes And _
FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
' Extraction du nom du répertoire
CheminRep = Mid$(lpFindFileData.cFileName, 1, _
InStr(1, lpFindFileData.cFileName, Chr$(0)) - 1)
' Attention dans les sous-répertoire aux
' répertoires . et .. (Retour répertoire parent)
If (CheminRep <> ".") And (CheminRep <> "..") Then
CheminRep = Chemin & CheminRep & "\"
Rechercher = Rechercher(CheminRep, FichierR, ResultatRecherche)
End If
End If
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
FindClose hFindFile
'---Retourne le nombre d'occurrences trouvées---
Rechercher = ResultatRecherche.Nombre
End Function


FindNextFile

 Fonction FindNextFile

Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" ( _
ByVal hFindFile As Long, _
 lpFindFileData As WIN32_FIND_DATA) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction ne peut pas être utilisée sans avoir au préalable lancé la fonction FindFirstFile. Elle est mise en générale dans une boucle qui permet ainsi de parcourir tous les fichiers associés au filtre défini dans la fonction FindFirstFile. La valeur du paramêtre hFindFile est le handle de recherche qui aura été fourni par la fonction ayant initialisé la recherche. De la même manière que la précédente, celle-ci récupère les informations concernant le fichier dans une structure WIN32_FIND_DATA.

Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Constante | Valeur | Définition
MAX_PATH | 260 | Longueur maximale d'un nom de fichier

Exemple d'utilisation :

Option Explicit
'----------------------------------------
'------Déclarations propres aux API------
'----------------------------------------
'---Les constantes---
Private Const MAX_PATH = 260
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_READONLY = &H1
Private Const FILE_ATTRIBUTE_HIDDEN = &H2
Private Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_ATTRIBUTE_TEMPORARY = &H100
Private Const FILE_ATTRIBUTE_COMPRESSED = &H800

'---Les API---
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

'---Les types---
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

'----------------------------------------------
'------Déclarations propres à la fonction------
'----------------------------------------------
Private Type ListeFichier
Fichiers() As WIN32_FIND_DATA
Chemin() As String * MAX_PATH
Nombre As Long
End Type
Private Sub Form_click()
' Alogtihme récursif
'---Déclaration des variables---
Dim ResultatRecherche As ListeFichier
Dim NombreOccurence As Long
Dim i
'---Recherche de tous les fichiers *.frm sur le lecteur D:\---
NombreOccurence = Rechercher("D:\", "*.frm", ResultatRecherche)
' Toutes les informations de la recherche sont dans la variables ResultatRecherche
MsgBox NombreOccurence & " ont été trouvées (ou a été trouvé)" & Chr(13) & _
"Le premier fichier trouvé est : " & Trim$(ResultatRecherche.Chemin(1)) & _
Trim$(ResultatRecherche.Fichiers(1).cFileName)
End Sub

'--------------------------------------------------------
'---La fonction Rechercher : ---
'--- Cette fonction recherche tous les fichiers dans ---
'--- le répertoire spécifié et ses sous-repertoires ---
'--- Elle retourne le nombre d'occurences trouvées ---
'--------------------------------------------------------
Private Function Rechercher(Chemin As String, FichierR As String, _
ResultatRecherche As ListeFichier) As Long
'---Déclaration des variables---
Dim lpFindFileData As WIN32_FIND_DATA
Dim hFindFile As Long
Dim lgRep As Long
Dim CheminRep As String
'---Recherche tous les fichiers demandés dans le répertoire Chemin---
hFindFile = FindFirstFile(Chemin & FichierR, lpFindFileData)
If hFindFile <> INVALID_HANDLE_VALUE Then
Do
' Mémorise
ResultatRecherche.Nombre = ResultatRecherche.Nombre + 1
ReDim Preserve ResultatRecherche.Chemin(1 To ResultatRecherche.Nombre)
ReDim Preserve ResultatRecherche.Fichiers(1 To ResultatRecherche.Nombre)
ResultatRecherche.Chemin(ResultatRecherche.Nombre) = Chemin
ResultatRecherche.Fichiers(ResultatRecherche.Nombre) = lpFindFileData
' Initialise lpFindFileData (Variable texte uniquement)
lpFindFileData.cAlternate = String$(14, 0)
lpFindFileData.cFileName = String$(MAX_PATH, 0)
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
FindClose hFindFile
'---Recherche dans les sous-répertoires---
hFindFile = FindFirstFile(Chemin & "*.*", lpFindFileData)
If (hFindFile <> INVALID_HANDLE_VALUE) Then
Do
' Si c'est un répertoire on continu le recherche
If (lpFindFileData.dwFileAttributes And _
FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
' Extraction du nom du répertoire
CheminRep = Mid$(lpFindFileData.cFileName, 1, _
InStr(1, lpFindFileData.cFileName, Chr$(0)) - 1)
' Attention dans les sous-répertoire aux
' répertoires . et .. (Retour répertoire parent)
If (CheminRep <> ".") And (CheminRep <> "..") Then
CheminRep = Chemin & CheminRep & "\"
Rechercher = Rechercher(CheminRep, FichierR, ResultatRecherche)
End If
End If
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
FindClose hFindFile
'---Retourne le nombre d'occurrences trouvées---
Rechercher = ResultatRecherche.Nombre
End Function


FindWindow

 Fonction FindWindow

Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
 ByVal lpWindowName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de rechercher une fenêtre. Elle ne fonctionne que sur les fenêtres principales (pas les filles des MDI).
lpClassName est le nom de la classe qui identifie la fenêtre (rarement connu et donc souvent égal à une chaîne vide).
lpWindowName est le titre (complet) de la fenêtre.
La fonctionne retourne alors le handle de la fenêtre, en cas d'échec, elle renvoie 0.

Exemple d'utilisation :

' Exemple proposé par Ket Ans (ket_ans@hotmail.com)

Public Function GetTaskbarHWND() As Long
GetTaskbarHWND = FindWindow("shell_traywnd", "")
End Function

' On peut ensuite utiliser ce handle pour cacher ou
' afficher la barre des tâches

Public Sub HideTaskbar()
' Cacher la barre des tâches
Dim hWin As Long
hWin = GetTaskbarHWND()
SetWindowPos hWin, 0, 0, 0, 0, 0, &H80
End Sub

Public Sub ShowTaskbar()
' Afficher la barre des tâches
Dim hWin As Long
hWin = GetTaskbarHWND()
SetWindowPos hWin, 0, 0, 0, 0, 0, &H40
End Sub


FlashWindow

 Fonction FlashWindow

Declare Function FlashWindow Lib "user32" ( _
ByVal hWnd As Long, _
 ByVal bInvert As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
En mettant cette fonction à l'intérieur d'une boucle vous pourrez produire un effet de clignotement sur la barre de titre d'une fenêtre, ou à défaut sur son icône si celle-ci est réduite.
bInvert doit être mis à 'Vrai' pour que le clignotement fonctionne, à 'Faux' pour redonner à la fenêtre son apparence initiale.
La valeur renvoyée correspond à l'état de la fenêtre avant l'appel à la fonction.

Exemple d'utilisation :

'(Exemple de Alain Quinet - alain.quinet@free.fr)

' Dans un module, vous définissez les déclarations
' et vous tapez la fonction qui suit :
Private Declare Function FlashWindow Lib "user32" ( _
ByVal hWnd As Long, _
ByVal bInvert As Long) As Long

Private Compteur As Byte

' Sur une feuille, vous placez un controle timer (Timer1)
' et vous déclarez une variable Compteur (type Byte)

' Dans l'évènement Timer du contrôle timer,
' vous tapez le code suivant :
Private Sub Timer1_Timer()
' Ce code fait clignoter la barre de titre 10 fois
If (Compteur < 10) Then
Compteur = Compteur + 1
Call FlashWindow(Me.hWnd, 1)
Else
Call FlashWindow(Me.hWnd, 0)
End If
End Sub

' (Autre exemple de Raphaël Aubin - b_blinck@hotmail.com)

' ...
' Mise en place du clignotement de la fenêtre courante
FlashWindow Me.hwnd, 1
' ...


FtpCreateDirectory

 Fonction FtpCreateDirectory

Declare Function FtpCreateDirectory Lib "wininet.dll" Alias "FtpCreateDirectoryA" ( _
ByVal hFtpSession As Long, _
 ByVal lpszDirectory As String) As Boolean
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction permet de créer un nouveau répertoire sur un serveur FTP.
hFtpSession est un pointeur vers une session FTP.
lpszDirectory est le nom du répertoire à créer, il peut être relatif au répertoire courant ou bien absolu (complet).

En cas de succès, la fonction retourne Vrai, sinon elle retourne Faux.

Pas d'exemple disponible...


FtpDeleteFile

 Fonction FtpDeleteFile

Declare Function FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" ( _
ByVal hFtpSession As Long, _
 ByVal lpszFileName As String) As Boolean
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Efface un fichier d'un serveur FTP.
hFtpSession est un pointeur vers une session FTP.
lpszFileName est le nom du fichier que l'on cherche à effacer, le nom peut contenir un chemin complet jusqu'au fichier.

La fonction retourne Vrai en cas de succès, sinon Faux.

Ci-dessous, exemple de "Mariani" (jeanmarc-mariani@africultures.com)

Exemple d'utilisation :

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long

Public Declare Function InternetConnect Lib "wininet.dll" _
Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long

Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean

Public Declare Function FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" ( _
ByVal hFtpSession As Long, _
ByVal lpszFileName As String) As Boolean

Public Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Public Const INTERNET_DEFAULT_FTP_PORT = 21
Public Const INTERNET_SERVICE_FTP = 1

Public Enum eTRANSFERT_TYPE
FTP_TRANSFER_TYPE_ASCII = &H1
FTP_TRANSFER_TYPE_BINARY = &H2
End Enum

Function DelFtpFile(stServ As String, stLogin As String, stPass As String, _
stRepFtp As String, stFicFtp As String) As Boolean
' Cette fonction efface un fichier sur un serveur FTP.
' stServ contient le nom ou l'adresse IP du serveur FTP
' stLogin est le login à utiliser
' stPass est le mot de passe associé au login
' stRepFtp est le répertoire FTP ou sera placé le fichier ("/" pour la racine)
' stFicFtp est le nom du fichier qui sera effacé du serveur
' La fonction retourne Vrai si le transfert à réussi, sinon Faux.
Dim lgFtp As Long, lgSession As Long, lgDir As Long
Dim inRes As Integer
Dim blOk As Boolean
blOk = False
' Récupère un pointeur vers la connexion internet courante
lgSession = InternetOpen("DelFtpFile", 1, vbNullString, vbNullString, 0)
If lgSession Then
' Récupère un pointeur vers pour session FTP
lgFtp = InternetConnect(lgSession, stServ, INTERNET_DEFAULT_FTP_PORT, _
stLogin, stPass, INTERNET_SERVICE_FTP, 0, 0)
If lgFtp Then
' Positionne le répertoire distant
If FtpSetCurrentDirectory(lgFtp, stRepFtp) Then
' Efface le fichier
blOk = FtpDeleteFile(lgFtp, stFicFtp)
Else
MsgBox "Erreur de positionnement dans le répertoire distant!"
End If
Else
MsgBox "Erreur ouverture session FTP, vérifiez l'adresse, le login/pwd."
End If
' Libération du pointeur
inRes = InternetCloseHandle(lgFtp)
Else
MsgBox "Pas de connexion!"
End If
' Retourne le résultat
DelFtpFile = blOk
End Function


FtpGetCurrentDirectory

 Fonction FtpGetCurrentDirectory

Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" ( _
ByVal hFtpSession As Long, _
 ByVal lpszDirectory As String, _
 ByRef lpdwCurrentDirectory As Long) As Boolean
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Retourne le répertoire courant d'un session FTP.
hFtpSession est un pointeur vers une session FTP.
lpszDirectory est une chaîne qui recevra le nom du répertoire courant (à initialiser avec suffisament d'espace).
lpdwCurrentDirectory contiendra la longueur du nom du répertoire si la fonction réussie.

La fonction retourne Vrai en cas de réussite, sinon Faux.

Pas d'exemple disponible...


FtpPutFile

 Fonction FtpPutFile

Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" ( _
ByVal hFtpSession As Long, _
 ByVal lpszLocalFile As String, _
 ByVal lpszRemoteFile As String, _
 ByVal dwFlags As Long, _
 ByVal dwContext As Long) As Boolean
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Envoie un fichier sur un serveur FTP.
hFtpSession est un pointeur vers une session FTP.
lpszLocalFile est le nom du fichier local. Il est peut être complet, sinon, le fichier sera pris dans le répertoire courant local.
lpszRemoteFile est le nom que prendra le fichier sur le serveur FTP (peut contenir le chemin complet).
dwFlags contient le type de transfert à effectuer :
FTP_TRANSFERT_TYPE_ASCII = &H1
FTP_TRANSFERT_TYPE_BINARY = &H2
dwContext est un pointeur vers une fonction de rappel (callback).

La fonction API retourne Faux si elle échoue, sinon Vrai.

Exemple d'utilisation :

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long

Public Declare Function InternetConnect Lib "wininet.dll" _
Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long

Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean

Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" ( _
ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, _
ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean

Public Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Public Const INTERNET_DEFAULT_FTP_PORT = 21
Public Const INTERNET_SERVICE_FTP = 1

Public Enum eTRANSFERT_TYPE
FTP_TRANSFER_TYPE_ASCII = &H1
FTP_TRANSFER_TYPE_BINARY = &H2
End Enum

Private Function PutFtpFile(stServ As String, stLogin As String, stPass As String, _
stRepFtp As String, stFicFtp As String, _
stFicLocal As String, lgType As eTRANSFERT_TYPE) As Boolean
' Cette fonction charge un fichier local sur un serveur FTP.
' stServ contient le nom ou l'adresse IP du serveur FTP
' stLogin est le login à utiliser
' stPass est le mot de passe associé au login
' stRepFtp est le répertoire FTP ou sera placé le fichier ("/" pour la racine)
' stFicFtp est le nom qui sera donné au fichier sur le serveur
' stFicLocal est le chemin complet (+nom) du fichier local
' lgType est le type de transfert à utiliser (texte ou binaire)
' La fonction retourne Vrai si le transfert à réussi, sinon Faux.
Dim lgFtp As Long, lgSession As Long, lgDir As Long
Dim inRes As Integer
Dim blOk As Boolean
blOk = False
' Récupère un pointeur vers la connexion internet courante
lgSession = InternetOpen("PutFtpFile", 1, vbNullString, vbNullString, 0)
If lgSession Then
' Récupère un pointeur vers pour session FTP
lgFtp = InternetConnect(lgSession, stServ, INTERNET_DEFAULT_FTP_PORT, _
stLogin, stPass, INTERNET_SERVICE_FTP, 0, 0)
If lgFtp Then
' Positionne le répertoire distant
If FtpSetCurrentDirectory(lgFtp, stRepFtp) Then
' Envoie le fichier
blOk = FtpPutFile(lgFtp, stFicLocal, stFicFtp, _
FTP_TRANSFER_TYPE_ASCII, 0)
End If
End If
' Libération du pointeur
inRes = InternetCloseHandle(lgFtp)
End If
' Retourne le résultat
PutFtpFile = blOk
End Function


FtpRemoveDirectory

 Fonction FtpRemoveDirectory

Declare Function FtpRemoveDirectory Lib "wininet.dll" Alias "FtpRemoveDirectoryA" ( _
ByVal hFtpSession As Long, _
 ByVal lpszDirectory As String) As Boolean
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction supprime un répertoire sur un serveur FTP.
hFtpSession est un pointeur vers une session FTP.
lpszDirectory est le nom du répertoire à effacer, il peut être relatif au répertoire courant ou bien absolu (complet).

Le contenu du répertoire doit être vidé avant, cette fonction ne travaille pas de manière récursive!

En cas de succès, la fonction retourne Vrai, sinon elle retourne Faux.

Pas d'exemple disponible...


FtpRenameFile

 Fonction FtpRenameFile

Declare Function FtpRenameFile Lib "wininet.dll" Alias "FtpRenameFileA" ( _
ByVal hFtpSession As Long, _
 ByVal lpszExisting As String, _
 ByVal lpszNew As String) As Boolean
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction permet de renommer un fichier sur un serveur FTP.
hFtpSession, pointeur vers une session FTP.
lpszExisting contient le nom du fichier à renommer.
lpszNew As String est le nouveau nom que prendra le fichier.

La fonction renvoie Vrai si elle réussie, sinon elle retourne Faux.

Pas d'exemple disponible...


FtpSetCurrentDirectory

 Fonction FtpSetCurrentDirectory

Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" ( _
ByVal hFtpSession As Long, _
 ByVal lpszDirectory As String) As Boolean
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Change le répertoire courant d'une session FTP.
hFtpSession est un pointeur vers un session FTP (retourné par InternetConnect).
lpszDirectory est une chaîne contenant le nom du répertoire (le chemin peut être absolu ou relatif).

La fonction retourne Faux en cas d'échec, sinon Vrai.

Exemple d'utilisation :

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long

Public Declare Function InternetConnect Lib "wininet.dll" _
Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long

Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean

Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" ( _
ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, _
ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean

Public Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Public Const INTERNET_DEFAULT_FTP_PORT = 21
Public Const INTERNET_SERVICE_FTP = 1

Public Enum eTRANSFERT_TYPE
FTP_TRANSFER_TYPE_ASCII = &H1
FTP_TRANSFER_TYPE_BINARY = &H2
End Enum

Private Function PutFtpFile(stServ As String, stLogin As String, stPass As String, _
stRepFtp As String, stFicFtp As String, _
stFicLocal As String, lgType As eTRANSFERT_TYPE) As Boolean
' Cette fonction charge un fichier local sur un serveur FTP.
' stServ contient le nom ou l'adresse IP du serveur FTP
' stLogin est le login à utiliser
' stPass est le mot de passe associé au login
' stRepFtp est le répertoire FTP ou sera placé le fichier ("/" pour la racine)
' stFicFtp est le nom qui sera donné au fichier sur le serveur
' stFicLocal est le chemin complet (+nom) du fichier local
' lgType est le type de transfert à utiliser (texte ou binaire)
' La fonction retourne Vrai si le transfert à réussi, sinon Faux.
Dim lgFtp As Long, lgSession As Long, lgDir As Long
Dim inRes As Integer
Dim blOk As Boolean
blOk = False
' Récupère un pointeur vers la connexion internet courante
lgSession = InternetOpen("PutFtpFile", 1, vbNullString, vbNullString, 0)
If lgSession Then
' Récupère un pointeur vers pour session FTP
lgFtp = InternetConnect(lgSession, stServ, INTERNET_DEFAULT_FTP_PORT, _
stLogin, stPass, INTERNET_SERVICE_FTP, 0, 0)
If lgFtp Then
' Positionne le répertoire distant
If FtpSetCurrentDirectory(lgFtp, stRepFtp) Then
' Envoie le fichier
blOk = FtpPutFile(lgFtp, stFicLocal, stFicFtp, _
FTP_TRANSFER_TYPE_ASCII, 0)
End If
End If
' Libération du pointeur
inRes = InternetCloseHandle(lgFtp)
End If
' Retourne le résultat
PutFtpFile = blOk
End Function


GetActiveWindow

 Fonction GetActiveWindow

Declare Function GetActiveWindow Lib "user32" () As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne un pointeur vers la fenêtre active.
Si la fenêtre n'est pas attachée au processus cournat, la fonction retourne 0.

Pas d'exemple disponible...


GetBitmapDimensionEx

 Fonction GetBitmapDimensionEx

Declare Function GetBitmapDimensionEx Lib "gdi32" ( _
ByVal hBitmap As Long, _
 lpDimension As Size) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de retrouver les dimensions d'une image (si celles-ci ont été définies avec SetBitmapDimensionEx).
hBitmap est un handle sur le bitmap à manipuler,
lpDimension est une variable de type size (définie plus bas).
Renvoie "Vrai" si cela a réussi, sinon, "Faux".

Pas d'exemple disponible...


GetBkColor

 Fonction GetBkColor

Declare Function GetBkColor Lib "gdi32" ( _
ByVal hdc As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne la couleur de fond courante pour le contexte sélectionné.
hdc est un pointeur vers le périphérique (ou contrôle).
La fonction retourne la couleur
de fond courante ou CLR_INVALID (&HFFFF) en cas d'échec.

Pas d'exemple disponible...


GetBkMode

 Fonction GetBkMode

Declare Function GetBkMode Lib "gdi32" ( _
ByVal hdc As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
La fonctionne retourne le mode courant d'affichage pour un contexte d'affichage.
hdc est un pointeur vers le contexte à contrôler.
Si la fonction retourne 0, c'est qu'elle a échoué, sinon elle retourne une des deux valeurs du tableau ci-dessous.

Constante | Valeur | Définition
OPAQUE | 2 | Définit un fond opaque.
TRANSPARENT | 1 | Définit un fond transparent.

Pas d'exemple disponible...


GetClassName

 Fonction GetClassName

Declare Function GetClassName Lib "user32" Alias "GetClassNameA" ( _
ByVal hwnd As Long, _
 ByVal lpClassName As String, _
 ByVal nMaxCount As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction donne la classe de la fenêtre.
hwnd est le handle de la fenêtre dont on veut récupérer la classe.
lpClassName est la chaîne qui contiendra le résultat.
nMaxCount est la taille du buffer ci-dessus.
Ne pas oublier d'initialiser le buffer avec des espaces (150 devraient convenir) et de bien renseigner la longueur de celui-ci.
La fonction renvoie Vrai ou Faux selon que le traitement s'est bien déroulé ou non.

Pas d'exemple disponible...


GetClipCursor

 Fonction GetClipCursor

Declare Function GetClipCursor Lib "user32" ( _
lprc As RECT) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction vous permet de récupérer la zone écran à l'intérieure de laquelle peut se déplacer la souris.
lprc est une structure RECT (définie ci dessous) qui vous retourne l'espace de déplacement autorisé. Les valeurs sont données en pixel.
Concrètement, si la fonction n'a pas été déjà utilisée, vous devez récupérer les dimensions de votre écran (640x480, 800x600, 1024x768, ...).
La fonction retourne Vrai s'il n'y a pas eu de problème, sinon, False.

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Pas d'exemple disponible...


GetComputerName

 Fonction GetComputerName

Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" ( _
ByVal lpBuffer As String, _
 nSize As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction, vous pouvez connaître le nom de l'ordinateur.
lpBuffer est la chaîne qui contiendra le résultat après appel de la fonction.
nSize est la taille du buffer ci-dessus.
Comme d'habitude sur les appels de ce genre, il est conseillé d'initialiser la chaîne avec suffisament d'espaces (ex 250), et d'indiquer une taille de chaîne +1 (c-a-d, nSize = Len(lpBuffer)+1).
Retourne "Faux" en cas d'échec, sinon "Vrai".

Exemple d'utilisation :

Public Function ComputerName() As String
' Retourne le nom de l'ordinateur
Dim stTmp As String, lgTmp As Long
stTmp = Space$(250)
lgTmp = 251
Call GetComputerName(stTmp, lgTmp)
ComputerName = Split(stTmp, Chr$(0))(0)
End Function


GetCurrentProcess

 Fonction GetCurrentProcess

Declare Function GetCurrentProcess Lib "kernel32" () As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(Origine : Phil - Mail : pplancon@chello.fr)

La fonction permet de récupèrer le handle du processus courant (enfin pas tout à fait on dit le pesudo-handle, mais il est interprété comme tel....).

Exemple d'utilisation :

'---------------------------------
'--- Origine : Phil ---
'--- Mail : pplancon@chello.fr ---
'---------------------------------
Option Explicit

' Le code ci-dessous montre comment changer la priorité du processus
' en cours (= au code qui suit). Les APIs utilisées permettent
' de classer par ordre prioritaire des processus, autrement dit
' le système réparti ou donne totalement les ressources systèmes
' (mémoire, CPU, ...) pour l'exécution de ou d'un processus.

'---Déclaration des constantes---
' Constantes des priorités (6 niveaux de priorités)
Const IDLE_PRIORITY_CLASS As Long = &H40 ' minimum
Const BELOW_NORMAL_PRIORITY_CLASS As Long = &H4000 ' normal -
Const NORMAL_PRIORITY_CLASS As Long = &H20 ' normal
Const ABOVE_NORMAL_PRIORITY_CLASS As Long = &H8000 ' normal +
Const HIGH_PRIORITY_CLASS As Long = &H80 ' haute
Const REALTIME_PRIORITY_CLASS As Long = &H100 ' maximum

' Constantes de gestion des process

'Accès au process en synchro uniquement.
Const SYNCHRONIZE As Long = &H100000
'Accès au process en "query_info".
Const PROCESS_QUERY_INFORMATION As Long = &H400

'Infinite timeout.
Const INFINITE As Long = &HFFFF

'---Déclarations des APIs---
' Gestion de la priorité du procces
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function SetPriorityClass Lib "kernel32" (ByVal hProcess As Long, _
ByVal dwPriorityClass As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long

' Pour le temps
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Private Sub Command1_Click()
'---Déclaration des variables---
Dim i As Long
Dim j As Long
Dim HeureDebut As Long
'---Exécute un calcul bidon---
HeureDebut = timeGetTime
For i = 0 To 50000000 ' <- modifier ce chiffre pour influer sur le temps de calcul
j = (i * 2) Mod 34541
Next i
MsgBox "Temps du calcul bidon : " & timeGetTime - HeureDebut & " ms"
End Sub

Private Sub Form_Load()
'---Déclaration des variables---
Dim LastError As Long
Dim Ret As Long
Dim hCurrentProcess As Long
'---Positionne la feuille---
Me.Move 0, 0
'---Modifie la priorité du process---
' Récupère le handle du process
hCurrentProcess = GetCurrentProcess()
' Affecte sa priorité
Ret = SetPriorityClass(hCurrentProcess, IDLE_PRIORITY_CLASS)
' Gestion des erreurs
If (Ret = 0) Then
LastError = GetLastError()
MsgBox "Impossible de modifier la priorité." & _
vbCrLf & vbCrLf & CStr(LastError)
End If
End Sub


GetCursorPos

 Fonction GetCursorPos

Declare Function GetCursorPos Lib "user32" ( _
lpPoint As POINTAPI) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction vous retourne la position du curseur de la souris, les coordonnées sont renvoyées sous forme d'une structure POINTAPI détaillée
ci-dessous.Retourne 'Vrai' si il n'y a pas eu d'erreur, sinon 'Faux'.

Type POINTAPI
x As Long
y As Long
End Type

Exemple d'utilisation :

' Exemple proposé par Michel Defert (micheldefert@free.fr)
' Placer un label sur la feuille, puis le code suivant :

' Position de X et Y par rapport a l'écran
Private Declare Function GetCursorPos Lib "user32" ( _
lpPoint As POINTAPI) As Long

' Position de X et Y par rapport a la fenètre et a GetCursorPos
Private Declare Function ScreenToClient Lib "user32" ( _
ByVal hwnd As Long, _
lpPoint As POINTAPI) As Long

Private Type POINTAPI
X As Long
Y As Long
End Type

' Affiche un point sous le curseur quand on clique sur la feuille
Private Sub Form_Click()
Dim pos As POINTAPI
GetCursorPos pos
ScreenToClient Me.hwnd, pos
Me.Label1 = "Position Horizontale X = : " & pos.X & vbCrLf & _
"Position Verticale Y = : " & pos.Y
Me.DrawWidth = 2 ' Pixel plus épais
Me.ScaleMode = vbPixels ' Feuille en mode Pixel
Me.PSet (pos.X, pos.Y), RGB(255, 0, 0) ' Affiche le pixel en rouge
Me.DrawWidth = 1 ' Pixel normal
Me.ScaleMode = vbTwips ' Feuille en mode Twip
End Sub

' Exemple proposé par int19h (Int19h@caramail.com)
' Placer un Timer sur la form, puis le code suivant :

Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As PointAPI) As Long

Private Type PointAPI
x As Long
y As Long
End Type

Private Sub Form_Load()
Timer1.Interval = 100
End Sub

Private Sub Timer1_Timer()
Dim Tampon As PointAPI
GetCursorPos Tampon
Form1.Caption = "Mouse Position : " & Tampon.x & "-" & Tampon.y
End Sub


GetDesktopWindow

 Fonction GetDesktopWindow

Declare Function GetDesktopWindow Lib "user32" () As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction vous retourne le Handle de la fenêtre correspondant au bureau (Celle sur laquelle est affiché le fond d'écran, et les icônes).

Pas d'exemple disponible...


GetDiskFreeSpace

 Fonction GetDiskFreeSpace

Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" ( _
ByVal lpRootPathName As String, _
 lpSectorsPerCluster As Long, _
 lpBytesPerSector As Long, _
 lpNumberOfFreeClusters As Long, _
 lpTotalNumberOfClusters As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de connaître l'espace total d'un lecteur ainsi que l'espace libre restant.
lpRootPathName est le lecteur à examiner (sous la forme X:\).
lpSectorsPerCluster (remplit par la fonction) indique le nombre de secteurs par cluster.
lpBytesPerSector (remplit par la fonction) indique le nombre d'octets par secteur.
lpNumberOfFreeClusters (remplit par la fonction) donne le nombre de clusters vides.
lpTotalNumberOfClusters (remplit par la fonction) correspond au nombre total de clusters.

Avec de simples calculs, il est alors possible de connaître l'espace libre et total du lecteur (conversion en type "Double" pour éviter les dépassements de capacité sur les grands lecteurs) :
EspaceTotal = CDbl(lpSectorsPerCluster) * CDbl(lpBytesPerSector) * CDbl(lpTotalNumberOfClusters)
EspaceLibre = CDbl(lpSectorsPerCluster) * CDbl(lpBytesPerSector) * CDbl(lpNumberOfFreeClusters)

La fonction retourne Vrai si elle a réussi, sinon Faux.

Exemple d'utilisation :

' LEMONTVERT (hulya.m@caramail.com)

Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" _
(ByVal lpRootPathName As String, lpSectorsPerCluster As Long, _
lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, _
lpTtoalNumberOfClusters As Long) As Long

'*********************************************************************
'** TestSpaceDisk
'** Permet de calculer l'espace les infos concernant l'espace libre,
'** occupé et total du disque
'** ENTREE : Disque --> Récupère le disque dont on cherche les infos
'** SORTIE : TailleLibre et TailleTotale
'** RENVOIE : un numéro d'erreur 0--> No error
'*********************************************************************

Public Function TestSpaceDisk(Disque As String, TailleLibre As Single, _
TailleTotale As Single) As Integer
Dim Secteurs As Long
Dim Bytes As Long
Dim ClustersLibres As Long
Dim NombreDeClusters As Long
Dim RetVal As Long
Dim Mem As Single

On Error GoTo ERR_TestSpaceDisk
'*** Récupère les infos concernant l'espace libre / occupe / total du Disque
' GetDiskFreeSpace renvoie plusieurs informations (dans l'ordre):
' nombre de groupes libres
' nombre de secteurs par groupe
' nombre d'octets par secteur
RetVal = GetDiskFreeSpace(Disque, Secteurs, Bytes, ClustersLibres, NombreDeClusters)

'Il suffit de multiplier les trois pour avoir le nombre d'octets libres sur le disque dur
Mem = ClustersLibres / 1024
TailleLibre = Bytes * Secteurs * Mem
Mem = NombreDeClusters / 1024
TailleTotale = Bytes * Secteurs * Mem
Exit Function

ERR_TestSpaceDisk:
Ecrire_Dans_Fichier_Log App.Path & "\SurvDisk.log", _
"Le calcul des infos disques a produit l'erreur suivante :" & _
vbCrLf & Err.Number & vbCrLf & Err.Description

TestSpaceDisk = Err.Number
End Function


GetDoubleClickTime

 Fonction GetDoubleClickTime

Declare Function GetDoubleClickTime Lib "user32" Alias "GetDoubleClickTime" () As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Permet de connaître l'intervalle de temps maximum qu'il faut entre deux clics pour que le système le prenne en double-clic.
Le résultat est donné en millisecondes.

Pas d'exemple disponible...


GetDriveType

 Fonction GetDriveType

Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" ( _
ByVal nDrive As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction donne le type du lecteur passé en paramètre.
nDrive est le lecteur à tester. Sous la forme X:\ (X étant le lecteur à tester)
La fonction retourne une constante du tableau ci-dessous.
Si le lecteur n'existe pas, elle retourne 1, et si elle échoue, elle retourne 0.

Constante | Valeur | Définition
DRIVE_REMOVABLE | 2 | Lecteur de disque amovible (zip,...).
DRIVE_FIXED | 3 | Lecteur de disque fixe.
DRIVE_REMOTE | 4 | Lecteur de disque distant (réseau,...).
DRIVE_CDROM | 5 | Lecteur de CD-ROM (DVD aussi surement).
DRIVE_RAMDISK | 6 | Lecteur de disque en RAM (mémoire).

Exemple d'utilisation :

' Exemple de François GARAULT (f.garault@nea-be.com)
' A placer sur une feuille.

Private Declare Function GetLogicalDriveStrings Lib "kernel32" _
Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias _
"GetDriveTypeA" (ByVal nDrive As String) As Long

Dim lgCptCD As Integer
Dim tabCD(20) As String

Private Sub Form_Load()
Dim strSave As String
Dim lgFor As Long, lgRet As Long
Me.AutoRedraw = True
lgCptCD = 0
strSave = String$(255, Chr$(0))
lgRet = GetLogicalDriveStrings(255, strSave)
Do Until Left$(strSave, 1) = Chr$(0)
If GetDriveType(Left$(strSave, InStr(1, strSave, Chr$(0)) - 1)) = 5 Then
lgCptCD = lgCptCD + 1
tabCD(lgCptCD) = Left$(strSave, 3)
End If
strSave = Right$(strSave, Len(strSave) - 4)
Loop
Me.Print "Bilan de lecteurs de Cd-Rom :"
For lgFor = 1 To lgCptCD
Me.Print "Lecteur : " & lgFor & " = " & tabCD(lgFor)
Next
End Sub


GetExitCodeProcess

 Fonction GetExitCodeProcess

Declare Function GetExitCodeProcess Lib "kernel32" Alias "GetExitCodeProcess" ( _
ByVal hProcess As Long, _
 lpExitCode As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne l'état de sortie d'un processus. Elle permet ainsi de savoir si un processus s'est terminé correctement ou non.
hProcess est le handle du processus à examiner.
lpExitCode est le code de sortie du processus qui sera renseigné par la fonction.

En cas d'échec la fonction retourne la valeur 0, sinon un valeur différente.

Si le processus n'est pas terminé, l'état retourné correspond à la
constante STILL_ACTIVE (&H103), sinon, la valeur de sortie peut être égale à :
- la valeur retournée par ExitProcess ou TerminateProcess,
- la valeur de retour de la fonction main ou winmain du processus,
- la valeur de l'erreur qui a causé la fermeture de l'application.

Exemple d'utilisation :

' Exemple de Phil (plancon@onetelnet.fr)

Option Explicit
' ---Les API concernant le contrôle des processus et des tâches sous Windows---
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, _
lpExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
' Ferme une application extérieure
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, _
ByVal uExitCode As Long) As Long
' Ferme notre application
Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)

' ---Autres API---
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetLastError Lib "kernel32" () As Long

' ---Ici les constantes---
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400

Sub Shell(ByVal Tache As String)
' ---Cette fonction crée une tache puis regarde si elle est active---
' Tache est un nom de fichier
' ---Déclaration des variables---
Dim hProcess As Long
Dim RetVal As Long
' ---Ouvre un programme et récupère son handle (hProcess)---
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(Tache, 6))
' ---Regarde si le processus est actif---
Do
' Retourne le status du processus en cours
GetExitCodeProcess hProcess, RetVal
' Les 2 lignes suivantes sont recommandées pour éviter de faire
' travailler le système avec GetExitCodeProcess
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
CloseHandle (hProcess)
End Sub

Private Sub Form_Load()
TesMort ("c:\winnt\notepad.exe")
End Sub

Sub TesMort(ByVal Tache As String)
' ---Tue une application en cours---
' Cette fonction force l'arrêt d'une tâche.
' ---Déclaration des variables---
Dim hProcess As Long
Dim RetVal As Long
' ---Ouvre un programme et récupère son handle (hProcess)---
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(Tache, 6))
' ---Regarde si le processus est actif---
If (hProcess <= 0) Then
MsgBox "OpenProcess() a échoué : " & GetLastError()
Else
' Sinon le tue
If TerminateProcess(hProcess, 1) Then
MsgBox "TerminateProcess() a échoué " & GetLastError()
Else
MsgBox "Tu es mort"
CloseHandle (hProcess)
End If
End If
End Sub


GetFileAttributes

 Fonction GetFileAttributes

Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" ( _
ByVal lpFileName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction vous permet de connaître les attributs d'un fichier ou d'un répertoire.
lpFileName est le nom du fichier (ou du répertoire).
La fonction retourne une valeur qu'il faut décomposer suivant les constantes du tableau ci-dessous pour connaître les attributs.
Par exemple avec :
lgRep = GetFileAttributes("c:\autoexec.bat")
((lgRep Or FILE_ATTRIBUTE_ARCHIVE) = FILE_ATTRIBUTE_ARCHIVE) sera égal a Vrai si le fichier a l'attribut archive.
La fonction retourne -1 en cas d'erreur (fichier inexistant ou autre...).

Constante | Valeur | Définition
FILE_ATTRIBUTE_READONLY | &H1 | Fichier en lecture seule.
FILE_ATTRIBUTE_HIDDEN | &H2 | Fichier caché.
FILE_ATTRIBUTE_SYSTEM | &H4 | Fichier système.
FILE_ATTRIBUTE_DIRECTORY | &H10 | L'élément est un répertoire.
FILE_ATTRIBUTE_ARCHIVE | &H20 | Le fichier a l'attribut archive.
FILE_ATTRIBUTE_NORMAL | &H80 | Le fichier n'a pas d'attribut.
FILE_ATTRIBUTE_TEMPORARY | &H100 | Fichier temporaire.
FILE_ATTRIBUTE_COMPRESSED | &H800 | Fichier (répertoire) compressé.

Pas d'exemple disponible...


GetForegroundWindow

 Fonction GetForegroundWindow

Declare Function GetForegroundWindow Lib "user32" () As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne un pointeur vers la fenêtre qui se trouve au premier plan.
Elle retourne 0 si aucune fenêtre n'est au premier plan (si un changement est en cours).

Pas d'exemple disponible...


GetKeyState

 Fonction GetKeyState

Declare Function GetKeyState Lib "user32" ( _
ByVal nVirtKey As Long) As Integer
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
La fonction GetKeyState retourne le status de la touche virtuelle (virtual-key code) spécifiée. Autrement dit, cette fonction permet de savoir si une touche est enfoncée (toutes les touches du clavier et les boutons de la souris).
nVirtKey est la touche à tester (voir le tableau de constantes ci-dessous).
La fonction retourne 0 ou 1 lorsque la touche est inactive sinon -128 ou -127 lorsque la touche est enfoncée.

Constante | Valeur | Définition
VK_F9 | 78 | Touche f9
VK_F8 | 77 | Touche f8
VK_F6 | 75 | Touche f6
VK_F7 | 76 | Touche f7
VK_F5 | 74 | Touche f5
VK_F4 | 73 | Touche f4
VK_F3 | 72 | Touche f3
VK_F2 | 71 | Touche f2
VK_F1 | 70 | Touche f1
VK_DIVIDE | 6F | Touche "division".
VK_DECIMAL | 6E | Touche séparateur décimal.
VK_SUBTRACT | 6D | Touche "soustraction".
VK_SEPARATOR | 6C | Touche de séparation.
VK_ADD | 6B | Touche "addition".
VK_MULTIPLY | 6A | Touche "multiplication".
VK_NUMPAD9 | 69 | Touche 9 (clavier numérique).
VK_NUMPAD8 | 68 | Touche 8 (clavier numérique).
VK_NUMPAD7 | 67 | Touche 7 (clavier numérique).
VK_NUMPAD6 | 66 | Touche 6 (clavier numérique).
VK_NUMPAD5 | 65 | Touche 5 (clavier numérique).
VK_NUMPAD4 | 64 | Touche 4 (clavier numérique).
VK_NUMPAD3 | 63 | Touche 3 (clavier numérique).
VK_NUMPAD2 | 62 | Touche 2 (clavier numérique).
VK_NUMPAD1 | 61 | Touche 1 (clavier numérique).
VK_NUMPAD0 | 60 | Touche 0 (clavier numérique).
VK_APPS | 5D | Touche Windows applications (Microsoft Natural Keyboard).
VK_RWIN | 5C | Touche Windows droite (Microsoft Natural Keyboard).
VK_LWIN | 5B | Touche Windows gauche (Microsoft Natural Keyboard).
VK_Z | 5A | Touche z
VK_Y | 59 | Touche y
VK_X | 58 | Touche x
VK_W | 57 | Touche w
VK_V | 56 | Touche v
VK_U | 55 | Touche u
VK_T | 54 | Touche t
VK_S | 53 | Touche s
VK_R | 52 | Touche r
VK_Q | 51 | Touche q
VK_P | 50 | Touche p
VK_O | 4F | Touche o
VK_N | 4E | Touche n
VK_M | 4D | Touche m
VK_L | 4C | Touche l
VK_K | 4B | Touche k
VK_J | 4A | Touche j
VK_I | 49 | Touche i
VK_H | 48 | Touche h
VK_G | 47 | Touche g
VK_F | 46 | Touche f
VK_E | 45 | Touche e
VK_D | 44 | Touche d
VK_C | 43 | Touche c
VK_B | 42 | Touche b
VK_A | 41 | Touche a
VK_9 | 39 | Touche 9
VK_8 | 38 | Touche 8
VK_7 | 37 | Touche 7
VK_5 | 35 | Touche 5
VK_6 | 36 | Touche 6
VK_3 | 33 | Touche 3
VK_4 | 34 | Touche 4
VK_1 | 31 | Touche 1
VK_2 | 32 | Touche 2
VK_0 | 30 | Touche 0
VK_HELP | 2F | Touche "aide".
VK_DELETE | 2E | Touche "Suppression".
VK_INSERT | 2D | Touche insertion.
VK_SNAPSHOT | 2C | Touche impression écran.
VK_EXECUTE | 2B | Touche "exécution".
VK_SELECT | 29 | Touche "selection".
VK_DOWN | 28 | Flèche curseur bas.
VK_RIGHT | 27 | Flèche curseur droit.
VK_UP | 26 | Flèche curseur haut.
VK_LEFT | 25 | Flèche curseur gauche.
VK_HOME | 24 | Touche "début".
VK_END | 23 | Touche "fin".
VK_NEXT | 22 | Touche "page bas".
VK_PRIOR | 21 | Touche "page haut".
VK_SPACE | 20 | Touche Espace.
VK_ESCAPE | 1B | Touche Echap.
VK_CAPITAL | 14 | Touche verrouillage majuscule.
VK_PAUSE | 13 | Touche "Pause".
VK_MENU | 12 | Touche "Alt".
VK_CONTROL | 11 | Touche "Control".
VK_SHIFT | 10 | Touche "Shift".
VK_RETURN | 0D | Touche "Entrée".
VK_CLEAR | 0C | Touche d'effacement.
VK_TAB | 09 | Touche tabulation.
VK_BACK | 08 | Touche retour arrière.
VK_MBUTTON | 04 | Bouton du milieu de la souris (le 3ème boutton).
VK_CANCEL | 03 | Control-break.
VK_RBUTTON | 02 | Bouton droit de la souris.
VK_LBUTTON | 01 | Bouton gauche de la souris.
VK_F10 | 79 | Touche f10
VK_F11 | 7A | Touche f11
VK_F12 | 7B | Touche f12
VK_F13 | 7C | Touche f13
VK_F14 | 7D | Touche f14
VK_F15 | 7E | Touche f15
VK_F16 | 7F | Touche f16
VK_F17 | 80H | Touche f17
VK_F18 | 81H | Touche f18
VK_F19 | 82H | Touche f19
VK_F20 | 83H | Touche f20
VK_F21 | 84H | Touche f21
VK_F22 | 85H | Touche f22
VK_F23 | 86H | Touche f23
VK_F24 | 87H | Touche f24
VK_NUMLOCK | 90 | Touche verrouillage numérique.
VK_SCROLL | 91 | Touche verrouillage défilement.
VK_ATTN | F6 | Touche "Attn".
VK_CRSEL | F7 | Touche "CrSel".
VK_EXSEL | F8 | Touche "ExSel".
VK_PLAY | FA | Touche "Play".
VK_ZOOM | FB | Touche "Zoom".
VK_NONAME | FC | Reservé.
VK_PA1 | FD | Touche PA1.

Exemple d'utilisation :

' Exemple de Philippe Plançon : plancon@onetelnet.fr

' Coordonnées d'un point de l'écran
Private Type POINTAPI
x As Long
y As Long
End Type

' Retourne la position de la souris sur l'écran
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

' Teste si une touche est enfoncée
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

' Déclaration des touches
Const VK_LBUTTON = 1 ' Left mouse button

Private Sub Timer1_Timer()

' Déplacez-vous où vous voulez et appuyez sur le bouton gauche
' de la souris et hop on sait tout quand on veut

'---Déclaration des variables---
Dim Coord As POINTAPI
'---Affiche les coordonnées du curseur de la souris---
If GetKeyState(VK_LBUTTON) >= 0 Then
Me.Caption = "Bouton gauche de la souris relaché"
Else
GetCursorPos Coord
Me.Caption = "Bouton gauche de la souris enfoncé : x = " & _
Coord.x & " , y = " & Coord.y
End If
End Sub


GetLastError

 Fonction GetLastError

Declare Function GetLastError Lib "kernel32" () As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(Origine : Phil - Mail : pplancon@chello.fr)

Cette fonction retourne la dernière erreur système liée au thread courant.

Exemple d'utilisation :

'---------------------------------
'--- Origine : Phil ---
'--- Mail : pplancon@chello.fr ---
'---------------------------------
Option Explicit

' Le code ci-dessous montre comment changer la priorité du processus
' en cours (= au code qui suit). Les APIs utilisées permettent
' de classer par ordre prioritaire des processus, autrement dit
' le système réparti ou donne totalement les ressources systèmes
' (mémoire, CPU, ...) pour l'exécution de ou d'un processus.

'---Déclaration des constantes---
' Constantes des priorités (6 niveaux de priorités)
Const IDLE_PRIORITY_CLASS As Long = &H40 ' minimum
Const BELOW_NORMAL_PRIORITY_CLASS As Long = &H4000 ' normal -
Const NORMAL_PRIORITY_CLASS As Long = &H20 ' normal
Const ABOVE_NORMAL_PRIORITY_CLASS As Long = &H8000 ' normal +
Const HIGH_PRIORITY_CLASS As Long = &H80 ' haute
Const REALTIME_PRIORITY_CLASS As Long = &H100 ' maximum

' Constantes de gestion des process

'Accès au process en synchro uniquement.
Const SYNCHRONIZE As Long = &H100000
'Accès au process en "query_info".
Const PROCESS_QUERY_INFORMATION As Long = &H400

'Infinite timeout.
Const INFINITE As Long = &HFFFF

'---Déclarations des APIs---
' Gestion de la priorité du procces
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function SetPriorityClass Lib "kernel32" (ByVal hProcess As Long, _
ByVal dwPriorityClass As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long

' Pour le temps
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Private Sub Command1_Click()
'---Déclaration des variables---
Dim i As Long
Dim j As Long
Dim HeureDebut As Long
'---Exécute un calcul bidon---
HeureDebut = timeGetTime
For i = 0 To 50000000 ' <- modifier ce chiffre pour influer sur le temps de calcul
j = (i * 2) Mod 34541
Next i
MsgBox "Temps du calcul bidon : " & timeGetTime - HeureDebut & " ms"
End Sub

Private Sub Form_Load()
'---Déclaration des variables---
Dim LastError As Long
Dim Ret As Long
Dim hCurrentProcess As Long
'---Positionne la feuille---
Me.Move 0, 0
'---Modifie la priorité du process---
' Récupère le handle du process
hCurrentProcess = GetCurrentProcess()
' Affecte sa priorité
Ret = SetPriorityClass(hCurrentProcess, IDLE_PRIORITY_CLASS)
' Gestion des erreurs
If (Ret = 0) Then
LastError = GetLastError()
MsgBox "Impossible de modifier la priorité." & _
vbCrLf & vbCrLf & CStr(LastError)
End If
End Sub


GetLocalTime

 Fonction GetLocalTime

Declare Sub GetLocalTime Lib "kernel32" ( _
lpSystemTime As SYSTEMTIME)
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne l'heure locale du PC.
lpSystemTime est une structure de type SYSTEMTIME (définit ci-dessous).
La procédure remplit la struture passée en paramêtre avec la date et l'heure ainsi obtenue.

Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Exemple d'utilisation :

Public Function HeureLocale() As String
' Retourne l'heure locale sous forme de chaîne
' (précision à la milliseconde)
Dim sysTime As SYSTEMTIME
Call GetLocalTime(sysTime)
HeureLocale = sysTime.wDayOfWeek & ", " & _
sysTime.wDay & "/" & _
sysTime.wMonth & "/" & _
sysTime.wYear & " " & _
sysTime.wHour & ":" & _
sysTime.wMinute & ":" & _
sysTime.wSecond & "'" & _
sysTime.wMilliseconds
End Function


GetLogicalDrives

 Fonction GetLogicalDrives

Declare Function GetLogicalDrives Lib "kernel32" () As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction renvoie l'ensemble des lecteurs actuellement attribués par le système.
La fonction retourne un entier long qu'il faut décomposer de manière binaire pour connaître les lecteurs. Le premier bit indique si le lecteur A existe, le bit 2 indique si le lecteur B existe, le 3ième est pour le C, et ainsi de suite.
A utiliser de cette manière, lgRet étant la variable contenant le retour de la fonction:
Si lgRet And 1 <> 0 Alors A: existe
Si lgRet And 2 <> 0 Alors B: existe
Si lgRet And 4 <> 0 Alors C: existe
Si lgRet And 8 <> 0 Alors D: existe
Si lgRet And 16 <> 0 Alors E: existe
(on continue comme ça avec 32, 64, 128, 512, 1024,...).

Exemple d'utilisation :

' Exemple de François GARAULT (f.garault@nea-be.com)
' A placer sur une feuille.

Private Declare Function GetLogicalDriveStrings Lib "kernel32" _
Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias _
"GetDriveTypeA" (ByVal nDrive As String) As Long

Dim lgCptCD As Integer
Dim tabCD(20) As String

Private Sub Form_Load()
Dim strSave As String
Dim lgFor As Long, lgRet As Long
Me.AutoRedraw = True
lgCptCD = 0
strSave = String$(255, Chr$(0))
lgRet = GetLogicalDriveStrings(255, strSave)
Do Until Left$(strSave, 1) = Chr$(0)
If GetDriveType(Left$(strSave, InStr(1, strSave, Chr$(0)) - 1)) = 5 Then
lgCptCD = lgCptCD + 1
tabCD(lgCptCD) = Left$(strSave, 3)
End If
strSave = Right$(strSave, Len(strSave) - 4)
Loop
Me.Print "Bilan de lecteurs de Cd-Rom :"
For lgFor = 1 To lgCptCD
Me.Print "Lecteur : " & lgFor & " = " & tabCD(lgFor)
Next
End Sub


GetMenuItemCount

 Fonction GetMenuItemCount

Declare Function GetMenuItemCount Lib "user32" ( _
ByVal hMenu As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction vous pouvez récupérer le nombre d'élément dans un menu ou dans un sous-menu.
hMenu est un handle valide sur un menu ou un sous-menu.
La fonction retourne le nombre d'élément appartenant au menu ou au sous-menu en cas de succès, sinon 0.

Exemple d'utilisation :

' Exemple de :
' Luc Chiodelli - webmaster@asp-le-refuge.net

Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long

Public Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" ( _
ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, _
lpmii As MENUITEMINFO) As Long

Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, _
ByVal nPos As Long) As Long

Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long

Public Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type

Public Const MIIM_STATE = &H1
Public Const MIIM_ID = &H2
Public Const MIIM_TYPE = &H10
Public Const MIIM_SUBMENU = &H4
Public Const MFS_DEFAULT = &H1000
Public Const MF_STRING = &H0&

Public Function AfficheItemsMenu(frmTmp As Form, lstTmp As ListBox) As Boolean
' Parcours les menus de la fenêtre donnée en paramètre et les affiche
' dans le contrôle ListBox passé en paramètre.
Dim hMenu As Long, lgNbMenu As Long
Dim hSubMenu As Long, lgNbSousMenu As Long
Dim lgRet As Long
Dim I As Integer, J As Integer
Dim stBuffer As String * 80
Dim lpItemInfo As MENUITEMINFO

AfficheItemsMenu = True
' Récupère un pointeur vers le menu courant
hMenu = GetMenu(frmTmp.hwnd)
' Récupère le nombre d'élément de premier niveau
lgNbMenu = GetMenuItemCount(hMenu)
' Parcours les éléments de premier niveau
For I = 0 To lgNbMenu - 1
' Mise à jour de la structure
lpItemInfo.cbSize = 44
lpItemInfo.dwTypeData = stBuffer & Chr$(0)
lpItemInfo.fType = MF_STRING
lpItemInfo.cch = 80
lpItemInfo.fState = MFS_DEFAULT
lpItemInfo.fMask = MIIM_ID Or MIIM_STATE Or MIIM_TYPE Or MIIM_SUBMENU
' Récupère le contenu du menu
lgRet = GetMenuItemInfo(hMenu, I, True, lpItemInfo)
lpItemInfo.dwTypeData = Replace(lpItemInfo.dwTypeData, Chr$(0), vbNullString)
' Affiche le menu dans le contrôle ListBox
lstTmp.AddItem lpItemInfo.dwTypeData
' Récupère un pointeur vers le sous-menu
hSubMenu = GetSubMenu(hMenu, I)
' Récupère le nombre de sous-menus
lgNbSousMenu = GetMenuItemCount(hSubMenu)
' Parcours des éléments de second niveau
For J = 0 To lgNbSousMenu - 1
' Mise à niveau de la structure
lpItemInfo.cbSize = 44
lpItemInfo.dwTypeData = stBuffer & Chr$(0)
lpItemInfo.fType = MF_STRING
lpItemInfo.cch = 80
lpItemInfo.fState = MFS_DEFAULT
lpItemInfo.fMask = MIIM_ID Or MIIM_STATE Or MIIM_TYPE Or MIIM_SUBMENU
' Récupère le contenu du sous-menu
lgRet = GetMenuItemInfo(hSubMenu, J, True, lpItemInfo)
lpItemInfo.dwTypeData = Replace(lpItemInfo.dwTypeData, _
Chr$(0), vbNullString)
' Affiche le menu dans le contrôle ListBox
lstTmp.AddItem Space$(8) & lpItemInfo.dwTypeData
Next
Next
End Function


GetMenuItemID

 Fonction GetMenuItemID

Declare Function GetMenuItemID Lib "user32" ( _
ByVal hMenu As Long, _
 ByVal nPos As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de connaître l'ID d'un élément de menu.
hMenu est le handle du menu sur lequel on travaille.
nPos est la position du menu dont on cherche à connaître l'ID.
Si l'opération s'est bien passée, on récupère l'ID de l'élément, sinon 0.

Pas d'exemple disponible...


GetMenuString

 Fonction GetMenuString

Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" ( _
ByVal hMenu As Long, _
 ByVal wIDItem As Long, _
 ByVal lpString As String, _
 ByVal nMaxCount As Long, _
 ByVal wFlag As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction, on peut récupérer le texte associé à un menu.
hMenu est un handle sur le menu à manipuler.
wIDItem est soit la position, soit l'identifiant de l'item de menu dont on veut le texte.
lpString est un buffer dans lequel sera stocké la chaîne de retour.
nMaxCount est la taille du buffer.
wFlag indique si l'on travaille par position ou par identifiant suivant les constantes ci-dessous.

Constante | Valeur | Définition
MF_BYCOMMAND | &H0& | Indique que le wIDItem donné à la procédure correspond à l'ID de l'item de menu.
MF_BYPOSITION | &H400& | Indique que le wIDItem donné à la procédure correspond à la position de l'item de menu.

Pas d'exemple disponible...


GetMenu

 Fonction GetMenu

Declare Function GetMenu Lib "user32" ( _
ByVal hWnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet tout simplement de récupérer le handle du menu d'une fenêtre.
hWnd est le handle de la fenêtre sur laquelle vous désirez travailler, la valeur retournée est le handle du menu.

Exemple d'utilisation :

' Déclaration de fonctions API
Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal B As Boolean, lpMenuItemInfo As MENUITEMINFO) As Long
Public Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long
Public Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

' Déclaration de constantes
Public Const MF_STRING = &H0&
Public Const MF_HELP = &H4000&
Public Const MFS_DEFAULT = &H1000&
Public Const MIIM_ID = &H2
Public Const MIIM_SUBMENU = &H4
Public Const MIIM_TYPE = &H10
Public Const MIIM_DATA = &H20

' Déclaration du type MENU
Public Type MENUITEMINFO
cbSize As Long
 fMask As Long
 fType As Long
 fState As Long
 wID As Long
 hSubMenu As Long
 hbmpChecked As Long
 hbmpUnchecked As Long
 dwItemData As Long
 dwTypeData As String
 cch As Long
End Type

' Tout le code suivant doit être placé dans l'évènement
' Form_Load de la fenêtre concernée.

' Déclaration des variables utilisées
Dim mnuMenuItem As MENUITEMINFO
Dim lgMenu As Long
Dim stBuffer As String * 80
...
' Récupère le handle du menu
lgMenu = GetMenu(Me.hwnd)
stBuffer = Space$(80)
' Initialisation de la variable
With mnuMenuItem
.cbSize = Len(mnuMenuItem)
.dwTypeData = stBuffer & Chr$(0)
.fType = MF_STRING
.cch = Len(mnuMenuItem.dwTypeData)
.fState = MFS_DEFAULT
.fMask = MIIM_ID Or MIIM_DATA Or MIIM_TYPE Or MIIM_SUBMENU
End With
' Mettre l'indice correspondant au menu à placer à droite à la place 1.
' Les indices de menu commencent à partir de 0.
' Cela ne concerne que les menu de premier niveau.
If GetMenuItemInfo(lgMenu, 1, True, mnuMenuItem) = 0 Then
 MsgBox "Erreur GetMenuItemInfo. " & Err.LastDllError, vbExclamation, "Erreur"
Else
 mnuMenuItem.fType = mnuMenuItem.fType Or MF_HELP
If SetMenuItemInfo(lgMenu, 1, True, mnuMenuItem) = 0 Then
 MsgBox "Erreur SetMenuItemInfo. " & Err.LastDllError, vbExclamation, "Erreur"
End If
End If
' Rafraîchissement du menu
MenuDrawMenuBar (Me.hwnd)
...


GetNextWindow

 Fonction GetNextWindow

Declare Function GetNextWindow Lib "user32" Alias "GetWindow" ( _
ByVal hwnd As Long, _
 ByVal wFlag As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de connaître la fenêtre suivante ou précédente de la fenêtre active (fonctionne également pour les fenêtres fille d'une MDI). Equivalent de ce que peut donner un [ALT][TAB] (ou [CTRL][TAB] dans le cas de MDI).
hwnd est le handle de la fenêtre de départ.
wFlag est une constante du tableau ci-dessous (en gros défini le sens de la recherche).

Constante | Valeur | Définition
GW_HWNDNEXT | 2 | Définition de la fenêtre suivante.
GW_HWNDPREV | 3 | Définition de la fenêtre précédente.

Pas d'exemple disponible...


GetOpenFileName

 Fonction GetOpenFileName

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" ( _
pOpenfilename As OPENFILENAME) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Affiche une boîte de dialogue 'Ouvrir...'.
pOpenfilename est une structure donnant les caractéristiques de la boîte de dialogue.

lStructSize doit contenir la taille de la structure.
hwndOwner est le handle de la fenêtre mère de la boîte de dialogue.
hInstance est l'instance de l'application courante.
lpstrFilter
nFilterIndex est l'index du filtre à utiliser par défaut.
lpstrFile est le nom du fichier affiché à l'ouverture de la fenêtre.
nMaxFile est la longueur du buffer précédent.
lpstrFileTitle contient le nom et extension du fichier sans le chemin.
nMaxFileTitle est la longueur du buffer précédent.
lpstrInitialDir est le répertoire initial de la boîte de dialogue.
lpstrTitle est le titre de la fenêtre.
flags est un ensemble de constantes désignant les caractéristiques de la fenêtre (voir le tableau de constantes plus bas).
lpstrDefExt est l'extension ajoutée par défaut automatiquement si l'utilisateur l'oublie.

Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Constante | Valeur | Définition
OFN_ALLOWMULTISELECT | &H200 | Autoriser la sélection multiple de fichiers.
OFN_CREATEPROMPT | &H2000 | Afficher une fenêtre de confirmation de création de fichier.
OFN_EXPLORER | &H80000 | Donne un style 'Explorer' à la boîte de dialogue (par défaut).
OFN_EXTENSIONDIFFERENT | &H400 | Indique que l'utilisateur a choisi une extension différente de celle par défaut.
OFN_FILEMUSTEXIST | &H1000 | Seuls des fichiers existants peuvent être saisis.
OFN_HIDEREADONLY | &H4 | Case à cocher 'Lecture seule' invisible.
OFN_LONGNAMES | &H200000 | Gestion des noms longs pour les boîtes de dialogue n'ayant pas le style 'Explorer'.
OFN_NOCHANGEDIR | &H8 | Conserve le répertoire d'origine à la fermeture de la fenêtre.
OFN_NODEREFERENCELINKS | &H100000 | La boîte de dialogue prendra le nom et le chemin du raccourci sélectionné.
OFN_NOLONGNAMES | &H40000 | Utilise les noms courts de fichier (sans effet dans le cas des fenêtres du type 'Explorer').
OFN_NONETWORKBUTTON | &H20000 | Cache (désactive) le bouton 'Réseau'.
OFN_NOREADONLYRETURN | &H8000 | Ne sélectionne pas la case à cocher 'Lecture seule'.
OFN_NOTESTFILECREATE | &H10000 | Le fichier ne sera pas créé avant la fermeture de la fenêtre.
OFN_NOVALIDATE | &H100 | Ne vérifie pas la validité de la saisie (validité du nom de fichier).
OFN_OVERWRITEPROMPT | &H2 | Afficher un message de confirmation d'écrasement de fichier si celui-ci existe déjà.
OFN_PATHMUSTEXIST | &H800 | Les chemins et fichiers saisis doivent exister.
OFN_READONLY | &H1 | La case 'Lecture seule' est cochée à la création de la fenêtre.
OFN_SHAREAWARE | &H4000 | Ignorer les erreurs de partage réseau.
OFN_SHOWHELP | &H10 | Afficher le bouton 'Aide' dans la boîte de dialogue.

Pas d'exemple disponible...


GetParent

 Fonction GetParent

Declare Function GetParent Lib "user32" ( _
ByVal hwnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne tout simplement un pointeur vers la fenêtre parent dont le handle est passé en paramêtre. Si la fenêtre ne possède pas de parent, elle retourne 0.

Pas d'exemple disponible...


GetPixel

 Fonction GetPixel

Declare Function GetPixel Lib "gdi32" Alias "GetPixel" ( _
ByVal hdc As Long, _
 ByVal x As Long, _
 ByVal y As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne la couleur du pixel dont les coordonnées sont passées en argument.
hdc est le contexte de travail.
x et y représentent les coordonnées du pixel.
La fonction retourne la couleur du point (telle que le ferait la fonction RGB). Si le point est en dehors des limites du contexte, elle retourne CLR_INVALID (&hFFFF).

Exemple d'utilisation :

' ouneufe (fondusonline@free.fr)

Option Explicit
' Créer :
' - un label nommé lblcouleur
' - un label nommé lblcoord
' un rectangle shape nommé réusultat (propriété opaque)
' une picture box nommée exemple

' Déclaration API GetPixel (renvoie une information de couleur)
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _
ByVal X As Long, ByVal Y As Long) As Long

' A l'événement clic de l'image est préféré le mousedown qui renvoie
' automatiquement les coordonnées X et Y du pointeur
Private Sub exemple_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Dim C As Long
C = GetPixel(exemple.hdc, X, Y)
' affichage chiffré
Lblcouleur.Caption = Hex(C)
Lblcoord.Caption = X & " " & Y
' affichage de la couleur
Resultat.FillColor = C
Resultat.Refresh
End Sub


GetPrivateProfileString

 Fonction GetPrivateProfileString

Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
 ByVal lpKeyName As Any, _
 ByVal lpDefault As String, _
 ByVal lpReturnedString As String, _
 ByVal nSize As Long, _
 ByVal lpFileName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette API permet de lire des fichiers d'initialisations. La fonction retourne 0 si la lecture du fichier d'initialisation a échoué, sinon elle retourne 1.
Voici le détail des variables :
lpApplicationName définit le nom de la section,
lpKeyName définit le nom de la clef,
lpDefault retourne la valeur par défaut si la clef n'est pas définie,
lpReturnedString contient la valeur de la clef si elle existe sinon elle contient la valeur lpDefault,
nSize est la taille de la variable lpReturnedString en octet,
lpFileName définit le nom du fichier d'initialisation.

Résumons, voici la structure du fichier d'initialisation lpFileName :

[lpApplicationName]
lpKeyName=lpReturnedString

Exemple d'utilisation :

' Déclaration de la fonction API
Private Declare Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString _
As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Public Function LireIni(stSection As String, stKey As String, stFichier As String) As String
' Lecture d'une valeur dans un fichier INI
' stSection est le la partie designée entre crochets ([option] par exemple)
' stKey est le nom de la clé à récupérer (COULEUR=... par exemple)
Dim stBuf As String, lgBuf As Long, lgRep As Long
' Mise en place du buffer de lecture
stBuf = Space$(255)
lgBuf = 255
lgRep = GetPrivateProfileString(stSection, stKey, "", stBuf, lgBuf, stFichier)
LireIni = Left$(stBuf, lgRep)
End Function


GetSaveFileName

 Fonction GetSaveFileName

Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" ( _
pOpenfilename As OPENFILENAME) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction affiche une boîte de dialogue 'Enregistrer' ('Enregistrer sous...').
pOpenfilename est une structure (détaillée ci-dessous) qui contient les caractéristiques d'affichage de la fenêtre.
lStructSize doit contenir la taille de la structure.
hwndOwner est le handle de la fenêtre mère de la boîte de dialogue.
hInstance est l'instance de l'application courante.
lpstrFilter définit les extensions affichées dans la boîte de dialogue. Chaque extension est délimitée par un caractère null (vbNullChar) et la fin de la chaîne est désignée par deux caractère null. Chaque extension comprend, une définition suivie de l'extension réelle, séparées par un "tube" ("Tous les fichiers (*.*)|*.*" & vbNullChar & "Fichiers textes (*.txt)|*.txt" & vbNullChar & vbNullChar).
nFilterIndex est l'index du filtre à utiliser par défaut.
lpstrFile est le nom du fichier affiché à l'ouverture de la fenêtre.
nMaxFile est la longueur du buffer précédent.
lpstrFileTitle contient le nom et extension du fichier sans le chemin.
nMaxFileTitle est la longueur du buffer précédent.
lpstrInitialDir est le répertoire initial de la boîte de dialogue.
lpstrTitle est le titre de la fenêtre.
flags est un ensemble de constantes désignant les caractéristiques de la fenêtre (voir le tableau de constantes plus bas).
lpstrDefExt est l'extension ajoutée par défaut automatiquement si l'utilisateur l'oublie.

Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Constante | Valeur | Définition
OFN_ALLOWMULTISELECT | &H200 | Autoriser la sélection multiple de fichiers.
OFN_CREATEPROMPT | &H2000 | Afficher une fenêtre de confirmation de création de fichier.
OFN_EXPLORER | &H80000 | Donne un style 'Explorer' à la boîte de dialogue (par défaut).
OFN_EXTENSIONDIFFERENT | &H400 | Indique que l'utilisateur a choisi une extension différente de celle par défaut.
OFN_FILEMUSTEXIST | &H1000 | Seuls des fichiers existants peuvent être saisis.
OFN_HIDEREADONLY | &H4 | Case à cocher 'Lecture seule' invisible.
OFN_LONGNAMES | &H200000 | Gestion des noms longs pour les boîtes de dialogue n'ayant pas le style 'Explorer'.
OFN_NOCHANGEDIR | &H8 | Conserve le répertoire d'origine à la fermeture de la fenêtre.
OFN_NODEREFERENCELINKS | &H100000 | La boîte de dialogue prendra le nom et le chemin du raccourci sélectionné.
OFN_NOLONGNAMES | &H40000 | Utilise les noms courts de fichier (sans effet dans le cas des fenêtres du type 'Explorer').
OFN_NONETWORKBUTTON | &H20000 | Cache (désactive) le bouton 'Réseau'.
OFN_NOREADONLYRETURN | &H8000 | Ne sélectionne pas la case à cocher 'Lecture seule'.
OFN_NOTESTFILECREATE | &H10000 | Le fichier ne sera pas créé avant la fermeture de la fenêtre.
OFN_NOVALIDATE | &H100 | Ne vérifie pas la validité de la saisie (validité du nom de fichier).
OFN_OVERWRITEPROMPT | &H2 | Afficher un message de confirmation d'écrasement de fichier si celui-ci existe déjà.
OFN_PATHMUSTEXIST | &H800 | Les chemins et fichiers saisis doivent exister.
OFN_READONLY | &H1 | La case 'Lecture seule' est cochée à la création de la fenêtre.
OFN_SHAREAWARE | &H4000 | Ignorer les erreurs de partage réseau.
OFN_SHOWHELP | &H10 | Afficher le bouton 'Aide' dans la boîte de dialogue.

Pas d'exemple disponible...


GetShortPathName

 Fonction GetShortPathName

Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" ( _
ByVal lpszLongPath As String, _
 ByVal lpszShortPath As String, _
 ByVal cchBuffer As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.5
. Windows 2000/XP : Oui

Description :
Cette fonction retourne le nom court (MS-DOS) d'un fichier.
lpszLongPath est le nom long du fichier à traiter.
lpszShortPath est un buffer, à initialiser, qui sera utilisé par la fonction pour y placer le résultat.
cchBuffer est la taille du buffer envoyé à la fonction.
En cas de réussite, la fonction retourne la longueur du nom du fichier et renseigne la variable lpszShortPath. Sinon, elle renvoie 0.

Pas d'exemple disponible...


GetSubMenu

 Fonction GetSubMenu

Declare Function GetSubMenu Lib "user32" ( _
ByVal hMenu As Long, _
 ByVal nPos As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de récupérer un handle sur un sous-menu.
hMenu est le handle du menu auquel appartient le sous-menu dont on a besoin.
nPos est la position du sous-menu que l'on veut récupérer (on démarre à 0).
Si la fonction réussie, elle retourne un handle sur le sous-menu, sinon 0.

Exemple d'utilisation :

' Exemple de :
' Luc Chiodelli - webmaster@asp-le-refuge.net

Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long

Public Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" ( _
ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, _
lpmii As MENUITEMINFO) As Long

Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, _
ByVal nPos As Long) As Long

Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long

Public Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type

Public Const MIIM_STATE = &H1
Public Const MIIM_ID = &H2
Public Const MIIM_TYPE = &H10
Public Const MIIM_SUBMENU = &H4
Public Const MFS_DEFAULT = &H1000
Public Const MF_STRING = &H0&

Public Function AfficheItemsMenu(frmTmp As Form, lstTmp As ListBox) As Boolean
' Parcours les menus de la fenêtre donnée en paramètre et les affiche
' dans le contrôle ListBox passé en paramètre.
Dim hMenu As Long, lgNbMenu As Long
Dim hSubMenu As Long, lgNbSousMenu As Long
Dim lgRet As Long
Dim I As Integer, J As Integer
Dim stBuffer As String * 80
Dim lpItemInfo As MENUITEMINFO

AfficheItemsMenu = True
' Récupère un pointeur vers le menu courant
hMenu = GetMenu(frmTmp.hwnd)
' Récupère le nombre d'élément de premier niveau
lgNbMenu = GetMenuItemCount(hMenu)
' Parcours les éléments de premier niveau
For I = 0 To lgNbMenu - 1
' Mise à jour de la structure
lpItemInfo.cbSize = 44
lpItemInfo.dwTypeData = stBuffer & Chr$(0)
lpItemInfo.fType = MF_STRING
lpItemInfo.cch = 80
lpItemInfo.fState = MFS_DEFAULT
lpItemInfo.fMask = MIIM_ID Or MIIM_STATE Or MIIM_TYPE Or MIIM_SUBMENU
' Récupère le contenu du menu
lgRet = GetMenuItemInfo(hMenu, I, True, lpItemInfo)
lpItemInfo.dwTypeData = Replace(lpItemInfo.dwTypeData, Chr$(0), vbNullString)
' Affiche le menu dans le contrôle ListBox
lstTmp.AddItem lpItemInfo.dwTypeData
' Récupère un pointeur vers le sous-menu
hSubMenu = GetSubMenu(hMenu, I)
' Récupère le nombre de sous-menus
lgNbSousMenu = GetMenuItemCount(hSubMenu)
' Parcours des éléments de second niveau
For J = 0 To lgNbSousMenu - 1
' Mise à niveau de la structure
lpItemInfo.cbSize = 44
lpItemInfo.dwTypeData = stBuffer & Chr$(0)
lpItemInfo.fType = MF_STRING
lpItemInfo.cch = 80
lpItemInfo.fState = MFS_DEFAULT
lpItemInfo.fMask = MIIM_ID Or MIIM_STATE Or MIIM_TYPE Or MIIM_SUBMENU
' Récupère le contenu du sous-menu
lgRet = GetMenuItemInfo(hSubMenu, J, True, lpItemInfo)
lpItemInfo.dwTypeData = Replace(lpItemInfo.dwTypeData, _
Chr$(0), vbNullString)
' Affiche le menu dans le contrôle ListBox
lstTmp.AddItem Space$(8) & lpItemInfo.dwTypeData
Next
Next
End Function


GetSystemDirectory

 Fonction GetSystemDirectory

Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" ( _
ByVal lpBuffer As String, _
 ByVal nSize As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Permet de connaître le nom du répertoire Windows\System.
lpBuffer : Chaîne qui recevra en retour le nom du répertoire.
nSize : 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.

Exemple d'utilisation :

Public Function SystemDirectory() As String
' Retourne le chemin du répertoire système de windows
Dim stTmp As String, lgTmp As Long
stTmp = Space$(250)
lgTmp = 251
Call GetSystemDirectory(stTmp, lgTmp)
SystemDirectory = Split(stTmp, Chr$(0))(0)
End Function


GetSystemMenu

 Fonction GetSystemMenu

Declare Function GetSystemMenu Lib "user32" ( _
ByVal hwnd As Long, _
 ByVal bRevert As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de récupérer le handle du menu système d'une fenêtre (celui qui se "cache" derrière l'icône en haut à gauche).
hWnd est le handle de la fenêtre sur laquelle vous désirez travailler.
bRevert accepte comme valeur "Vrai" ou "Faux". En le mettant à "Vrai", cela permet de restaurer le menu système initial, à "Faux", vous récupérez le handle du menu système pour pouvoir le modifier.

Exemple d'utilisation :

' Origine : fred - chapeaux.ronds@wanadoo.fr

' Le code qui suis permet de désactiver les boutons "X", "min", "max".
' Créer un nouveau projet vb et coller le code suivant dans
' "déclaration" puis essayer les trois boutons les uns après les autres
' (pour cela enlever l'apostrophe devant "no_min" et "no_max").

Option Explicit

Private Declare Function DeleteMenu Lib "user32" (ByVal _
hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal _
hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal hwnd As Long, ByVal _
nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hwnd As Long, ByVal _
nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const MF_BYCOMMAND = &H0&
Private Const MF_BYPOSITION = &H400
Private Const SC_MINIMIZE = &HF020
Private Const SC_MAXIMIZE = &HF030
Private Const SC_CLOSE = 6
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000

Private Sub no_x()
' Désactiver X
Dim hMenu As Long, k As Long
hMenu = GetSystemMenu(hwnd, False)
k = DeleteMenu(hMenu, SC_CLOSE, MF_BYPOSITION)
End Sub

Private Sub no_min()
' Désactiver 'minimiser'
Dim hMenu As Long, k As Long
hMenu = GetSystemMenu(hwnd, False)
k = DeleteMenu(hMenu, SC_MINIMIZE, MF_BYCOMMAND)
k = GetWindowLong(hwnd, GWL_STYLE)
k = k Xor WS_MINIMIZEBOX
SetWindowLong hwnd, GWL_STYLE, k
End Sub

Private Sub no_max()
' Désactiver 'maximiser'
Dim hMenu As Long, k As Long
hMenu = GetSystemMenu(hwnd, False)
k = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
k = GetWindowLong(hwnd, GWL_STYLE)
k = k Xor WS_MAXIMIZEBOX
SetWindowLong hwnd, GWL_STYLE, k
End Sub

Private Sub Form_Load()
no_x
' no_min
' no_max
End Sub


GetSystemMetrics

 Fonction GetSystemMetrics

Declare Function GetSystemMetrics Lib "user32" ( _
ByVal nIndex As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction est utile pour connaître les dimensions des objets manipulés sous Windows.
Envoyez en paramêtre une constante (voir liste ci-dessous) et récupérez le résultat en pixels.

Constante | Valeur | Définition
SM_CXSCREEN | 0 | Largeur de l'écran.
SM_CYSCREEN | 1 | Hauteur de l'écran.
SM_CXVSCROLL | 2 | Largeur des barres de défilement verticales.
SM_CYHSCROLL | 3 | Hauteur des barres de défilement horizontales.
SM_CXBORDER | 5 | Largeur d'une bordure de fenêtre.
SM_CYBORDER | 6 | Hauteur d'une bordure de fenêtre.
SM_CXICON | 11 | Largeur d'un icône.
SM_CYICON | 12 | Hauteur d'un icône.
SM_CXCURSOR | 13 | Largeur du curseur.
SM_CYCURSOR | 14 | Hauteur du curseur.
SM_CYMENU | 15 | Hauteur d'une barre de menu.
SM_MOUSEPRESENT | 19 | Indique si une souris est présente (renvoie 'Vrai' ou 'Faux').
SM_CYVSCROLL | 20 | Hauteur des flèches dans les barres de défilement verticales.
SM_CXHSCROLL | 21 | Largeur des flèches dans les barres de défilement horizontales.
SM_SWAPBUTTON | 23 | Indique si les boutons droit et gauche de la souris sont inversés (renvoie 'Vrai' ou 'Faux').
SM_CXDOUBLECLK | 36 | Largeur maximale à ne pas dépasser pour qu'un double-clic soit pris en compte.
SM_CYDOUBLECLK | 37 | Hauteur maximale à ne pas dépasser pour qu'un double-clic soit pris en compte.
SM_CMOUSEBUTTONS | 43 | Indique le nombre de boutons présents sur la souris.

Pas d'exemple disponible...


GetSystemTime

 Fonction GetSystemTime

Declare Sub GetSystemTime Lib "kernel32" ( _
lpSystemTime As SYSTEMTIME)
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne l'heure système (heure GMT, différente de l'heure locale, voir GetLocalTime).
lpSystemTime est une structure de type SYSTEMTIME (définit ci-dessous).
La procédure remplit la struture passée en paramêtre avec la date et l'heure ainsi obtenue.

Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Exemple d'utilisation :

Public Function HeureSysteme() As String
' Retourne l'heure système sous forme de chaîne
' (précision à la milliseconde)
Dim sysTime As SYSTEMTIME
Call GetSystemTime(sysTime)
HeureSysteme = sysTime.wDayOfWeek & ", " & _
sysTime.wDay & "/" & _
sysTime.wMonth & "/" & _
sysTime.wYear & " " & _
sysTime.wHour & ":" & _
sysTime.wMinute & ":" & _
sysTime.wSecond & "'" & _
sysTime.wMilliseconds
End Function


GetTempFileName

 Fonction GetTempFileName

Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" ( _
ByVal lpszPath As String, _
 ByVal lpPrefixString As String, _
 ByVal wUnique As Long, _
 ByVal lpTempFileName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction le système vous retourne un nom de fichier temporaire dont vous pouvez vous servir dans vos programmes.
lpszPath est le nom du répertoire dans lequel sera placé votre fichier,
lpPrefixString est un préfixe de trois lettres qui sera utilisé dans le nom du fichier temporaire,
wUnique est de préférence à mettre à zéro pour garantir que le fichier est unique, le système cherche alors un nom de fichier n'existant pas déjà dans le répertoire. Si il est différent de zéro il crée juste le fichier avec ce numéro sans regarder s'il existe déjà.
lpTempFileName est le nom du fichier temporaire renvoyé.

Exemple d'utilisation :

' Exemple proposé par : Christophe M (ch.m@free.fr)
'-----------------------------------------------------------
' Déclarations
'-----------------------------------------------------------
Option Explicit

' Récupérer le chemin du répertoire temporaire
Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" ( _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long

' Créer un nom de fichier temporaire
Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" ( _
ByVal lpszPath As String, _
ByVal lpPrefixString As String, _
ByVal wUnique As Long, _
ByVal lpTempFileName As String) As Long

' Créer un fichier
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long

' Fermer un fichier
Public Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long

' Supprimer un fichier
Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" ( _
ByVal lpFileName As String) As Long

'--------------------------------------
' Constantes et structure pour l'API CreateFile
'--------------------------------------
' Type des attributs de sécurité
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

' Valeur de retour si erreur
Public Const INVALID_HANDLE_VALUE = -1

' dwDesiredAccess
Public Const GENERIC_WRITE = &H40000000
Public Const GENERIC_READ = &H80000000

' dwShareMode
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2

' dwCreationDisposition
Public Const CREATE_NEW = 1
Public Const CREATE_ALWAYS = 2
Public Const OPEN_EXISTING = 3
Public Const OPEN_ALWAYS = 4
Public Const TRUNCATE_EXISTING = 5

' dwFlagsAndAttributes
' attributs
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
' flags
Public Const FILE_FLAG_WRITE_THROUGH = &H80000000
Public Const FILE_FLAG_OVERLAPPED = &H40000000
Public Const FILE_FLAG_NO_BUFFERING = &H20000000
Public Const FILE_FLAG_RANDOM_ACCESS = &H10000000
Public Const FILE_FLAG_SEQUENTIAL_SCAN = &H8000000
Public Const FILE_FLAG_DELETE_ON_CLOSE = &H4000000
Public Const FILE_FLAG_BACKUP_SEMANTICS = &H2000000
Public Const FILE_FLAG_POSIX_SEMANTICS = &H1000000

'-----------------------------------------------------------
' creerFicTemp
'-----------------------------------------------------------
Public Function creerFicTemp(ByRef pS_messErr As String, _
ByRef pS_pathFicTemp As String, _
ByRef pI_handleFicCreer As Long, _
Optional pB_fermerFic As Boolean = True) As Boolean

' Crée un fichier temporaire (unique) dans le répertoire temp du système
' pS_pathFicTemp : nom du fichier .tmp créé (affecté par référence)
' pI_handleFicCreer : handle du fichier .tmp créé (affecté par référence)
' pB_fermerFic : à true = on ferme le fichier

On Error GoTo errVB

Static sI_bufferLength As Long
Static sS_prefix As String * 3 ' préfixe du fichier temp
Dim lS_repTemp As String ' repertoire temp
Dim lS_nomFicTemp As String ' fichier temp
Dim lO_securAttr As SECURITY_ATTRIBUTES
Dim lI_handleTemp As Long ' handle fic temporaire
Dim lI_handleFic As Long ' handle fic créé

' initialisation de la structure SECURITY_ATTRIBUTES
lO_securAttr.nLength = Len(lO_securAttr)
lO_securAttr.bInheritHandle = True
lO_securAttr.lpSecurityDescriptor = 0

' initialisation des variables
sI_bufferLength = 50
sS_prefix = "CHM" ' mon trigramme
lS_repTemp = Space$(50)
lS_nomFicTemp = Space$(100)
creerFicTemp = False ' la fonction est en erreur par défaut

' récupération du répertoire temp
If GetTempPath(sI_bufferLength, lS_repTemp) = 0 Then
Form1.Print "Impossible de trouver le chemin du répertoire temporaire !"
Exit Function
End If

' génération d'un nom de fichier (unique dans le répertoire temporaire)
If GetTempFileName(Mid$(lS_repTemp, 1, InStrRev(lS_repTemp, "\")), _
sS_prefix, 0, lS_nomFicTemp) = 0 Then
pS_messErr = "Impossible de créer un fichier temporaire !"
Exit Function
End If

' "nettoyage" du nom du fichier
lS_nomFicTemp = Mid$(lS_nomFicTemp, 1, InStrRev(lS_nomFicTemp, ".tmp", , vbTextCompare) + 3)
pS_pathFicTemp = lS_nomFicTemp

' création du fichier dans le répertoire temporaire
lI_handleFic = CreateFile(lS_nomFicTemp, _
0, _
0, _
lO_securAttr, _
CREATE_ALWAYS, _
FILE_ATTRIBUTE_NORMAL, _
lI_handleTemp)

If lI_handleFic = INVALID_HANDLE_VALUE Then
pS_messErr = "Impossible de créer le fichier temporaire !"
Exit Function
End If

pI_handleFicCreer = lI_handleFic

If pB_fermerFic Then
' fermeture du fichier
If CloseHandle(lI_handleFic) <> 1 Then
pS_messErr = "Impossible de fermer le fichier ayant le handle : " & lI_handleFic
Exit Function
End If
End If

' tout est Ok
creerFicTemp = True
Exit Function

errVB:
pS_messErr = "Erreur inattendu : " & Err.Description
End Function


GetTempPath

 Fonction GetTempPath

Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" ( _
ByVal nBufferLength As Long, _
 ByVal lpBuffer As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction sert à récupérer un répertoire pour y placer des fichiers temporaires que vos applications pourraient générer.
nBufferLength est la longueur de la chaîne lpBuffer.
lpBuffer est la chaîne qui contient le répertoire.

Exemple d'utilisation :

' Exemple proposé par : Christophe M (ch.m@free.fr)
'-----------------------------------------------------------
' Déclarations
'-----------------------------------------------------------
Option Explicit

' Récupérer le chemin du répertoire temporaire
Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" ( _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long

' Créer un nom de fichier temporaire
Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" ( _
ByVal lpszPath As String, _
ByVal lpPrefixString As String, _
ByVal wUnique As Long, _
ByVal lpTempFileName As String) As Long

' Créer un fichier
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long

' Fermer un fichier
Public Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long

' Supprimer un fichier
Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" ( _
ByVal lpFileName As String) As Long

'--------------------------------------
' Constantes et structure pour l'API CreateFile
'--------------------------------------
' Type des attributs de sécurité
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

' Valeur de retour si erreur
Public Const INVALID_HANDLE_VALUE = -1

' dwDesiredAccess
Public Const GENERIC_WRITE = &H40000000
Public Const GENERIC_READ = &H80000000

' dwShareMode
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2

' dwCreationDisposition
Public Const CREATE_NEW = 1
Public Const CREATE_ALWAYS = 2
Public Const OPEN_EXISTING = 3
Public Const OPEN_ALWAYS = 4
Public Const TRUNCATE_EXISTING = 5

' dwFlagsAndAttributes
' attributs
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
' flags
Public Const FILE_FLAG_WRITE_THROUGH = &H80000000
Public Const FILE_FLAG_OVERLAPPED = &H40000000
Public Const FILE_FLAG_NO_BUFFERING = &H20000000
Public Const FILE_FLAG_RANDOM_ACCESS = &H10000000
Public Const FILE_FLAG_SEQUENTIAL_SCAN = &H8000000
Public Const FILE_FLAG_DELETE_ON_CLOSE = &H4000000
Public Const FILE_FLAG_BACKUP_SEMANTICS = &H2000000
Public Const FILE_FLAG_POSIX_SEMANTICS = &H1000000

'-----------------------------------------------------------
' creerFicTemp
'-----------------------------------------------------------
Public Function creerFicTemp(ByRef pS_messErr As String, _
ByRef pS_pathFicTemp As String, _
ByRef pI_handleFicCreer As Long, _
Optional pB_fermerFic As Boolean = True) As Boolean

' Crée un fichier temporaire (unique) dans le répertoire temp du système
' pS_pathFicTemp : nom du fichier .tmp créé (affecté par référence)
' pI_handleFicCreer : handle du fichier .tmp créé (affecté par référence)
' pB_fermerFic : à true = on ferme le fichier

On Error GoTo errVB

Static sI_bufferLength As Long
Static sS_prefix As String * 3 ' préfixe du fichier temp
Dim lS_repTemp As String ' repertoire temp
Dim lS_nomFicTemp As String ' fichier temp
Dim lO_securAttr As SECURITY_ATTRIBUTES
Dim lI_handleTemp As Long ' handle fic temporaire
Dim lI_handleFic As Long ' handle fic créé

' initialisation de la structure SECURITY_ATTRIBUTES
lO_securAttr.nLength = Len(lO_securAttr)
lO_securAttr.bInheritHandle = True
lO_securAttr.lpSecurityDescriptor = 0

' initialisation des variables
sI_bufferLength = 50
sS_prefix = "CHM" ' mon trigramme
lS_repTemp = Space$(50)
lS_nomFicTemp = Space$(100)
creerFicTemp = False ' la fonction est en erreur par défaut

' récupération du répertoire temp
If GetTempPath(sI_bufferLength, lS_repTemp) = 0 Then
Form1.Print "Impossible de trouver le chemin du répertoire temporaire !"
Exit Function
End If

' génération d'un nom de fichier (unique dans le répertoire temporaire)
If GetTempFileName(Mid$(lS_repTemp, 1, InStrRev(lS_repTemp, "\")), _
sS_prefix, 0, lS_nomFicTemp) = 0 Then
pS_messErr = "Impossible de créer un fichier temporaire !"
Exit Function
End If

' "nettoyage" du nom du fichier
lS_nomFicTemp = Mid$(lS_nomFicTemp, 1, InStrRev(lS_nomFicTemp, ".tmp", , vbTextCompare) + 3)
pS_pathFicTemp = lS_nomFicTemp

' création du fichier dans le répertoire temporaire
lI_handleFic = CreateFile(lS_nomFicTemp, _
0, _
0, _
lO_securAttr, _
CREATE_ALWAYS, _
FILE_ATTRIBUTE_NORMAL, _
lI_handleTemp)

If lI_handleFic = INVALID_HANDLE_VALUE Then
pS_messErr = "Impossible de créer le fichier temporaire !"
Exit Function
End If

pI_handleFicCreer = lI_handleFic

If pB_fermerFic Then
' fermeture du fichier
If CloseHandle(lI_handleFic) <> 1 Then
pS_messErr = "Impossible de fermer le fichier ayant le handle : " & lI_handleFic
Exit Function
End If
End If

' tout est Ok
creerFicTemp = True
Exit Function

errVB:
pS_messErr = "Erreur inattendu : " & Err.Description
End Function


GetTextCharacterExtra

 Fonction GetTextCharacterExtra

Declare Function GetTextCharacterExtra Lib "gdi32" ( _
ByVal hdc As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne l'espace mis entre les caractères lors de l'écriture sur le périphérique sélectionné.
hdc est un pointeur vers le contexte d'affichage sélectionné.
Si la fonction échoue elle retourne "&h80000000".

Pas d'exemple disponible...


GetTextColor

 Fonction GetTextColor

Declare Function GetTextColor Lib "gdi32" ( _
ByVal hdc As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne la couleur de texte courante pour le contexte sélectionné.
hdc est un pointeur vers le périphérique (ou contrôle).
La fonction retourne la couleur de texte courante ou CLR_INVALID (&HFFFF) en cas d'échec.

Pas d'exemple disponible...


GetTextFace

 Fonction GetTextFace

Declare Function GetTextFace Lib "gdi32" Alias "GetTextFaceA" ( _
ByVal hdc As Long, _
 ByVal nCount As Long, _
 ByVal lpFacename As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
La fonction retourne la police de caractère courante pour le périphérique sélectionné.
hdc est un pointeur vers le périphérique (ou contrôle).
nCount est la longueur du buffer passé en paramètre.
lpFaceName est le buffer remplit par la fonction qui contient le nom de la police de caractère.
La fonction retourne 0 en cas d'erreur, sinon, elle donne le nombre de caractère copié dans le buffer.

Pas d'exemple disponible...


GetTickCount

 Fonction GetTickCount

Declare Function GetTickCount Lib "kernel32" () As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction vous donne le nombre de millisecondes qui se sont écoulées depuis le début de la session courante de Windows.
Elle peut vous éviter d'utiliser dans certains cas un contrôle Timer, ou bien elle peut servir dans le cadre de calcul d'intervalles de temps plus précis que ce que donne la fonction Time de VB.
Vous pouvez consulter un exemple de son utilisation dans Colonnes (onglet Programmes).

Exemple d'utilisation :

Public Sub Sleep(lgMSec As Long)
' Procédure de temporisation
' Le temps d'attente donné en paramètre en millisecondes est approximatif
Dim lgTime As Long
lgTime = GetTickCount
Do While lgTime + lgMSec > GetTickCount
DoEvents
DoEvents
DoEvents
Loop
End Sub


GetUserName

 Fonction GetUserName

Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" ( _
ByVal lpBuffer As String, _
 nSize As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction, vous pouvez connaître le nom de l'utilisateur courant.
lpBuffer est la chaîne qui contiendra le résultat après appel de la fonction.
nSize est la taille du buffer ci-dessus.
Comme d'habitude sur les appels de ce genre, il est conseillé d'initialiser la chaîne avec suffisament d'espaces (ex 250), et d'indiquer une taille de chaîne +1 (c-a-d, nSize = Len(lpBuffer)+1).
Retourne "Faux" en cas d'échec, sinon "Vrai".

Exemple d'utilisation :

Public Function UserName() As String
' Retourne le nom de l'utilisateur courant de l'ordinateur
Dim stTmp As String, lgTmp As Long
stTmp = Space$(250)
lgTmp = 251
Call GetUserName(stTmp, lgTmp)
UserName = Mid$(stTmp, 1, InStr(1, stTmp, Chr$(0)) - 1)
End Function


GetVolumeInformation

 Fonction GetVolumeInformation

Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" ( _
ByVal lpRootPathName As String, _
 ByVal lpVolNameBuf As String, _
 ByVal nVolNameSize As Long, _
 lpVolSerialNumber As Long, _
 lpMaxComponentLength As Long, _
 lpFileSystemFlags As Long, _
 ByVal lpFileSystemNameBuf As String, _
 ByVal nFileSystemNameSize As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction rècupère les informations de volume concernant un lecteur.
lpRootPathName contient le nom du lecteur de travail (ex: "A:\", "C:\", ...).
lpVolNameBuf est un buffer qui contiendra le volume du lecteur (à initialiser avec des espaces avant l'appel).
nVolNameSize est la taille du buffer précédent.
lpVolSerialNumber est le numéro de série du volume.
lpMaxComponentLenght donne la taille maximale que peut prendre un nom de fichier sur le lecteur.
lpFileSystemFlags est un ensemble de constantes définies dans le tableau ci-dessous.
lpFileSystemNameBuf est un buffer représentant le nom du système de fichier utilisé par le lecteur (à initialiser avant l'appel).
nFileSystemNameSize est la taille du buffer précédent.
En cas de réussite, la fonction retourne 1, sinon elle renvoie 0.

Constante | Valeur | Définition
FILE_CASE_PRESERVED | &H2 | Les noms de fichiers sont enregistrés de manière à respecter la casse.
FILE_CASE_SENSITIVE | &H1 | Les recherches de fichiers respectent la casse.
FILE_PERSISTENT_ACLS | &H8 | Le contrôle d'accés aux fichiers est enregistré.
FILE_UNICODE_ON_DISK | &H4 | Les noms de fichiers sont enregistrés en UNICODE.

Pas d'exemple disponible...


GetWindowLong

 Fonction GetWindowLong

Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
 ByVal nIndex As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de connaître des informations propres à la définition de la fenêtre.
nIndex contient une constante au choix dans la liste ci-dessous. Elle retourne zéro en cas d'échec.

Constante | Valeur | Définition
GWL_WNDPROC | (-4) | Pour connaître l'adresse de la fonction WindProc de la fenêtre.
GWL_STYLE | (-16) | Renvoie le style de la fenêtre.
GWL_EXSTYLE | (-20) | Renvoie le style étendu de la fenêtre.
GWL_HWNDPARENT | (-8) | Permet de récupérer le handle de la fenêtre Parent.
GWL_HINSTANCE | (-6) | Pour récupérer le handle de l'instance possédant la fenêtre.

Pas d'exemple disponible...


GetWindowRect

 Fonction GetWindowRect

Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" ( _
ByVal hwnd As Long, _
 lpRect As RECT) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction vous renvoie la zone rectangulaire définissant la fenêtre, cela comprend la barre de titre, les bordures, etc...
La structure de type RECT vous donne les deux points délimitant les extrémités de la fenêtre, le coin haut/gauche et bas/droit.

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Exemple d'utilisation :

' Origine : Christophe cavalier - c.cavalier@synergies-solutions.fr

Option Explicit

' Déclaration de la fonction API
Private Declare Function GetWindowRect Lib "user32" ( _
ByVal hwnd As Long, lpRect As RECT) As Long

' Déclaration du type
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

' Placer un bouton ("MonBouton") sur une feuille ("frmTest")
Private Sub Monbouton_Click()
Dim lgRetVal As Long
Dim r As RECT
lgRetVal = GetWindowRect(frmTest.hwnd, r)
' Affiche la position Haut/Gauche de la fenêtre
MsgBox "Gauche : " & r.Left & ", Haut: " & r.Top, vbOK, "Position fenêtre"
End Sub


GetWindowTextLength

 Fonction GetWindowTextLength

Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" ( _
ByVal hwnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction vous retourne juste la longueur du texte associé à la fenêtre ou au contrôle donné en paramêtre.
Voir également GetWindowText.

Pas d'exemple disponible...


GetWindowText

 Fonction GetWindowText

Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" ( _
ByVal hwnd As Long, _
 ByVal lpString As String, _
 ByVal cch As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction renvoie le texte associé à une fenêtre ou à un contrôle ('Text' ou 'Caption' en VB).
lpString contient la valeur récupérée et cch vous donne la taille de la chaîne ainsi retournée.

Exemple d'utilisation :

' Déclaration des API utilisées
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

' Variable temporaire utilisée uniquement par la fonction GetWindowsList
' pour stocker les fenêtres.
Public stGetWindowsList As String

' Exemple d'utilisation :
' Dim tabFenetre
' tabFenetre = GetWindowsList
Public Function GetWindowsList()
' Cette fonction retourne sous forme de tableau l'ensemble
' des titres des fenêtres de premier niveau ouvertes sous windows.
Dim lgRep As Long
stGetWindowsList = vbNullString
' Appel de l'API et envoi du pointeur vers notre fonction de rappel
lgRep = EnumWindows(AddressOf EnumWindowsProc, 0)
' Découpage de la chaîne pour retourner un tableau
GetWindowsList = Split(stGetWindowsList, vbCrLf)
End Function

' Déclaration de la fonction de rappel
Public Function EnumWindowsProc(ByVal lgHwnd As Long, ByVal lgParam As Long) As Long
Dim stTmp As String, lgTmp As Long, lgRet As Long
stTmp = Space$(120)
lgTmp = 119
' On récupère le titre de la fenêtre à partir du handle
lgRet = GetWindowText(lgHwnd, stTmp, lgTmp)
stTmp = Replace(stTmp, Chr$(0), vbNullString)
' Stockage du résultat dans la chaine temporaire (ajout au texte existant).
' On pourrait imaginer construire une chaîne plus complexe en ajoutant également le handle
' de la fenêtre, ce qui permettrait des manipulations externes (comme une fermeture par exemple).
If (Trim$(stTmp) <> vbNullString) Then stGetWindowsList = stGetWindowsList & stTmp & vbCrLf
' Retourne 1 systématiquement
EnumWindowsProc = 1
End Function


GetWindowsDirectory

 Fonction GetWindowsDirectory

Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" ( _
ByVal lpBuffer As String, _
 ByVal nSize As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Permet de connaître le nom du répertoire Windows.
lpBuffer : Chaîne qui recevra en retour le nom du répertoire.
nSize : 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.

Exemple d'utilisation :

Public Function WindowsDirectory() As String
' Retourne le chemin du répertoire windows
Dim stTmp As String, lgTmp As Long
stTmp = Space$(250)
lgTmp = 251
Call GetWindowsDirectory(stTmp, lgTmp)
WindowsDirectory = Split(stTmp, Chr$(0))(0)
End Function


GlobalMemoryStatus

 Fonction GlobalMemoryStatus

Declare Sub GlobalMemoryStatus Lib "kernel32" ( _
lpBuffer As MEMORYSTATUS)
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(Origine : int19h - Int19h@caramail.com)
Cette API permet de savoir la quantité de mémoire physique et virtuelle disponible sur l'ordinateur ainsi que l'espace libre.
Utilise une structure MEMORYSTATUS pour stocker le résultat.
dwLength est la taille de la structure.
dwMemoryLoad est le pourcentage de mémoire actuellement utilisé.
dwTotalPhys est la taille totale de la mémoire physique (en octets).
dwAvailPhys est la taille de la mémoire physique disponible (en octets).
dwTotalPageFile donne la taille totale que peut atteindre le fichier d'échange (en octets).
dwAvailPageFile indique l'espace disponible dans le fichier d'échange (en octets).
dwTotalVirtual retourne la mémoire totale pouvant être utilisée par l'application courante (en octets).
dwAvailVirtual représente l'espace libre totale (en octets).

Type MEMORYSTATUS
dwLength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type

Exemple d'utilisation :

' Exemple par int19h (Int19h@caramail.com)

' Placer le code sur une form vide
Private Sub Form_Load()
Dim Memoire As MEMORYSTATUS
Me.AutoRedraw = True
' Récupère les informations
GlobalMemoryStatus Memoire
' Affiche les informations sur la feuille
Print "Mémoire Physique Totale = ";
Print Format(Memoire.dwTotalPhys, "###,###,### octets ")
Print "Mémoire Physique Libre = ";
Print Format(Memoire.dwAvailPhys, "###,###,### octets");
Print " (" & Int((Memoire.dwAvailPhys / Memoire.dwTotalPhys) * 100) & "% libres)."
End Sub


HiliteMenuItem

 Fonction HiliteMenuItem

Declare Function HiliteMenuItem Lib "user32" ( _
ByVal hwnd As Long, _
 ByVal hMenu As Long, _
 ByVal wIDHiliteItem As Long, _
 ByVal wHilite As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction sert à mettre un menu en surbrillance. Cela ne fonctionne que sur un menu de premier niveau (avec 98, les menus ne sont plus véritablement en surbrillance, mais ont l'impression d'être "enfoncés").
hwnd est un handle sur la fenêtre possédant le menu.
hMenu est un handle sur le menu.
wIDHiliteItem est soit la position, soit l'identifiant de l'item de menu que l'on veut mettre en surbrillance.
wHilite est un ensemble de constante qui indique l'état du menu. Il sert également à indiquer la méthode de référencement du menu (MF_BYCOMMAND ou MF_BYPOSITION, voir GetMenuString). Les autres constantes valides sont données ci-dessous.
Si la fonction réussie, elle retourne 1, en cas d'échec, elle renvoie 0.

Constante | Valeur | Définition
MF_HILITE | &H80& | Met l'élément de menu en surbrillance.
MF_UNHILITE | &H0& | Enlève la surbrillance de l'élément de menu.

Pas d'exemple disponible...


HttpOpenRequest

 Fonction HttpOpenRequest

Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" ( _
ByVal hHttpSession As Long, _
 ByVal sVerb As String, _
 ByVal sObjectName As String, _
 ByVal sVersion As String, _
 ByVal sReferer As String, _
 ByVal something As Long, _
 ByVal lFlags As Long, _
 ByVal lContext As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction permet de créer un pointeur pour une requête de type HTTP.
hHttpSession est un pointeur vers une session Internet (retourné par InternetConnect),
sVerb indique la méthode de dialogue utilisée POST ou GET (par défaut),
sObjectName spécifie l'objet à atteindre (page web, ...),
sVersion permet de préciser la version du protocole (par défaut "HTTP/1.0"),
sReferer est une chaîne qui permet de préciser d'ou vient l'appel courant,
something est un pointeur vers une chaîne indiquant les types de média supportés par le client,
lFlags représente une combinaison de constantes (voir ci-dessous),
lContext est un pointeur vers une valeur définie par l'application.

En cas d'échec, la fonction retourne 0.

Constante | Valeur | Définition
INTERNET_FLAG_EXISTING_CONNECT | &H20000000 | Utilise un objet InternetConnect existant. Utile seulement pour les opérations de type FTP.
INTERNET_FLAG_HYPERLINK | &H400 | Force un rechargement - dans le cas ou il n'y a pas de date d'expiration sur l'élément.
INTERNET_FLAG_IGNORE_CERT_CN_INVALID | &H1000 | Désactive les fonctions de vérification SSL.
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | &H2000 | Désactive la vérification de la validité du certificat de sécurité.
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP | &H8000 | Désactive la détection du passage d'un mode HTTPS vers HTTP.
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS | &H4000 | Désactive la détection du passage d'un mode HTTP vers HTTPS.
INTERNET_FLAG_KEEP_CONNECTION | &H400000 | Laisse la connexion ouverte (mode KEEP_ALIVE).
INTERNET_FLAG_NEED_FILE | &H10 | Force la création d'un fichier temporaire, si le fichier ne peut pas être mis en cache.
INTERNET_FLAG_NO_AUTH | &H40000 | N'effectue pas d'authentification en automatique.
INTERNET_FLAG_NO_AUTO_REDIRECT | &H200000 | Ne tiens pas compte des demandes de redirection.
INTERNET_FLAG_NO_CACHE_WRITE | &H4000000 | N'ajoute pas l'élément retourné dans le cache.
INTERNET_FLAG_NO_COOKIES | &H80000 | Désactive l'utilisation des cookies (blocage en lecture et en écriture).
INTERNET_FLAG_NO_UI | &H200 | Désactive la boîte de dialogue des cookies.
INTERNET_FLAG_PASSIVE | &H8000000 | Utilise le mode passif (accès FTP).
INTERNET_FLAG_PRAGMA_NOCACHE | &H100 | La requête sera effectuée par le serveur d'origine même s'il existe une copie dans le cache.
INTERNET_FLAG_RAW_DATA | &H40000000 | Retourne les données suivant leur structure d'origine, sinon, la fonction retourne une version de type HTML.
INTERNET_FLAG_RELOAD | &H80000000 | Force un chargement à partir du serveur d'origine et non pas depuis le cache.
INTERNET_FLAG_RESYNCHRONIZE | &H800 | Recharge une ressource si elle a été modifié depuis sa dernière récupération.
INTERNET_FLAG_SECURE | &H800000 | Utilise une connexion de type sécurisé (requête HTTP seulement).

Exemple d'utilisation :

Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, _
ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long

Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, _
ByVal sServerName As String, _
ByVal nServerPort As Integer, _
ByVal sUsername As String, _
ByVal sPassword As String, _
ByVal lService As Long, _
ByVal lFlags As Long, _
ByVal lContext As Long) As Long

Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" ( _
ByVal hHttpSession As Long, _
ByVal sVerb As String, _
ByVal sObjectName As String, _
ByVal sVersion As String, _
ByVal sReferer As String, _
ByVal something As Long, _
ByVal lFlags As Long, _
ByVal lContext As Long) As Long

Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" ( _
ByVal hHttpRequest As Long, _
ByVal sHeaders As String, _
ByVal lHeadersLength As Long, _
ByVal sOptional As String, _
ByVal lOptionalLength As Long) As Long

Declare Function InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, _
ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Long

Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" ( _
ByVal hHttpRequest As Long, _
ByVal lInfoLevel As Long, _
ByRef sBuffer As Any, _
ByRef lBufferLength As Long, _
ByRef lIndex As Long) As Integer

Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Const INTERNET_FLAG_SECURE = &H800000
Const INTERNET_FLAG_IGNORE_CERT_CN_INVALID = &H1000
Const INTERNET_FLAG_RELOAD = &H80000000

Const HTTP_QUERY_STATUS_CODE = 19
Const HTTP_QUERY_STATUS_TEXT = 20

Const INTERNET_SERVICE_HTTP = 3

Const INTERNET_OPEN_TYPE_PRECONFIG = 0

Public Enum INTERNET_DEF
INTERNET_DEFAULT_HTTP_PORT = 80
INTERNET_DEFAULT_HTTPS_PORT = 443
End Enum

Public Function UrlPost(stURL As String, stPostData As String, _
stStatusCode As String, stStatusText As String, _
Optional lgInternet As INTERNET_DEF = INTERNET_DEFAULT_HTTP_PORT, _
Optional stUser As String = vbNullString, _
Optional stPass As String = vbNullString) As String
' Cette fonction permet lire le contenu d'une URL.
' Elle permet éventuellement aussi de poster des données sur un formulaire
' et peut fonctionner en mode HTTP et HTTPS
Dim stRead As String * 2048, lgRead As Long
Dim stLoad As String
Dim blDoLoop As Boolean
Dim hISession As Long, hIConnect As Long, hRequest As Long
Dim stUrlDeb As String, stUrlFin As String
Dim stMethod As String
Dim stPost As String
Dim lgFlags As Long, lgRep As Long

' Découpage de l'URL en serveur et fichier
If (InStr(1, stURL, "/") > 0) Then
stUrlDeb = Replace(LCase$(stURL), "http://", vbNullString)
stUrlDeb = Replace(LCase$(stUrlDeb), "https://", vbNullString)
stUrlFin = stUrlDeb
stUrlDeb = Left$(stUrlDeb, InStr(1, stUrlDeb, "/") - 1)
stUrlFin = Mid$(stUrlFin, InStr(1, stUrlFin, "/") + 1)
Else
stUrlDeb = stURL
stUrlFin = vbNullString
End If
' Mise au point de la méthode d'envoi
If (stPostData <> vbNullString) Then
stPost = stPostData
stMethod = "POST"
stLoad = "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Else
stPost = vbNullString
stMethod = "GET"
stLoad = vbNullString
End If
If (lgInternet = INTERNET_DEFAULT_HTTPS_PORT) Then
lgFlags = INTERNET_FLAG_SECURE Or _
INTERNET_FLAG_IGNORE_CERT_CN_INVALID
Else
lgFlags = INTERNET_FLAG_RELOAD
End If

' Mise en place de la connexion Internet
hISession = InternetOpen(stUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, vbNullString, 0)
If CBool(hISession) Then
' Ouverture de la connexion internet
hIConnect = InternetConnect(hISession, _
stUrlDeb, _
lgInternet, _
stUser, _
stPass, _
INTERNET_SERVICE_HTTP, _
0, _
0)
' Préparation de l'ouverture de la page
hRequest = HttpOpenRequest(hIConnect, _
stMethod, _
stUrlFin, _
"HTTP/1.0", _
vbNullString, _
0, _
lgFlags, _
0)
' Lancement de l'URL (avec les paramètres le cas échéant)
lgRep = HttpSendRequest(hRequest, stLoad, Len(stLoad), stPost, Len(stPost))
' Récupération du texte/contenu de la page
blDoLoop = True
stLoad = vbNullString
Do While blDoLoop
stRead = vbNullString
blDoLoop = InternetReadFile(hRequest, stRead, Len(stRead), lgRead)
stLoad = stLoad & Left$(stRead, lgRead)
If Not CBool(lgRead) Then blDoLoop = False
Loop
' Code http de retour (statut)
stStatusCode = Space$(1024)
lgRead = 1024
HttpQueryInfo hRequest, HTTP_QUERY_STATUS_CODE, ByVal stStatusCode, lgRead, 0
stStatusCode = Left$(stStatusCode, lgRead)
' Texte associé
stStatusText = Space$(1024)
lgRead = 1024
HttpQueryInfo hRequest, HTTP_QUERY_STATUS_TEXT, ByVal stStatusText, lgRead, 0
stStatusText = Left$(stStatusText, lgRead)
End If

' Fermeture des connexions
On Error Resume Next
InternetCloseHandle hISession
InternetCloseHandle hIConnect
InternetCloseHandle hRequest
On Error GoTo 0

' Retourne le contenu de la page chargée
UrlPost = stLoad
End Function


HttpQueryInfo

 Fonction HttpQueryInfo

Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" ( _
ByVal hHttpRequest As Long, _
 ByVal lInfoLevel As Long, _
 ByRef sBuffer As Any, _
 ByRef lBufferLength As Long, _
 ByRef lIndex As Long) As Integer
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction sert à récupérer des informations faisant suite à une requête HTTP.
hHttpRequest est le pointeur vers la requête HTTP,
lInfoLevel est une constante représentant l'information que l'on cherche à obtenir (voir tableau ci-dessous),
sBuffer chaîne dans laquelle sera contenue la réponse,
lBufferLength précise la longueur de la chaîne sBuufer,
lIndex pointeur utilisé pour les fonctions d'énumération.

Retourne FAUX en cas d'échec et VRAI en cas de réussite.

Constante | Valeur | Définition
HTTP_QUERY_CONTENT_TYPE | 1 | Récupère le type de contenu (valeur de la zone 'Content-type').
HTTP_QUERY_CONTENT_LENGTH | 5 | Permet de retourner la longueur du contenu.
HTTP_QUERY_EXPIRES | 10 | Lit la date et l'heure d'expiration du document.
HTTP_QUERY_LAST_MODIFIED | 11 | Pour connaître la date de dernière modification du document.
HTTP_QUERY_MIME_VERSION | 0 | Retourne la version du protocole MIME utilisé pour la construction du message.
HTTP_QUERY_VERSION | 18 | Récupère le dernier code de réponse retourné par le serveur.
HTTP_QUERY_STATUS_CODE | 19 | Retourne le dernier code d'état HTTP du serveur (200, 403, 404, ...).
HTTP_QUERY_STATUS_TEXT | 20 | Retourne un texte lié au code d'état HTTP.
HTTP_QUERY_RAW_HEADERS | 21 | Renvoie tous les entêtes du serveur (séparés par des caractères nuls).
HTTP_QUERY_RAW_HEADERS_CRLF | 22 | Renvoie tous les entêtes du serveur (séparés par des sauts de lignes).
HTTP_QUERY_SERVER | 37 | Permet de retourner des informations sur le logiciel utilisé sur le serveur internet.
HTTP_QUERY_USER_AGENT | 39 | Indique le 'User Agent' qui a effectué la requête
HTTP_QUERY_SET_COOKIE | 43 | Retourne la valeur du cookie lié à la requête.
HTTP_QUERY_REQUEST_METHOD | 45 | Lit la méthode utilisée pour la requête (GET ou POST).

Exemple d'utilisation :

Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, _
ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long

Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, _
ByVal sServerName As String, _
ByVal nServerPort As Integer, _
ByVal sUsername As String, _
ByVal sPassword As String, _
ByVal lService As Long, _
ByVal lFlags As Long, _
ByVal lContext As Long) As Long

Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" ( _
ByVal hHttpSession As Long, _
ByVal sVerb As String, _
ByVal sObjectName As String, _
ByVal sVersion As String, _
ByVal sReferer As String, _
ByVal something As Long, _
ByVal lFlags As Long, _
ByVal lContext As Long) As Long

Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" ( _
ByVal hHttpRequest As Long, _
ByVal sHeaders As String, _
ByVal lHeadersLength As Long, _
ByVal sOptional As String, _
ByVal lOptionalLength As Long) As Long

Declare Function InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, _
ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Long

Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" ( _
ByVal hHttpRequest As Long, _
ByVal lInfoLevel As Long, _
ByRef sBuffer As Any, _
ByRef lBufferLength As Long, _
ByRef lIndex As Long) As Integer

Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Const INTERNET_FLAG_SECURE = &H800000
Const INTERNET_FLAG_IGNORE_CERT_CN_INVALID = &H1000
Const INTERNET_FLAG_RELOAD = &H80000000

Const HTTP_QUERY_STATUS_CODE = 19
Const HTTP_QUERY_STATUS_TEXT = 20

Const INTERNET_SERVICE_HTTP = 3

Const INTERNET_OPEN_TYPE_PRECONFIG = 0

Public Enum INTERNET_DEF
INTERNET_DEFAULT_HTTP_PORT = 80
INTERNET_DEFAULT_HTTPS_PORT = 443
End Enum

Public Function UrlPost(stURL As String, stPostData As String, _
stStatusCode As String, stStatusText As String, _
Optional lgInternet As INTERNET_DEF = INTERNET_DEFAULT_HTTP_PORT, _
Optional stUser As String = vbNullString, _
Optional stPass As String = vbNullString) As String
' Cette fonction permet lire le contenu d'une URL.
' Elle permet éventuellement aussi de poster des données sur un formulaire
' et peut fonctionner en mode HTTP et HTTPS
Dim stRead As String * 2048, lgRead As Long
Dim stLoad As String
Dim blDoLoop As Boolean
Dim hISession As Long, hIConnect As Long, hRequest As Long
Dim stUrlDeb As String, stUrlFin As String
Dim stMethod As String
Dim stPost As String
Dim lgFlags As Long, lgRep As Long

' Découpage de l'URL en serveur et fichier
If (InStr(1, stURL, "/") > 0) Then
stUrlDeb = Replace(LCase$(stURL), "http://", vbNullString)
stUrlDeb = Replace(LCase$(stUrlDeb), "https://", vbNullString)
stUrlFin = stUrlDeb
stUrlDeb = Left$(stUrlDeb, InStr(1, stUrlDeb, "/") - 1)
stUrlFin = Mid$(stUrlFin, InStr(1, stUrlFin, "/") + 1)
Else
stUrlDeb = stURL
stUrlFin = vbNullString
End If
' Mise au point de la méthode d'envoi
If (stPostData <> vbNullString) Then
stPost = stPostData
stMethod = "POST"
stLoad = "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Else
stPost = vbNullString
stMethod = "GET"
stLoad = vbNullString
End If
If (lgInternet = INTERNET_DEFAULT_HTTPS_PORT) Then
lgFlags = INTERNET_FLAG_SECURE Or _
INTERNET_FLAG_IGNORE_CERT_CN_INVALID
Else
lgFlags = INTERNET_FLAG_RELOAD
End If

' Mise en place de la connexion Internet
hISession = InternetOpen(stUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, vbNullString, 0)
If CBool(hISession) Then
' Ouverture de la connexion internet
hIConnect = InternetConnect(hISession, _
stUrlDeb, _
lgInternet, _
stUser, _
stPass, _
INTERNET_SERVICE_HTTP, _
0, _
0)
' Préparation de l'ouverture de la page
hRequest = HttpOpenRequest(hIConnect, _
stMethod, _
stUrlFin, _
"HTTP/1.0", _
vbNullString, _
0, _
lgFlags, _
0)
' Lancement de l'URL (avec les paramètres le cas échéant)
lgRep = HttpSendRequest(hRequest, stLoad, Len(stLoad), stPost, Len(stPost))
' Récupération du texte/contenu de la page
blDoLoop = True
stLoad = vbNullString
Do While blDoLoop
stRead = vbNullString
blDoLoop = InternetReadFile(hRequest, stRead, Len(stRead), lgRead)
stLoad = stLoad & Left$(stRead, lgRead)
If Not CBool(lgRead) Then blDoLoop = False
Loop
' Code http de retour (statut)
stStatusCode = Space$(1024)
lgRead = 1024
HttpQueryInfo hRequest, HTTP_QUERY_STATUS_CODE, ByVal stStatusCode, lgRead, 0
stStatusCode = Left$(stStatusCode, lgRead)
' Texte associé
stStatusText = Space$(1024)
lgRead = 1024
HttpQueryInfo hRequest, HTTP_QUERY_STATUS_TEXT, ByVal stStatusText, lgRead, 0
stStatusText = Left$(stStatusText, lgRead)
End If

' Fermeture des connexions
On Error Resume Next
InternetCloseHandle hISession
InternetCloseHandle hIConnect
InternetCloseHandle hRequest
On Error GoTo 0

' Retourne le contenu de la page chargée
UrlPost = stLoad
End Function


HttpSendRequest

 Fonction HttpSendRequest

Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" ( _
ByVal hHttpRequest As Long, _
 ByVal sHeaders As String, _
 ByVal lHeadersLength As Long, _
 ByVal sOptional As String, _
 ByVal lOptionalLength As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction envoie une requête vers un serveur HTTP.
hHttpRequest est un pointeur vers une requête HTTP (obtenu par HttpOpenRequest),
sHeaders permet d'indiquer des entêtes supplémentaires,
lHeadersLength contient la longueur de la chaîne précédente,
sOptional permet d'envoyer des données après les entêtes, utilisé en général pour les requêtes de type POST,
lOptionalLength donne la longueur de la chaîne précédente.

En cas de réussite la fonction retourne VRAI, sinon FAUX.

Exemple d'utilisation :

Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, _
ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long

Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, _
ByVal sServerName As String, _
ByVal nServerPort As Integer, _
ByVal sUsername As String, _
ByVal sPassword As String, _
ByVal lService As Long, _
ByVal lFlags As Long, _
ByVal lContext As Long) As Long

Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" ( _
ByVal hHttpSession As Long, _
ByVal sVerb As String, _
ByVal sObjectName As String, _
ByVal sVersion As String, _
ByVal sReferer As String, _
ByVal something As Long, _
ByVal lFlags As Long, _
ByVal lContext As Long) As Long

Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" ( _
ByVal hHttpRequest As Long, _
ByVal sHeaders As String, _
ByVal lHeadersLength As Long, _
ByVal sOptional As String, _
ByVal lOptionalLength As Long) As Long

Declare Function InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, _
ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Long

Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" ( _
ByVal hHttpRequest As Long, _
ByVal lInfoLevel As Long, _
ByRef sBuffer As Any, _
ByRef lBufferLength As Long, _
ByRef lIndex As Long) As Integer

Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Const INTERNET_FLAG_SECURE = &H800000
Const INTERNET_FLAG_IGNORE_CERT_CN_INVALID = &H1000
Const INTERNET_FLAG_RELOAD = &H80000000

Const HTTP_QUERY_STATUS_CODE = 19
Const HTTP_QUERY_STATUS_TEXT = 20

Const INTERNET_SERVICE_HTTP = 3

Const INTERNET_OPEN_TYPE_PRECONFIG = 0

Public Enum INTERNET_DEF
INTERNET_DEFAULT_HTTP_PORT = 80
INTERNET_DEFAULT_HTTPS_PORT = 443
End Enum

Public Function UrlPost(stURL As String, stPostData As String, _
stStatusCode As String, stStatusText As String, _
Optional lgInternet As INTERNET_DEF = INTERNET_DEFAULT_HTTP_PORT, _
Optional stUser As String = vbNullString, _
Optional stPass As String = vbNullString) As String
' Cette fonction permet lire le contenu d'une URL.
' Elle permet éventuellement aussi de poster des données sur un formulaire
' et peut fonctionner en mode HTTP et HTTPS
Dim stRead As String * 2048, lgRead As Long
Dim stLoad As String
Dim blDoLoop As Boolean
Dim hISession As Long, hIConnect As Long, hRequest As Long
Dim stUrlDeb As String, stUrlFin As String
Dim stMethod As String
Dim stPost As String
Dim lgFlags As Long, lgRep As Long

' Découpage de l'URL en serveur et fichier
If (InStr(1, stURL, "/") > 0) Then
stUrlDeb = Replace(LCase$(stURL), "http://", vbNullString)
stUrlDeb = Replace(LCase$(stUrlDeb), "https://", vbNullString)
stUrlFin = stUrlDeb
stUrlDeb = Left$(stUrlDeb, InStr(1, stUrlDeb, "/") - 1)
stUrlFin = Mid$(stUrlFin, InStr(1, stUrlFin, "/") + 1)
Else
stUrlDeb = stURL
stUrlFin = vbNullString
End If
' Mise au point de la méthode d'envoi
If (stPostData <> vbNullString) Then
stPost = stPostData
stMethod = "POST"
stLoad = "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Else
stPost = vbNullString
stMethod = "GET"
stLoad = vbNullString
End If
If (lgInternet = INTERNET_DEFAULT_HTTPS_PORT) Then
lgFlags = INTERNET_FLAG_SECURE Or _
INTERNET_FLAG_IGNORE_CERT_CN_INVALID
Else
lgFlags = INTERNET_FLAG_RELOAD
End If

' Mise en place de la connexion Internet
hISession = InternetOpen(stUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, vbNullString, 0)
If CBool(hISession) Then
' Ouverture de la connexion internet
hIConnect = InternetConnect(hISession, _
stUrlDeb, _
lgInternet, _
stUser, _
stPass, _
INTERNET_SERVICE_HTTP, _
0, _
0)
' Préparation de l'ouverture de la page
hRequest = HttpOpenRequest(hIConnect, _
stMethod, _
stUrlFin, _
"HTTP/1.0", _
vbNullString, _
0, _
lgFlags, _
0)
' Lancement de l'URL (avec les paramètres le cas échéant)
lgRep = HttpSendRequest(hRequest, stLoad, Len(stLoad), stPost, Len(stPost))
' Récupération du texte/contenu de la page
blDoLoop = True
stLoad = vbNullString
Do While blDoLoop
stRead = vbNullString
blDoLoop = InternetReadFile(hRequest, stRead, Len(stRead), lgRead)
stLoad = stLoad & Left$(stRead, lgRead)
If Not CBool(lgRead) Then blDoLoop = False
Loop
' Code http de retour (statut)
stStatusCode = Space$(1024)
lgRead = 1024
HttpQueryInfo hRequest, HTTP_QUERY_STATUS_CODE, ByVal stStatusCode, lgRead, 0
stStatusCode = Left$(stStatusCode, lgRead)
' Texte associé
stStatusText = Space$(1024)
lgRead = 1024
HttpQueryInfo hRequest, HTTP_QUERY_STATUS_TEXT, ByVal stStatusText, lgRead, 0
stStatusText = Left$(stStatusText, lgRead)
End If

' Fermeture des connexions
On Error Resume Next
InternetCloseHandle hISession
InternetCloseHandle hIConnect
InternetCloseHandle hRequest
On Error GoTo 0

' Retourne le contenu de la page chargée
UrlPost = stLoad
End Function


InflateRect

 Fonction InflateRect

Declare Function InflateRect Lib "user32" Alias "InflateRect" ( _
lpRect As RECT, _
 ByVal x As Long, _
 ByVal y As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet d'augmenter ou diminuer la largeur ou la hauteur d'un rectangle.
lpRect est une structure RECT identifiant un rectangle.
x est la valeur à ajouter ou à enlever à la largeur du rectangle (valeur positive ou négative).
y est la valeur à ajouter ou à enlever à la hauteur du rectangle (valeur positive ou négative).

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Pas d'exemple disponible...


InternetCloseHandle

 Fonction InternetCloseHandle

Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction ferme (libère) un pointeur vers une connexion internet.
hInet est le pointeur à fermer.

Retourne Vrai si la fonction réussie, sinon Faux.

Il est important de bien libérer chaque pointeur qui est ouvert. Ne pas effectuer de fermeture peut mettre le système dans un état instable.

Exemple d'utilisation :

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long
Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" ( _
ByVal hInternetSession As Long, ByVal sUrl As String, _
ByVal sHeaders As String, ByVal lHeadersLength As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Public Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000 ' Pas d'écriture en cache

Public Function GetUrlFile(stUrl As String) As String
' Récupère le contenu d'une page/d'un fichier sur internet
Dim lgInternet As Long, lgSession As Long
Dim stBuf As String * 1024
Dim inRes As Integer
Dim lgRet As Long
Dim stTotal As String
stTotal = vbNullString
' Récupère un pointeur vers la connexion internet courante
lgSession = InternetOpen("VBTagEdit", 1, vbNullString, vbNullString, 0)
If lgSession Then
' Récupère un pointeur vers l'URL
lgInternet = InternetOpenUrl(lgSession, stUrl, vbNullString, _
0, INTERNET_FLAG_NO_CACHE_WRITE, 0)
If lgInternet Then
Do
' Lecture de la page dans le buffer (par bloc de 1024)
inRes = InternetReadFile(lgInternet, stBuf, 1024, lgRet)
stTotal = stTotal & Mid$(stBuf, 1, lgRet)
Loop While (lgRet <> 0)
End If
' Libération du pointeur
inRes = InternetCloseHandle(lgInternet)
End If
' Retourne le résultat
GetUrlFile = stTotal
End Function


InternetConnect

 Fonction InternetConnect

Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, _
 ByVal sServerName As String, _
 ByVal nServerPort As Integer, _
 ByVal sUsername As String, _
 ByVal sPassword As String, _
 ByVal lService As Long, _
 ByVal lFlags As Long, _
 ByVal lContext As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction ouvre une session FTP, Gopher, ou HTTP sur site donné.
hInternetSession est un pointeur vers une session internet valide (ouvert avec InternetOpen).
sServerName contient le nom du serveur vers lequel s'effectue la connexion (cela peut être une adresse IP).
nServerPort représente le numéro de port utilisé pour la connexion (tableau de constante ci-dessous).
sUsername est le nom d'utilisateur/login.
sPassword est le mot de passe associé à l'utilisateur.
lService indique le type de service auquel on cherche à se connecter, parmis les constantes du second tableau.
lFlags peut contenir INTERNET_FLAG_PASSIVE dans le cas d'une connexion FTP.
lContext est un pointeur permettant d'identifier le contexte de l'application (pour les fonctions de callback).

Si elle réussit, la fonction retourne un pointeur vers la session ouverte, sinon elle renvoie une valeur nulle. On peut s'assurer qu'il ne s'agit pas d'un problème de droit d'accès avec la fonction InternetGetLastResponseInfo.

Constante | Valeur | Définition
INTERNET_DEFAULT_FTP_PORT | 21 | Port FTP par défaut.
INTERNET_DEFAULT_GOPHER_PORT | 70 | Port Gopher par défaut.
INTERNET_DEFAULT_HTTP_PORT | 80 | Port HTTP par défaut.
INTERNET_DEFAULT_HTTPS_PORT | 443 | Port HTTPS par défaut.
INTERNET_DEFAULT_SOCKS_PORT | 1080 | Port Socks (firewall) par défaut.
INTERNET_SERVICE_FTP | 1 | Service FTP.
INTERNET_SERVICE_GOPHER | 2 | Service Gopher.
INTERNET_SERVICE_HTTP | 3 | Service HTTP.

Exemple d'utilisation :

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long

Public Declare Function InternetConnect Lib "wininet.dll" _
Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long

Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean

Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" ( _
ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, _
ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean

Public Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Public Const INTERNET_DEFAULT_FTP_PORT = 21
Public Const INTERNET_SERVICE_FTP = 1

Public Enum eTRANSFERT_TYPE
FTP_TRANSFER_TYPE_ASCII = &H1
FTP_TRANSFER_TYPE_BINARY = &H2
End Enum

Private Function PutFtpFile(stServ As String, stLogin As String, stPass As String, _
stRepFtp As String, stFicFtp As String, _
stFicLocal As String, lgType As eTRANSFERT_TYPE) As Boolean
' Cette fonction charge un fichier local sur un serveur FTP.
' stServ contient le nom ou l'adresse IP du serveur FTP
' stLogin est le login à utiliser
' stPass est le mot de passe associé au login
' stRepFtp est le répertoire FTP ou sera placé le fichier ("/" pour la racine)
' stFicFtp est le nom qui sera donné au fichier sur le serveur
' stFicLocal est le chemin complet (+nom) du fichier local
' lgType est le type de transfert à utiliser (texte ou binaire)
' La fonction retourne Vrai si le transfert à réussi, sinon Faux.
Dim lgFtp As Long, lgSession As Long, lgDir As Long
Dim inRes As Integer
Dim blOk As Boolean
blOk = False
' Récupère un pointeur vers la connexion internet courante
lgSession = InternetOpen("PutFtpFile", 1, vbNullString, vbNullString, 0)
If lgSession Then
' Récupère un pointeur vers pour session FTP
lgFtp = InternetConnect(lgSession, stServ, INTERNET_DEFAULT_FTP_PORT, _
stLogin, stPass, INTERNET_SERVICE_FTP, 0, 0)
If lgFtp Then
' Positionne le répertoire distant
If FtpSetCurrentDirectory(lgFtp, stRepFtp) Then
' Envoie le fichier
blOk = FtpPutFile(lgFtp, stFicLocal, stFicFtp, _
FTP_TRANSFER_TYPE_ASCII, 0)
End If
End If
' Libération du pointeur
inRes = InternetCloseHandle(lgFtp)
End If
' Retourne le résultat
PutFtpFile = blOk
End Function


InternetOpenUrl

 Fonction InternetOpenUrl

Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" ( _
ByVal hInternetSession As Long, _
 ByVal sUrl As String, _
 ByVal sHeaders As String, _
 ByVal lHeadersLength As Long, _
 ByVal lFlags As Long, _
 ByVal lContext As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction effectue l'ouverture d'une URL.
hInternetSession est un pointeur vers la connexion internet courante (obtenu par InternetOpen).
sUrl est la chaîne représentant l'URL à ouvrir.
sHeaders contient les entêtes qui seront envoyés au serveur HTTP.
lHeadersLength donne la longueur de la chaîne précédente.
lFlags contient une valeur constante du tableau ci-dessous.
lContext est une valeur qui pourra être transmise à une fonction de callback (dans le cas ou on en utilise une).

La fonction retourne un pointeur vers l'URL si la connexion a pu être établie, sinon, elle retourne une valeur nulle.

Constante | Valeur | Définition
INTERNET_FLAG_EXISTING_CONNECT | &H20000000 | Utilise un objet InternetConnect existant. Utile seulement pour les opérations de type FTP.
INTERNET_FLAG_HYPERLINK | &H400 | Force un rechargement - dans le cas ou il n'y a pas de date d'expiration sur l'élément.
INTERNET_FLAG_IGNORE_CERT_CN_INVALID | &H1000 | Désactive les fonctions de vérification SSL.
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | &H2000 | Désactive la vérification de la validité du certificat de sécurité.
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP | &H8000 | Désactive la détection du passage d'un mode HTTPS vers HTTP.
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS | &H4000 | Désactive la détection du passage d'un mode HTTP vers HTTPS.
INTERNET_FLAG_KEEP_CONNECTION | &H400000 | Laisse la connexion ouverte (mode KEEP_ALIVE).
INTERNET_FLAG_NEED_FILE | &H10 | Force la création d'un fichier temporaire, si le fichier ne peut pas être mis en cache.
INTERNET_FLAG_NO_AUTH | &H40000 | N'effectue pas d'authentification en automatique.
INTERNET_FLAG_NO_AUTO_REDIRECT | &H200000 | Ne tiens pas compte des demandes de redirection.
INTERNET_FLAG_NO_CACHE_WRITE | &H4000000 | N'ajoute pas l'élément retourné dans le cache.
INTERNET_FLAG_NO_COOKIES | &H80000 | Désactive l'utilisation des cookies (blocage en lecture et en écriture).
INTERNET_FLAG_NO_UI | &H200 | Désactive la boîte de dialogue des cookies.
INTERNET_FLAG_PASSIVE | &H8000000 | Utilise le mode passif (accès FTP).
INTERNET_FLAG_PRAGMA_NOCACHE | &H100 | La requête sera effectuée par le serveur d'origine même s'il existe une copie dans le cache.
INTERNET_FLAG_RAW_DATA | &H40000000 | Retourne les données suivant leur structure d'origine, sinon, la fonction retourne une version de type HTML.
INTERNET_FLAG_RELOAD | &H80000000 | Force un chargement à partir du serveur d'origine et non pas depuis le cache.
INTERNET_FLAG_RESYNCHRONIZE | &H800 | Recharge une ressource si elle a été modifié depuis sa dernière récupération.
INTERNET_FLAG_SECURE | &H800000 | Utilise une connexion de type sécurisé (requête HTTP seulement).

Exemple d'utilisation :

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long
Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" ( _
ByVal hInternetSession As Long, ByVal sUrl As String, _
ByVal sHeaders As String, ByVal lHeadersLength As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Public Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000 ' Pas d'écriture en cache

Public Function GetUrlFile(stUrl As String) As String
' Récupère le contenu d'une page/d'un fichier sur internet
Dim lgInternet As Long, lgSession As Long
Dim stBuf As String * 1024
Dim inRes As Integer
Dim lgRet As Long
Dim stTotal As String
stTotal = vbNullString
' Récupère un pointeur vers la connexion internet courante
lgSession = InternetOpen("VBTagEdit", 1, vbNullString, vbNullString, 0)
If lgSession Then
' Récupère un pointeur vers l'URL
lgInternet = InternetOpenUrl(lgSession, stUrl, vbNullString, _
0, INTERNET_FLAG_NO_CACHE_WRITE, 0)
If lgInternet Then
Do
' Lecture de la page dans le buffer (par bloc de 1024)
inRes = InternetReadFile(lgInternet, stBuf, 1024, lgRet)
stTotal = stTotal & Mid$(stBuf, 1, lgRet)
Loop While (lgRet <> 0)
End If
' Libération du pointeur
inRes = InternetCloseHandle(lgInternet)
End If
' Retourne le résultat
GetUrlFile = stTotal
End Function


InternetOpen

 Fonction InternetOpen

Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, _
 ByVal lAccessType As Long, _
 ByVal sProxyName As String, _
 ByVal sProxyBypass As String, _
 ByVal lFlags As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction retourne un pointeur vers la connexion internet courante.
sAgent est une chaîne indiquant le nom de l'application initiant le dialogue.
lAccessType indique le type d'accès désiré. Voir le tableau des constantes autorisée plus bas.
sProxyName donne le nom du proxy à utiliser. Uniquement si l'accès utilise la constante INTERNET_OPEN_TYPE_PROXY.
sProxyBypass contient une liste d'adresse à ne pas prendre en compte pour un accès par proxy. Uniquement avec INTERNET_OPEN_TYPE_PROXY.
lFlags peut contenir une combinaison de constante ci-dessous (INTERNET_FLAG_xxx).
Si la fonction échoue, elle retourne une valeur nulle, sinon elle retourne un pointeur vers la connexion courante.

Constante | Valeur | Définition
INTERNET_FLAG_ASYNC | &H10000000 | Les requêtes sont effectuées en asynchrones.
INTERNET_FLAG_FROM_CACHE | &H1000000 | Les requêtes sont effectuées à partir du cache, si l'élément n'est pas dans le cache, une erreur est retournée.
INTERNET_FLAG_OFFLINE | &H1000000 | Identique à INTERNET_FLAG_FROM_CACHE.
INTERNET_OPEN_TYPE_DIRECT | 1 | Résoud les noms en local.
INTERNET_OPEN_TYPE_PRECONFIG | 0 | Récupère la configuration par défaut (base de registre).
INTERNET_OPEN_TYPE_PROXY | 3 | Envoi des requêtes au proxy, sauf pour les exceptions indiquées dans sProxyBypass.

Exemple d'utilisation :

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long
Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" ( _
ByVal hInternetSession As Long, ByVal sUrl As String, _
ByVal sHeaders As String, ByVal lHeadersLength As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Public Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000 ' Pas d'écriture en cache

Public Function GetUrlFile(stUrl As String) As String
' Récupère le contenu d'une page/d'un fichier sur internet
Dim lgInternet As Long, lgSession As Long
Dim stBuf As String * 1024
Dim inRes As Integer
Dim lgRet As Long
Dim stTotal As String
stTotal = vbNullString
' Récupère un pointeur vers la connexion internet courante
lgSession = InternetOpen("VBTagEdit", 1, vbNullString, vbNullString, 0)
If lgSession Then
' Récupère un pointeur vers l'URL
lgInternet = InternetOpenUrl(lgSession, stUrl, vbNullString, _
0, INTERNET_FLAG_NO_CACHE_WRITE, 0)
If lgInternet Then
Do
' Lecture de la page dans le buffer (par bloc de 1024)
inRes = InternetReadFile(lgInternet, stBuf, 1024, lgRet)
stTotal = stTotal & Mid$(stBuf, 1, lgRet)
Loop While (lgRet <> 0)
End If
' Libération du pointeur
inRes = InternetCloseHandle(lgInternet)
End If
' Retourne le résultat
GetUrlFile = stTotal
End Function


InternetReadFile

 Fonction InternetReadFile

Declare Function InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, _
 ByVal sBuffer As String, _
 ByVal lNumBytesToRead As Long, _
 lNumberOfBytesRead As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Lecture des données à partir d'un pointeur ouvert par InternetOpenUrl (FtpOpenFile, GopherOpenFile, ou HttpOpenRequest).
hFile contient le pointeur vers l'URL.
sBuffer est la chaîne qui recevra les données.
lNumBytesToRead représente le nombre d'octets à lire.
lNumberOfBytesRead donne le nombre d'octets réellement lus.

La fonction retourne "Vrai" en cas de succès, sinon "Faux".

Exemple d'utilisation :

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long
Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" ( _
ByVal hInternetSession As Long, ByVal sUrl As String, _
ByVal sHeaders As String, ByVal lHeadersLength As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Public Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000 ' Pas d'écriture en cache

Public Function GetUrlFile(stUrl As String) As String
' Récupère le contenu d'une page/d'un fichier sur internet
Dim lgInternet As Long, lgSession As Long
Dim stBuf As String * 1024
Dim inRes As Integer
Dim lgRet As Long
Dim stTotal As String
stTotal = vbNullString
' Récupère un pointeur vers la connexion internet courante
lgSession = InternetOpen("VBTagEdit", 1, vbNullString, vbNullString, 0)
If lgSession Then
' Récupère un pointeur vers l'URL
lgInternet = InternetOpenUrl(lgSession, stUrl, vbNullString, _
0, INTERNET_FLAG_NO_CACHE_WRITE, 0)
If lgInternet Then
Do
' Lecture de la page dans le buffer (par bloc de 1024)
inRes = InternetReadFile(lgInternet, stBuf, 1024, lgRet)
stTotal = stTotal & Mid$(stBuf, 1, lgRet)
Loop While (lgRet <> 0)
End If
' Libération du pointeur
inRes = InternetCloseHandle(lgInternet)
End If
' Retourne le résultat
GetUrlFile = stTotal
End Function


IntersectRect

 Fonction IntersectRect

Declare Function IntersectRect Lib "user32" ( _
lpDestRect As RECT, _
 lpSrc1Rect As RECT, _
 lpSrc2Rect As RECT) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction calcule et retourne dans une structure RECT, l'intersection des deux autres rectangles passés en paramêtre.
lpDestRect est la structure qui recoit le résultat.
lpSrc1Rect et lpSrc2Rect sont les deux rectangles dont il faut calculer l'intersection.
La fonction retourne Vrai si elle a réussi, sinon, False.

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Pas d'exemple disponible...


IsCharAlphaNumeric

 Fonction IsCharAlphaNumeric

Declare Function IsCharAlphaNumeric Lib "user32" Alias "IsCharAlphaNumericA" ( _
ByVal cChar As Byte) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction indique si un caractère est de type alphanumérique.
cChar est le code ASCII du caractère à tester.
La fonction retourne 1 si le caractère est alphanumérique, sinon 0.

Exemple d'utilisation :

' Exemple d'utilisation pour les fonctions API :
' IsCharAlpha, IsCharAlphaNumeric, IsCharLower IsCharUpper
Public Sub TestCaractere(stCaractere As String)
Dim btCar As Byte
Dim stResultat As String
stResultat = vbNullString
btCar = Asc(stCaractere)
If IsCharAlpha(btCar) Then
stResultat = "Caractère alphabétique"
End If
If IsCharAlphaNumeric(btCar) Then
stResultat = stResultat & "Caractère alphanumérique"
End If
If IsCharLower(btCar) Then
stResultat = stResultat & "Caractère minuscule"
End If
If IsCharUpper(btCar) Then
stResultat = stResultat & "Caractère majuscule"
End If
MsgBox stResultat
End Sub


IsCharAlpha

 Fonction IsCharAlpha

Declare Function IsCharAlpha Lib "user32" Alias "IsCharAlphaA" ( _
ByVal cChar As Byte) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction indique si un caractère est de type alphabétique (a-z,A-Z).
cChar est le code ASCII du caractère à tester.
La fonction retourne 1 si le caractère est alphabétique, sinon 0.

Exemple d'utilisation :

' Exemple d'utilisation pour les fonctions API :
' IsCharAlpha, IsCharAlphaNumeric, IsCharLower IsCharUpper
Public Sub TestCaractere(stCaractere As String)
Dim btCar As Byte
Dim stResultat As String
stResultat = vbNullString
btCar = Asc(stCaractere)
If IsCharAlpha(btCar) Then
stResultat = "Caractère alphabétique"
End If
If IsCharAlphaNumeric(btCar) Then
stResultat = stResultat & "Caractère alphanumérique"
End If
If IsCharLower(btCar) Then
stResultat = stResultat & "Caractère minuscule"
End If
If IsCharUpper(btCar) Then
stResultat = stResultat & "Caractère majuscule"
End If
MsgBox stResultat
End Sub


IsCharLower

 Fonction IsCharLower

Declare Function IsCharLower Lib "user32" Alias "IsCharLowerA" ( _
ByVal cChar As Byte) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction indique si un caractère est en minuscule.
cChar est le code ASCII du caractère à tester.
La fonction retourne 1 si le caractère est en minuscule, sinon 0.

Exemple d'utilisation :

' Exemple d'utilisation pour les fonctions API :
' IsCharAlpha, IsCharAlphaNumeric, IsCharLower IsCharUpper
Public Sub TestCaractere(stCaractere As String)
Dim btCar As Byte
Dim stResultat As String
stResultat = vbNullString
btCar = Asc(stCaractere)
If IsCharAlpha(btCar) Then
stResultat = "Caractère alphabétique"
End If
If IsCharAlphaNumeric(btCar) Then
stResultat = stResultat & "Caractère alphanumérique"
End If
If IsCharLower(btCar) Then
stResultat = stResultat & "Caractère minuscule"
End If
If IsCharUpper(btCar) Then
stResultat = stResultat & "Caractère majuscule"
End If
MsgBox stResultat
End Sub


IsCharUpper

 Fonction IsCharUpper

Declare Function IsCharUpper Lib "user32" Alias "IsCharUpperA" ( _
ByVal cChar As Byte) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction indique si un caractère est en majuscule.
cChar est le code ASCII du caractère à tester.
La fonction retourne 1 si le caractère est en majuscule, sinon 0.

Exemple d'utilisation :

' Exemple d'utilisation pour les fonctions API :
' IsCharAlpha, IsCharAlphaNumeric, IsCharLower IsCharUpper
Public Sub TestCaractere(stCaractere As String)
Dim btCar As Byte
Dim stResultat As String
stResultat = vbNullString
btCar = Asc(stCaractere)
If IsCharAlpha(btCar) Then
stResultat = "Caractère alphabétique"
End If
If IsCharAlphaNumeric(btCar) Then
stResultat = stResultat & "Caractère alphanumérique"
End If
If IsCharLower(btCar) Then
stResultat = stResultat & "Caractère minuscule"
End If
If IsCharUpper(btCar) Then
stResultat = stResultat & "Caractère majuscule"
End If
MsgBox stResultat
End Sub


IsChild

 Fonction IsChild

Declare Function IsChild Lib "user32" Alias "IsChild" ( _
ByVal hWndParent As Long, _
 ByVal hwnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de savoir si une fenêtre est fille ou appartient à la descendance d'une autre.
hWndParent est le handle de la fenêtre d'origine.
hwnd est le handle de la fenêtre à tester.
Si la seconde fenêtre fait partie de la descendance de la première la fonction retourne "Vrai", sinon "Faux".

Pas d'exemple disponible...


IsIconic

 Fonction IsIconic

Declare Function IsIconic Lib "user32" Alias "IsIconic" ( _
ByVal hwnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de savoir si fonction est actuellement minimisée (en icône sous Win 3.x, ou dans la barre des tâches sous Win 9x).
hwnd est le handle de la fenêtre à tester.
La fonction retourne Vrai si la fenêtre est réduite sinon Faux.

Pas d'exemple disponible...


IsWindowVisible

 Fonction IsWindowVisible

Declare Function IsWindowVisible Lib "user32" ( _
ByVal hWnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de savoir si une fenêtre est visible ou non, même cachée par d'autres. Elle retourne 'Vrai' si la fenêtre est effectivement visible, sinon 'Faux'.

Pas d'exemple disponible...


IsWindow

 Fonction IsWindow

Declare Function IsWindow Lib "user32" Alias "IsWindow" ( _
ByVal hwnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction vous permet de savoir à tout moment si la fenêtre dont le handle est passé en paramêtre est toujours valide.

Pas d'exemple disponible...


IsZoomed

 Fonction IsZoomed

Declare Function IsZoomed Lib "user32" ( _
ByVal hwnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne 1 si la fenêtre dont le handle est passé en paramêtre est agrandie, sinon elle renvoie 0 (revient à tester un WindowState = vbMaximized sous VB).

Pas d'exemple disponible...


LineTo

 Fonction LineTo

Declare Function LineTo Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal x As Long, _
 ByVal y As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction dessine un trait depuis la position courante jusqu'à un point donné.
hdc est un pointeur vers un contexte de périphérique.
x et y indiquent la position du point d'arrivée du trait à dessiner.

Si la fonction échoue, elle retourne 0.
Pour modifier la position du point d'insertion courant, utiliser la fonction MoveToEx.

Pas d'exemple disponible...


LoadCursorFromFile

 Fonction LoadCursorFromFile

Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" ( _
ByVal lpFileName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.5
. Windows 2000/XP : Oui

Description :
Cette fonction charge un icône à partir d'un fichier (extension CUR ou ANI). Elle retourne un pointeur sur l'icône, ou 0 si la fonction échoue.
lpFileName désigne le fichier à charger.
lpFileName peut également désigner une constante (voir ci-dessous) qui correspond à une entrée dans le fichier "WIN.INI", dans la section [cursors]. Si l'entrée n'existe pas dans le fichier, la fonction échoue.

Constante | Valeur | Définition
OCR_CROSS | 32515 | "Crosshair" - Croix (en forme de X).
OCR_IBEAM | 32513 | "IBeam" - Curseur de saisie (en forme de I).
OCR_APPSTARTING | 32650 | "AppStarting" - Flèche + Sablier.
OCR_NO | 32648 | "No" - Symbôle interdiction.
OCR_NORMAL | 32512 | "Arrow" - Curseur par défaut (flèche).
OCR_SIZE | 32640 | "Size" - Flèches en croix (en forme de +).
OCR_SIZEALL | 32646 | "SizeAll" - Flèches en croix (en forme de +).
OCR_SIZENESW | 32643 | "SizeNESW" - Flèche Nord,Est-Sud,Ouest.
OCR_SIZENS | 32645 | "SizeNS" - Flèche Nord-Sud.
OCR_SIZENWSE | 32642 | "SizeNWSE" - Flèche Nord,Ouest-Sud,Est.
OCR_SIZEWE | 32644 | "SizeWE" - Flèche Ouest-Est.
OCR_UP | 32516 | "UpArrow" - Flèche pointant vers le haut.
OCR_WAIT | 32514 | "Wait" - Sablier.

Pas d'exemple disponible...


LockWindowUpdate

 Fonction LockWindowUpdate

Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" ( _
ByVal hwndLock As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de désactiver (ou réactiver) le rafraîchissement d'une fenêtre (une seule fenêtre à la fois peut être bloquée).
hwndLock est le handle de la fenêtre à bloquer. Pour la débloquer, il suffit de rappeler la fonction avec la valeur 0.
Si la fonction échoue elle retourne 0, sinon une valeur différente de 0.

Exemple d'utilisation :

Private Sub txtTexte_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then
' Evite l'aspect grisé de la zone en bloquant la mise à jour
LockWindowUpdate txtTexte.hwnd
' La zone bloqué n'affiche plus de menu contextuel automatique
txtTexte.Enabled = False
' On laisse le temps au système de travailler
DoEvents
' Affiche de mon menu contextuel
PopupMenu mdiFrontal.mnuPopupTexte
' Autorise à nouveau le contrôle
txtTexte.Enabled = True
' Débloque les mises à jour
LockWindowUpdate 0
' Remise en place du focus sur le texte
txtTexte.SetFocus
End If
End Sub


LockWorkStation

 Fonction LockWorkStation

Declare Sub LockWorkStation Lib "user32" ()
Versions :
. Windows 95/98 : Non
. Windows NT : Non
. Windows 2000/XP : Oui

Description :
(Contribution de int19h "int19h@caramail.com")

LockWorkStation permet de vérrouiller très simplement un PC. Cette fonction équivaut à faire [Control]+[Alt]+[Suppr], puis à cliquer sur "Vérrouiller l'ordinateur".

Disponible uniquement sous Windows 2000 (et plus).

Pas d'exemple disponible...


MessageBeep

 Fonction MessageBeep

Declare Function MessageBeep Lib "user32" ( _
ByVal wType As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de jouer un son standard Windows.
uType est une constante du tableau ci-dessous.

Elle retourne 0 en cas d'échec.
Le son est joué de manière asynchrone.

Constante | Valeur | Définition
MB_ICONHAND | &H10& | Son "Arrêt critique".
MB_ICONQUESTION | &H20& | Son "Question".
MB_ICONEXCLAMATION | &H30& | Son "Exclamation".
MB_ICONASTERISK | &H40& | Son "Astérisque".

Pas d'exemple disponible...


MoveToEx

 Fonction MoveToEx

Declare Function MoveToEx Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal x As Long, _
 ByVal y As Long, _
 lpPoint As POINTAPI) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de déplacer la position du point d'insertion graphique courant (par défaut sa position est 0,0).
hdc est un pointeur vers un contexte de périphérique.
x et y sont les nouvelles coordonnées du point.
lpPoint reçoit l'ancienne position du point.

Si la fonction échoue, elle retourne 0.

Type POINTAPI
x As Long
y As Long
End Type

Pas d'exemple disponible...


MoveWindow

 Fonction MoveWindow

Declare Function MoveWindow Lib "user32" ( _
ByVal hWnd As Long, _
 ByVal x As Long, _
 ByVal y As Long, _
 ByVal nWidth As Long, _
 ByVal nHeight As Long, _
 ByVal bRepaint As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction vous avez la possibilité de déplacer une fenêtre et de la redimensionner. Sélectionnez la fenêtre avec son Handle, puis entrez la nouvelle position du coin haut/gauche dans les variables x et y. Vous pouvez indiquer de la même manière les nouvelles dimensions de la fenêtre à l'aide des variables nWidth et nHeight. bRepaint doit être mis à 'Vrai' si vous voulez que la fenêtre soit rafraîchie avec les nouveaux paramêtres.
Attention x et y sont pris par rapport au coin haut/gauche de l'écran, mais dans le cas d'une fenêtre à l'intérieure d'une MDI c'est en fonction du coin haut/gauche de la fenêtre principale que la position sera calculée.

Pas d'exemple disponible...


OpenIcon

 Fonction OpenIcon

Declare Function OpenIcon Lib "user32" ( _
ByVal hwnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction remet une fenêtre réduite dans son état normal (taille et position) et l'active.
hwnd est le handle de la fenêtre à agrandir.
Si la fonction échoue elle retourne 0, sinon une valeur non nulle.

Pas d'exemple disponible...


OpenPrinter

 Fonction OpenPrinter

Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" ( _
ByVal pPrinterName As String, _
 phPrinter As Long, _
 pDefault As PRINTER_DEFAULTS) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne un pointeur vers une imprimante spécifique.
pPrinterName est le nom de l'imprimante dont on cherche à récupérer un pointeur,
phPrinter est la variable de retour qui contient le pointeur,
pDefault est une structure qui définit l'accès à l'imprimante (voir ci-dessous).
Si la fonction échoue, elle retourne 0.

Type PRINTER_DEFAULTS
pDatatype As String
pDevMode As DEVMODE
DesiredAccess As Long
End Type

Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Long
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

Constante | Valeur | Définition
CCHDEVICENAME | 32 | Nombre de caractère pour le nom du périphérique.
CCHFORMNAME | 32 | Nombre de caractère pour le nom de la fenêtre.

Exemple d'utilisation :

' Ne pas oublier les déclarations de types de de constantes.
' Le code suivant ouvre simplement la fenêtre des propriétés
' de l'imprimante courante.
Dim lgRep As Long, lgHnd As Long, tyPrinter As PRINTER_DEFAULTS
lgRep = OpenPrinter(Printer.DeviceName, lgHnd, tyPrinter)
If (lgRep <> 0) Then
lgRep = PrinterProperties(Me.hwnd, lgHnd)
ClosePrinter lgHnd
End If


PaintDesktop

 Fonction PaintDesktop

Declare Function PaintDesktop Lib "user32" ( _
ByVal hdc As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction copie vers une zone définie l'image de fond du bureau.
hdc est un pointeur vers le contrôle d'affichage.
La fonction retourne une valeur différente de 0 en cas de réussite.

Exemple d'utilisation :

Dim lgRep As Long
Me.AutoRedraw = True
' Affiche sur le fond de la fenêtre le fond du bureau
lgRep = PaintDesktop(Me.hdc)
Me.Refresh
' Place ensuite le fond dans un contrôle image pour visualiser
' le tout en entier
Image1.Stretch = True
Set Image1.Picture = Me.Image


PrinterProperties

 Fonction PrinterProperties

Declare Function PrinterProperties Lib "winspool.drv" ( _
ByVal hwnd As Long, _
 ByVal hPrinter As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Affiche la fenêtre des propriétés de l'imprimante spécifiée.
hwnd est un pointeur vers la fenêtre appelante.
hPrinter est un pointeur vers l'imprimante sélectionnée (ouvert avec OpenPrinter).
Si la fonction échoue, elle retourne 0.

Exemple d'utilisation :

' Ne pas oublier les déclarations de types de de constantes.
' Le code suivant ouvre simplement la fenêtre des propriétés
' de l'imprimante courante.
Dim lgRep As Long, lgHnd As Long, tyPrinter As PRINTER_DEFAULTS
lgRep = OpenPrinter(Printer.DeviceName, lgHnd, tyPrinter)
If (lgRep <> 0) Then
lgRep = PrinterProperties(Me.hwnd, lgHnd)
ClosePrinter lgHnd
End If


PtInRect

 Fonction PtInRect

Declare Function PtInRect Lib "user32" ( _
lpRect As RECT, _
 pt As POINTAPI) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonctionne vérifie si un point se trouve à l'intérieur d'un rectangle donné.
lpRect est une structure qui représente le rectangle,
pt est une structure qui représente le point.
Si le point n'est pas dans le rectangle, la fonction retourne 0.

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Type POINTAPI
x As Long
y As Long
End Type

Pas d'exemple disponible...


Rectangle

 Fonction Rectangle

Declare Function Rectangle Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal X1 As Long, _
 ByVal Y1 As Long, _
 ByVal X2 As Long, _
 ByVal Y2 As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de dessiner un rectangle.
hdc est le contexte de sortie.
X1, Y1 sont les coordonnées du coin haut/gauche du rectangle.
X2, Y2 sont les coordonnées du coin bas/droit.

Pas d'exemple disponible...


RegCloseKey

 Fonction RegCloseKey

Declare Function RegCloseKey Lib "advapi32.dll" ( _
ByVal hKey As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction vous fermez une clé de la base de registre précedemment ouverte en indiquant son handle en paramêtre. Il est important de respecter la fermeture des handles qui ne sont plus utilisés pour libérer de la ressource mémoire.

Pas d'exemple disponible...


RegCreateKey

 Fonction RegCreateKey

Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" ( _
ByVal hKey As Long, _
 ByVal lpSubKey As String, _
 phkResult As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de créer une nouvelle clé sous celle spécifiée en paramêtre. Si celle-ci existe déjà, la fonction ne fait alors que l'ouvrir.
hKey est une constante du tableau ci-dessous,
lpSubKey est le chemin allant jusqu'à l'information que l'on va utiliser,
phkResult est un handle qu'il faudra utiliser pour les manipulations ultérieures de la clé ainsi créée ou ouverte.

Constante | Valeur | Définition
HKEY_CLASSES_ROOT | &H80000000 | Clé utilisé en principe pour les types de fichier.
HKEY_CURRENT_USER | &H80000001 | Clé contenant les informations de l'utilisateur courant.
HKEY_LOCAL_MACHINE | &H80000002 | Clé contenant les informations sur l'ordinateur, la configuration.
HKEY_USERS | &H80000003 | Clé contenant les informations générales pour les utilisateurs de l'ordinateur.
HKEY_CURRENT_CONFIG | &H80000005 | Clé contenant les informations sur la configuration système propre à la machine.
HKEY_DYN_DATA | &H80000006 | Clé contenant des informations temporaires concernant la session actuelle.

Pas d'exemple disponible...


RegOpenKey

 Fonction RegOpenKey

Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" ( _
ByVal hKey As Long, _
 ByVal lpSubKey As String, _
 phkResult As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction ouvre une clé du registre. hKey est une constante du tableau ci-dessous. lpSubKey est le chemin allant jusqu'à l'information que l'on va utiliser. phkResult est un handle qu'il faudra utiliser pour les manipulations ultérieures de la clé ainsi ouverte.

Constante | Valeur | Définition
HKEY_CLASSES_ROOT | &H80000000 | Clé utilisé en principe pour les types de fichier.
HKEY_CURRENT_USER | &H80000001 | Clé contenant les informations de l'utilisateur courant.
HKEY_LOCAL_MACHINE | &H80000002 | Clé contenant les informations sur l'ordinateur, la configuration.
HKEY_USERS | &H80000003 | Clé contenant les informations générales pour les utilisateurs de l'ordinateur.
HKEY_CURRENT_CONFIG | &H80000005 | Clé contenant les informations sur la configuration système propre à la machine.
HKEY_DYN_DATA | &H80000006 | Clé contenant des informations temporaires concernant la session actuelle.

Pas d'exemple disponible...


RegQueryValueEx

 Fonction RegQueryValueEx

Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" ( _
ByVal hKey As Long, _
 ByVal lpValueName As String, _
 ByVal lpReserved As Long, _
 lpType As Long, _
 lpData As Any, _
 lpcbData As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction est à utiliser pour récuperer la valeur d'une clé que l'on aura ouvert ou crée au préalable.
hKey est le handle retourné par la fonction d'ouverture ou de création.
lpValueName est le nom de la valeur que l'on veut récuperer. Pour les valeurs "(Défaut)" il faut donner une chaîne vide en paramêtre.
lpReserved, réservé, à mettre à 0.
lpType stocke le type de donnée qui sera récupéré. Les valeurs possibles sont données dans le tableau ci-dessous.
lpData est la variable dans laquelle sera retournée la valeur lue (initialisation du buffer avant appel à la fonction...).
lpcbData est la longueur du buffer lpData.
Après execution, la fonction retourne la longueur réelle de la variable lpData.

Constante | Valeur | Définition
REG_NONE | 0 | Non défini.
REG_SZ | 1 | Chaîne terminée par un caractère nul.
REG_BINARY | 3 | Valeur binaire.
REG_DWORD | 4 | Mot sur 4 octets.
REG_DWORD_BIG_ENDIAN | 5 | Mot sur 4 octets dont le poids fort est à l'adresse inférieure.
REG_LINK | 6 | Définition d'un lien.
REG_MULTI_SZ | 7 | Ensemble de chaînes terminées par un caractère nul. La fin est signalée par deux caractères nuls.

Pas d'exemple disponible...


RegSetValueEx

 Fonction RegSetValueEx

Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" ( _
ByVal hKey As Long, _
 ByVal lpValueName As String, _
 ByVal Reserved As Long, _
 ByVal dwType As Long, _
 lpData As Any, _
 ByVal cbData As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction est à utiliser pour affecter une nouvelle valeur à une clé que l'on aura ouvert ou crée au préalable.
hKey est le handle retourné par la fonction d'ouverture ou de création.
lpValueName est le nom de la valeur que l'on veut affecter. Pour les valeurs "(Défaut)" il faut donner une chaîne vide en paramêtre.
lpReserved, réservé, à mettre à 0.
lpType est le type de donnée qui sera définie. Les valeurs possibles sont données dans le tableau ci-dessous.
lpData est la variable dans laquelle est mise la nouvelle valeur à ajouter (ou à remplacer).
lpcbData est la longueur du buffer lpData.
Si l'opération a réussi, la fonction retourne 0, sinon il y a eu échec de la fonction.

Constante | Valeur | Définition
REG_NONE | 0 | Non défini.
REG_SZ | 1 | Chaîne terminée par un caractère nul.
REG_BINARY | 3 | Valeur binaire.
REG_DWORD | 4 | Mot sur 4 octets.
REG_DWORD_BIG_ENDIAN | 5 | Mot sur 4 octets dont le poids fort est à l'adresse inférieure.
REG_LINK | 6 | Définition d'un lien.
REG_MULTI_SZ | 7 | Ensemble de chaînes terminées par un caractère nul. La fin est signalée par deux caractères nuls.

Pas d'exemple disponible...


RemoveDirectory

 Fonction RemoveDirectory

Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" ( _
ByVal lpPathName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Rien d'exceptionnel avec cette fonction, elle permet juste d'effacer un répertoire. Il faut par contre qu'il soit vide.
lpPathName est le nom du répertoire à supprimer.
La fonction renvoie Vrai si elle a réussi, sinon, False.
Avec Visual Basic, le même résultat est obtenu avec la commande "RmDir".

Pas d'exemple disponible...


RemoveFontResource

 Fonction RemoveFontResource

Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" ( _
ByVal lpFileName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet d'enlever (désinstaller) une police de caractère.
lpFileName est une chaîne de caractère indiquant le fichier de fonte à manipuler (extensions ".TTF", ".FON", ...).
La valeur de retour indique le nombre de polices enlevées.
Pour que le sytème prennent en compte les modifications, il faut faire un SendMessage ( HWND_BROADCAST , WM_FONTCHANGE , 0 , 0 ).

Pas d'exemple disponible...


RoundRect

 Fonction RoundRect

Declare Function RoundRect Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal X1 As Long, _
 ByVal Y1 As Long, _
 ByVal X2 As Long, _
 ByVal Y2 As Long, _
 ByVal X3 As Long, _
 ByVal Y3 As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de dessiner un rectangle avec les bords arrondis.
hdc est le contexte de sortie.
X1, Y1 sont les coordonnées du point haut/gauche du rectangle.
X2, Y2 sont les coordonnées du point bas/droit du rectangle.
X3, Y3 représentent la largeur et la hauteur de l'ellipse utilisée pour les coins arrondis.
En cas de succès la fonction retourne une valeur différente de 0.

Exemple d'utilisation :

' Utilisation de l'API "RoundRect"
' Programme par Alain Quinet (alain.quinet@free.fr) - Mars 2002

' Placer 6 Textbox sur une form :
' txtX(1), txtX(2), txtX(3) et txtY(1), txtY(2), txtY(3)
' Placer un bouton "Command1"

Private Sub Command1_Click()
Dim ValRet As Long
ValRet = RoundRect(Me.hdc, txtX(1), txtY(1), txtX(2), txtY(2), txtX(3), txtY(3))
If (ValRet <> 0) Then
MsgBox ("La fonction a réussi" & (Chr(10)) & "Valeur de retour : " & ValRet)
Else
MsgBox ("La fonction a échoué" & (Chr(10)) & "Valeur de retour : " & ValRet)
End If
End Sub

Private Sub Form_Load()
Me.Top = (Screen.Height / 2) - (Me.Height / 2)
Me.Left = (Screen.Width / 2) - (Me.Width / 2)
txtX(1).Text = "50"
txtY(1).Text = "250"
txtX(2).Text = "250"
txtY(2).Text = "450"
txtX(3).Text = "50"
txtY(3).Text = "50"
End Sub

Private Sub txtX_Change(Index As Integer)
Call txtChange
End Sub

Private Sub txtX_GotFocus(Index As Integer)
txtX(Index).SelStart = 0
txtX(Index).SelLength = Len(txtX(Index).Text)
End Sub

Private Sub txtY_Change(Index As Integer)
Call txtChange
End Sub

Private Sub txtY_GotFocus(Index As Integer)
txtY(Index).SelStart = 0
txtY(Index).SelLength = Len(txtY(Index).Text)
End Sub

Private Sub txtChange()
If (txtX(1).Text = "") Or (txtY(1).Text = "") Or _
(txtX(2).Text = "") Or (txtY(2).Text = "") Or _
(txtX(3).Text = "") Or (txtY(3).Text = "") Then
Command1.Enabled = False
Else
Command1.Enabled = True
End If
End Sub


SHAddToRecentDocs

 Fonction SHAddToRecentDocs

Declare Sub SHAddToRecentDocs Lib "shell32.dll" ( _
ByVal uFlags As Long, _
 ByVal pv As String)
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction ajoute un fichier dans le menu des documents récemment utilisés du menu "Démarrer" (barre des tâches).
uFlags peut être égal à :
SHARD_PIDL = 1, si pv est un pointeur vers une structure PIDL (item identifier list).
SHARD_PATH = 2, si pv est une chaîne donnant le chemin et nom du fichier.
pv contient un pointeur ou un nom du fichier. Si une chaîne vide est utilisée, le menu "Documents" est vidé.

Exemple d'utilisation :

Private Declare Sub SHAddToRecentDocs Lib "shell32.dll" ( _
ByVal uFlags As Long, ByVal pv As String)

Private Const SHARD_PATH = 2

Public Sub AjouteDocument(stFichier As String)
' Ajoute un fichier aux documents récents
' (Menu "Démarrer", "Documents" de la barre des tâches)
Call SHAddToRecentDocs(SHARD_PATH, stFichier)
End Sub


SQLAllocConnect

 Fonction SQLAllocConnect

Declare Function SQLAllocConnect Lib "odbc32.dll" ( _
ByVal env As Long, _
 hdbc As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Exemple d'utilisation :

' A mettre dans un module :
' Récupère le handle de fenêtre de l'application lancée
Declare Function GetActiveWindow Lib "user32.dll" () As Long

' Pour connaitre l'utilisateur courant
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

' API SQL
Declare Function SQLAllocEnv Lib "odbc32.dll" (env As Long) As Long
Declare Function SQLAllocConnect Lib "odbc32.dll" (ByVal env As Long, Hdbc As Long) As Long
Declare Function SQLDriverConnect Lib "odbc32.dll" (ByVal Hdbc As Long, _
ByVal hwnd As Long, ByVal szCSIn As String, ByVal cbCSIn As Long, _
ByVal szCSOut As String, ByVal cbCSMax As Long, cbCSOut As Long, _
ByVal f As Long) As Long
Declare Function SQLAllocStmt Lib "odbc32.dll" (ByVal Hdbc As Long, HStmt As Long) As Long

' A mettre dans la feuille :
Private Sub Form_Load()
' Déclaration des variables
Dim Chaine As String
Dim Serveur As String
Dim stTmp As String
Dim User As String
Dim Cbout As Long
Dim lgTmp As Long
Dim blOk As Boolean

' Lit le nom de l'utilisateur courant de l'ordinateur
stTmp = Space$(250)
lgTmp = 251
Call GetUserName(stTmp, lgTmp)
User = Mid$(stTmp, 1, InStr(1, stTmp, Chr$(0)) - 1)

blOk = False
' Allocation de mémoire pour un handle d'environnement "HEnv".
If SQLAllocEnv(HEnv) = 0 Then
' Allocation d'un handle de connexion "Hdbc".
If SQLAllocConnect(HEnv, Hdbc) = 0 Then
' Etablir la connexion
Chaine = "UID=" & User
If SQLDriverConnect(Hdbc, GetActiveWindow(), Chaine, _
Len(Chaine), Serveur, Len(Serveur), Cbout, 1) = 0 Then
' Allocation d'un handle pour le handle d'une instruction.
If SQLAllocStmt(Hdbc, HStmt) = 0 Then blOk = True
End If
End If
End If
If Not blOk Then
MsgBox "Connexion impossible", vbCritical + vbOKOnly, "Erreur"
End If
End Sub


SQLAllocEnv

 Fonction SQLAllocEnv

Declare Function SQLAllocEnv Lib "odbc32.dll" ( _
env As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)
Cette fonction alloue de la mémoire pour un handle d'environnement.
Si la fonction échoue, elle retourne un nombre négatif sinon elle retourne un nombre positif.
Le paramètre est passé par référence, c'est à dire que le paramètre prend la valeur du handle.

Exemple d'utilisation :

' A mettre dans un module :
' Récupère le handle de fenêtre de l'application lancée
Declare Function GetActiveWindow Lib "user32.dll" () As Long

' Pour connaitre l'utilisateur courant
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

' API SQL
Declare Function SQLAllocEnv Lib "odbc32.dll" (env As Long) As Long
Declare Function SQLAllocConnect Lib "odbc32.dll" (ByVal env As Long, Hdbc As Long) As Long
Declare Function SQLDriverConnect Lib "odbc32.dll" (ByVal Hdbc As Long, _
ByVal hwnd As Long, ByVal szCSIn As String, ByVal cbCSIn As Long, _
ByVal szCSOut As String, ByVal cbCSMax As Long, cbCSOut As Long, _
ByVal f As Long) As Long
Declare Function SQLAllocStmt Lib "odbc32.dll" (ByVal Hdbc As Long, HStmt As Long) As Long

' A mettre dans la feuille :
Private Sub Form_Load()
' Déclaration des variables
Dim Chaine As String
Dim Serveur As String
Dim stTmp As String
Dim User As String
Dim Cbout As Long
Dim lgTmp As Long
Dim blOk As Boolean

' Lit le nom de l'utilisateur courant de l'ordinateur
stTmp = Space$(250)
lgTmp = 251
Call GetUserName(stTmp, lgTmp)
User = Mid$(stTmp, 1, InStr(1, stTmp, Chr$(0)) - 1)

blOk = False
' Allocation de mémoire pour un handle d'environnement "HEnv".
If SQLAllocEnv(HEnv) = 0 Then
' Allocation d'un handle de connexion "Hdbc".
If SQLAllocConnect(HEnv, Hdbc) = 0 Then
' Etablir la connexion
Chaine = "UID=" & User
If SQLDriverConnect(Hdbc, GetActiveWindow(), Chaine, _
Len(Chaine), Serveur, Len(Serveur), Cbout, 1) = 0 Then
' Allocation d'un handle pour le handle d'une instruction.
If SQLAllocStmt(Hdbc, HStmt) = 0 Then blOk = True
End If
End If
End If
If Not blOk Then
MsgBox "Connexion impossible", vbCritical + vbOKOnly, "Erreur"
End If
End Sub


SQLAllocStmt

 Fonction SQLAllocStmt

Declare Function SQLAllocStmt Lib "odbc32.dll" ( _
ByVal hdbc As Long, _
 hstmt As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Exemple d'utilisation :

' A mettre dans un module :
' Récupère le handle de fenêtre de l'application lancée
Declare Function GetActiveWindow Lib "user32.dll" () As Long

' Pour connaitre l'utilisateur courant
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

' API SQL
Declare Function SQLAllocEnv Lib "odbc32.dll" (env As Long) As Long
Declare Function SQLAllocConnect Lib "odbc32.dll" (ByVal env As Long, Hdbc As Long) As Long
Declare Function SQLDriverConnect Lib "odbc32.dll" (ByVal Hdbc As Long, _
ByVal hwnd As Long, ByVal szCSIn As String, ByVal cbCSIn As Long, _
ByVal szCSOut As String, ByVal cbCSMax As Long, cbCSOut As Long, _
ByVal f As Long) As Long
Declare Function SQLAllocStmt Lib "odbc32.dll" (ByVal Hdbc As Long, HStmt As Long) As Long

' A mettre dans la feuille :
Private Sub Form_Load()
' Déclaration des variables
Dim Chaine As String
Dim Serveur As String
Dim stTmp As String
Dim User As String
Dim Cbout As Long
Dim lgTmp As Long
Dim blOk As Boolean

' Lit le nom de l'utilisateur courant de l'ordinateur
stTmp = Space$(250)
lgTmp = 251
Call GetUserName(stTmp, lgTmp)
User = Mid$(stTmp, 1, InStr(1, stTmp, Chr$(0)) - 1)

blOk = False
' Allocation de mémoire pour un handle d'environnement "HEnv".
If SQLAllocEnv(HEnv) = 0 Then
' Allocation d'un handle de connexion "Hdbc".
If SQLAllocConnect(HEnv, Hdbc) = 0 Then
' Etablir la connexion
Chaine = "UID=" & User
If SQLDriverConnect(Hdbc, GetActiveWindow(), Chaine, _
Len(Chaine), Serveur, Len(Serveur), Cbout, 1) = 0 Then
' Allocation d'un handle pour le handle d'une instruction.
If SQLAllocStmt(Hdbc, HStmt) = 0 Then blOk = True
End If
End If
End If
If Not blOk Then
MsgBox "Connexion impossible", vbCritical + vbOKOnly, "Erreur"
End If
End Sub


SQLBindCol

 Fonction SQLBindCol

Declare Function SQLBindCol Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal icol As Long, _
 ByVal fCtype As Long, _
 rgbValue As Any, _
 ByVal cbValueMax As Long, _
 pcbValue As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLBindParameter

 Fonction SQLBindParameter

Declare Function SQLBindParameter Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal ipar As Long, _
 ByVal fParamType As Long, _
 ByVal fCtype As Long, _
 ByVal fSqlType As Long, _
 ByVal cbColDef As Long, _
 ByVal ibScale As Long, _
 rgbValue As Any, _
 ByVal pcbValueMax As Long, _
 pcbValue As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLColAttributes

 Fonction SQLColAttributes

Declare Function SQLColAttributes Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal icol As Long, _
 ByVal fDescType As Long, _
 ByVal rgbDesc As Long, _
 ByVal cbDescMax As Long, _
 pcbDesc As Long, _
 pfDesc As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLConnect

 Fonction SQLConnect

Declare Function SQLConnect Lib "odbc32.dll" ( _
ByVal hdbc As Long, _
 ByVal Server As String, _
 ByVal serverlen As Long, _
 ByVal uid As String, _
 ByVal uidlen As Long, _
 ByVal pwd As String, _
 ByVal pwdlen As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Pas d'exemple disponible...


SQLDescribeCol

 Fonction SQLDescribeCol

Declare Function SQLDescribeCol Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal colnum As Long, _
 ByVal colname As String, _
 ByVal Buflen As Long, _
 colnamelen As Long, _
 dtype As Long, _
 dl As Long, _
 ds As Long, _
 n As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Pas d'exemple disponible...


SQLDisconnect

 Fonction SQLDisconnect

Declare Function SQLDisconnect Lib "odbc32.dll" ( _
ByVal hdbc As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Pas d'exemple disponible...


SQLDriverConnect

 Fonction SQLDriverConnect

Declare Function SQLDriverConnect Lib "odbc32.dll" ( _
ByVal hdbc As Long, _
 ByVal hwnd As Long, _
 ByVal szCSIn As String, _
 ByVal cbCSIn As Long, _
 ByVal szCSOut As String, _
 ByVal cbCSMax As Long, _
 cbCSOut As Long, _
 ByVal f As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Exemple d'utilisation :

' A mettre dans un module :
' Récupère le handle de fenêtre de l'application lancée
Declare Function GetActiveWindow Lib "user32.dll" () As Long

' Pour connaitre l'utilisateur courant
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

' API SQL
Declare Function SQLAllocEnv Lib "odbc32.dll" (env As Long) As Long
Declare Function SQLAllocConnect Lib "odbc32.dll" (ByVal env As Long, Hdbc As Long) As Long
Declare Function SQLDriverConnect Lib "odbc32.dll" (ByVal Hdbc As Long, _
ByVal hwnd As Long, ByVal szCSIn As String, ByVal cbCSIn As Long, _
ByVal szCSOut As String, ByVal cbCSMax As Long, cbCSOut As Long, _
ByVal f As Long) As Long
Declare Function SQLAllocStmt Lib "odbc32.dll" (ByVal Hdbc As Long, HStmt As Long) As Long

' A mettre dans la feuille :
Private Sub Form_Load()
' Déclaration des variables
Dim Chaine As String
Dim Serveur As String
Dim stTmp As String
Dim User As String
Dim Cbout As Long
Dim lgTmp As Long
Dim blOk As Boolean

' Lit le nom de l'utilisateur courant de l'ordinateur
stTmp = Space$(250)
lgTmp = 251
Call GetUserName(stTmp, lgTmp)
User = Mid$(stTmp, 1, InStr(1, stTmp, Chr$(0)) - 1)

blOk = False
' Allocation de mémoire pour un handle d'environnement "HEnv".
If SQLAllocEnv(HEnv) = 0 Then
' Allocation d'un handle de connexion "Hdbc".
If SQLAllocConnect(HEnv, Hdbc) = 0 Then
' Etablir la connexion
Chaine = "UID=" & User
If SQLDriverConnect(Hdbc, GetActiveWindow(), Chaine, _
Len(Chaine), Serveur, Len(Serveur), Cbout, 1) = 0 Then
' Allocation d'un handle pour le handle d'une instruction.
If SQLAllocStmt(Hdbc, HStmt) = 0 Then blOk = True
End If
End If
End If
If Not blOk Then
MsgBox "Connexion impossible", vbCritical + vbOKOnly, "Erreur"
End If
End Sub


SQLError

 Fonction SQLError

Declare Function SQLError Lib "odbc32.dll" ( _
ByVal env As Long, _
 ByVal hdbc As Long, _
 ByVal hstmt As Long, _
 ByVal SQLState As String, _
 NativeError As Long, _
 ByVal Buffer As String, _
 ByVal Buflen As Long, _
 Outlen As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)
La fonction SQLError retourne l'erreur du dernier appel d'une instruction ODBC.
HEnv est un handle d'environnement.
Hdbc est un handle de connection.
hstmt est un handle de requête.
Requete est une chaîne de caractères contenant l'instruction SQL.
NativeError est le numéro de l'erreur ODBC Buffer est une chaîne de caractères recevant la description de l'erreur.
LenBuffer est la taille de Buffer OutLen retourne le nombre de caractères de la description de l'erreur.

Exemple d'utilisation :

' Procédure d'envoi d'une requête
' Retourne vraie si la requête n'a pas abouti
Function EnvoyerRequete(HEnv As Long, Hdbc As Long, _
Requete As String) As Boolean
' ---Déclaration des variables---
Dim NativeError As Long
Dim OutLen As Long
Dim BufLen As Long
Dim hstmt As Long
Dim Buffer As String
Dim SqlState As String
Dim i As Long
' ---Envoi d'une requete SQL---
SQLFreeStmt hstmt, 0
EnvoyerRequete = SQLPrepare(hstmt, Requete, Len(Requete))
EnvoyerRequete = SQLExecute(hstmt)
' ---retourne le message d'erreur---
If EnvoyerRequete Then
Buffer = String$(256, 0) ' Remplir le Buffer
SQLError HEnv, Hdbc, hstmt, Requete, NativeError, _
Buffer, Len(Buffer), OutLen
' Retourne le message
MsgBox Mid$(Buffer, 1, OutLen), _
vbOKOnly + vbExclamation, "Erreur ODBC"
End If
End Function


SQLExecDirect

 Fonction SQLExecDirect

Declare Function SQLExecDirect Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal sqlString As String, _
 ByVal sqlstrlen As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Pas d'exemple disponible...


SQLExecute

 Fonction SQLExecute

Declare Function SQLExecute Lib "odbc32.dll" ( _
ByVal hstmt As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Exemple d'utilisation :

' Procédure d'envoi d'une requête
' Retourne vraie si la requête n'a pas abouti
Function EnvoyerRequete(HEnv As Long, Hdbc As Long, _
Requete As String) As Boolean
' ---Déclaration des variables---
Dim NativeError As Long
Dim OutLen As Long
Dim BufLen As Long
Dim hstmt As Long
Dim Buffer As String
Dim SqlState As String
Dim i As Long
' ---Envoi d'une requete SQL---
SQLFreeStmt hstmt, 0
EnvoyerRequete = SQLPrepare(hstmt, Requete, Len(Requete))
EnvoyerRequete = SQLExecute(hstmt)
' ---retourne le message d'erreur---
If EnvoyerRequete Then
Buffer = String$(256, 0) ' Remplir le Buffer
SQLError HEnv, Hdbc, hstmt, Requete, NativeError, _
Buffer, Len(Buffer), OutLen
' Retourne le message
MsgBox Mid$(Buffer, 1, OutLen), _
vbOKOnly + vbExclamation, "Erreur ODBC"
End If
End Function


SQLExtendedFetch

 Fonction SQLExtendedFetch

Declare Function SQLExtendedFetch Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal fFetchType As Long, _
 ByVal irow As Long, _
 pcrow As Long, _
 rgfRowStatus As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLFetch

 Fonction SQLFetch

Declare Function SQLFetch Lib "odbc32.dll" ( _
ByVal hstmt As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)
La fonction SQLFetch permet d'extraire les résultats retounés après l'envoi d'une requête.
hstmt est un handle d'envoi d'une instruction SQL faite par SQLExecute ou SQLExecDirect.

Exemple d'utilisation :

' (Exemple de Phil)
' Dans cet exemple, à chaque appel de SQLFetch, on passe à la ligne suivante.

Declare Function SQLNumResultCols Lib "odbc32" (ByVal hstmt As Long, _
NumCols As Long) As Long
Declare Function SQLFetch Lib "odbc32" (ByVal hstmt As Long) As Long
Declare Function SQLGetData Lib "odbc32" (ByVal hstmt As Long, ByVal _
col As Long, ByVal fConvType As Long, ByVal rgbValue As Any, _
ByVal cbValueMax As Long, pcbValue As Long) As Long

Global Const SQL_CHAR = 1
Global Const SQL_SUCCESS = 0

' ---Déclarations des variables---
Dim i, j as Long
Dim Tab
Dim Cols as long
Dim SBuffer As String * 256
Dim LongOutLen as long
Dim hstmt as long

' La connection à une base doit être établi avant (voir SQLAllocConnect)

' ---Extraction d'une requête retournant plus d'une colonne---
SQLNumResultCols hstmt, Cols
i = 1
Do While SQLFetch(hstmt) = SQL_SUCCESS
Redim Preserve Tab(i,Cols)
SBuffer = String$(256, 0)
For j = 1 To Cols
SQLGetData hstmt, j, SQL_CHAR, SBuffer, Len(SBuffer), LongOutLen
Tab(i,j) = Mid$(SBuffer, 1, LongOutLen) ' Mid$ est mieux que Mid
' (Voir optimisation du code VB dans la rubrique Code)
Next j
i = i + 1
Loop


SQLFreeConnect

 Fonction SQLFreeConnect

Declare Function SQLFreeConnect Lib "odbc32.dll" ( _
ByVal hdbc As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Pas d'exemple disponible...


SQLFreeEnv

 Fonction SQLFreeEnv

Declare Function SQLFreeEnv Lib "odbc32.dll" ( _
ByVal env As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Pas d'exemple disponible...


SQLFreeStmt

 Fonction SQLFreeStmt

Declare Function SQLFreeStmt Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal EndOption As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)
La fonction SQLFreeStmt libère un espace mémoire pour exécuter une instruction SQL. Attention il est impératif de lancer cette instruction à chaque fois que vous désirez interroger une base(excepté la première fois, puisque tout est initialisé).

Exemple d'utilisation :

' Procédure d'envoi d'une requête
' Retourne vraie si la requête n'a pas abouti
Function EnvoyerRequete(HEnv As Long, Hdbc As Long, _
Requete As String) As Boolean
' ---Déclaration des variables---
Dim NativeError As Long
Dim OutLen As Long
Dim BufLen As Long
Dim hstmt As Long
Dim Buffer As String
Dim SqlState As String
Dim i As Long
' ---Envoi d'une requete SQL---
SQLFreeStmt hstmt, 0
EnvoyerRequete = SQLPrepare(hstmt, Requete, Len(Requete))
EnvoyerRequete = SQLExecute(hstmt)
' ---retourne le message d'erreur---
If EnvoyerRequete Then
Buffer = String$(256, 0) ' Remplir le Buffer
SQLError HEnv, Hdbc, hstmt, Requete, NativeError, _
Buffer, Len(Buffer), OutLen
' Retourne le message
MsgBox Mid$(Buffer, 1, OutLen), _
vbOKOnly + vbExclamation, "Erreur ODBC"
End If
End Function


SQLGetCursorName

 Fonction SQLGetCursorName

Declare Function SQLGetCursorName Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal cursor As String, _
 ByVal cbCursorMax As Long, _
 cbCursor As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLGetData

 Fonction SQLGetData

Declare Function SQLGetData Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal col As Long, _
 ByVal wConvType As Long, _
 ByVal lpbBuf As String, _
 ByVal dwbuflen As Long, _
 lpcbout As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Exemple d'utilisation :

' (Exemple de Phil)
' Dans cet exemple, à chaque appel de SQLFetch, on passe à la ligne suivante.

Declare Function SQLNumResultCols Lib "odbc32" (ByVal hstmt As Long, _
NumCols As Long) As Long
Declare Function SQLFetch Lib "odbc32" (ByVal hstmt As Long) As Long
Declare Function SQLGetData Lib "odbc32" (ByVal hstmt As Long, ByVal _
col As Long, ByVal fConvType As Long, ByVal rgbValue As Any, _
ByVal cbValueMax As Long, pcbValue As Long) As Long

Global Const SQL_CHAR = 1
Global Const SQL_SUCCESS = 0

' ---Déclarations des variables---
Dim i, j as Long
Dim Tab
Dim Cols as long
Dim SBuffer As String * 256
Dim LongOutLen as long
Dim hstmt as long

' La connection à une base doit être établi avant (voir SQLAllocConnect)

' ---Extraction d'une requête retournant plus d'une colonne---
SQLNumResultCols hstmt, Cols
i = 1
Do While SQLFetch(hstmt) = SQL_SUCCESS
Redim Preserve Tab(i,Cols)
SBuffer = String$(256, 0)
For j = 1 To Cols
SQLGetData hstmt, j, SQL_CHAR, SBuffer, Len(SBuffer), LongOutLen
Tab(i,j) = Mid$(SBuffer, 1, LongOutLen) ' Mid$ est mieux que Mid
' (Voir optimisation du code VB dans la rubrique Code)
Next j
i = i + 1
Loop


SQLGetInfo

 Fonction SQLGetInfo

Declare Function SQLGetInfo Lib "odbc32.dll" ( _
ByVal hdbc As Long, _
 ByVal hwnd As Long, _
 ByVal szInfo As String, _
 ByVal cbInfoMax As Long, _
 cbInfoOut As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Pas d'exemple disponible...


SQLMoreResults

 Fonction SQLMoreResults

Declare Function SQLMoreResults Lib "odbc32.dll" ( _
ByVal hstmt As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLNumParams

 Fonction SQLNumParams

Declare Function SQLNumParams Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 pcPar As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLNumResultCols

 Fonction SQLNumResultCols

Declare Function SQLNumResultCols Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 NumCols As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Exemple d'utilisation :

' (Exemple de Phil)
' Dans cet exemple, à chaque appel de SQLFetch, on passe à la ligne suivante.

Declare Function SQLNumResultCols Lib "odbc32" (ByVal hstmt As Long, _
NumCols As Long) As Long
Declare Function SQLFetch Lib "odbc32" (ByVal hstmt As Long) As Long
Declare Function SQLGetData Lib "odbc32" (ByVal hstmt As Long, ByVal _
col As Long, ByVal fConvType As Long, ByVal rgbValue As Any, _
ByVal cbValueMax As Long, pcbValue As Long) As Long

Global Const SQL_CHAR = 1
Global Const SQL_SUCCESS = 0

' ---Déclarations des variables---
Dim i, j as Long
Dim Tab
Dim Cols as long
Dim SBuffer As String * 256
Dim LongOutLen as long
Dim hstmt as long

' La connection à une base doit être établi avant (voir SQLAllocConnect)

' ---Extraction d'une requête retournant plus d'une colonne---
SQLNumResultCols hstmt, Cols
i = 1
Do While SQLFetch(hstmt) = SQL_SUCCESS
Redim Preserve Tab(i,Cols)
SBuffer = String$(256, 0)
For j = 1 To Cols
SQLGetData hstmt, j, SQL_CHAR, SBuffer, Len(SBuffer), LongOutLen
Tab(i,j) = Mid$(SBuffer, 1, LongOutLen) ' Mid$ est mieux que Mid
' (Voir optimisation du code VB dans la rubrique Code)
Next j
i = i + 1
Loop


SQLParamData

 Fonction SQLParamData

Declare Function SQLParamData Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 prgbValue As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLParamOptions

 Fonction SQLParamOptions

Declare Function SQLParamOptions Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal crow As Long, _
 pirow As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLPrepare

 Fonction SQLPrepare

Declare Function SQLPrepare Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal sqlString As String, _
 ByVal sqlstrlen As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Exemple d'utilisation :

' Procédure d'envoi d'une requête
' Retourne vraie si la requête n'a pas abouti
Function EnvoyerRequete(HEnv As Long, Hdbc As Long, _
Requete As String) As Boolean
' ---Déclaration des variables---
Dim NativeError As Long
Dim OutLen As Long
Dim BufLen As Long
Dim hstmt As Long
Dim Buffer As String
Dim SqlState As String
Dim i As Long
' ---Envoi d'une requete SQL---
SQLFreeStmt hstmt, 0
EnvoyerRequete = SQLPrepare(hstmt, Requete, Len(Requete))
EnvoyerRequete = SQLExecute(hstmt)
' ---retourne le message d'erreur---
If EnvoyerRequete Then
Buffer = String$(256, 0) ' Remplir le Buffer
SQLError HEnv, Hdbc, hstmt, Requete, NativeError, _
Buffer, Len(Buffer), OutLen
' Retourne le message
MsgBox Mid$(Buffer, 1, OutLen), _
vbOKOnly + vbExclamation, "Erreur ODBC"
End If
End Function


SQLPutData

 Fonction SQLPutData

Declare Function SQLPutData Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 rgbValue As Any, _
 ByVal cbValue As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLRowCount

 Fonction SQLRowCount

Declare Function SQLRowCount Lib "odbc32.dll" ( _
ByVal HStmt As Long, _
 pcrow As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(Origine : Philippe Plançon)
Cette fonction permet de retourner le nombre d'enregistrement obtenu à partir d'une requête. Le nombre de lignes est affecté par les méthodes : UPDATE, INSERT ou DELETE.
HStmt : Handle d'une instruction en SQL (retourné par l'instruction SQLExecute ou SQLExecDirect).
pcrow : Retourne le nombre de lignes.
La valeur retournée est SQL_SUCCES si hstmt est valide sinon SQL_INVALID_HANDLE, ou une autre SQL_ERROR est retournée.
S1000 : Erreur générale.
S1001 : Allocation de mémoire échouée.
S1010 : SQLExecute ou SQLExecDirect non pas été appelé.

Pas d'exemple disponible...


SQLSetConnectOption

 Fonction SQLSetConnectOption

Declare Function SQLSetConnectOption Lib "odbc32.dll" ( _
ByVal HDBC As Long, _
 ByVal foption As Long, _
 ByVal vparam As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLSetCursorName

 Fonction SQLSetCursorName

Declare Function SQLSetCursorName Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal cursor As String, _
 ByVal cbCursor As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLSetPos

 Fonction SQLSetPos

Declare Function SQLSetPos Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal irow As Long, _
 ByVal fRefresh As Long, _
 ByVal fLock As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLSetScrollOptions

 Fonction SQLSetScrollOptions

Declare Function SQLSetScrollOptions Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal fConcurrency As Long, _
 ByVal crowKeyset As Long, _
 ByVal crowRowset As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLSetStmtOption

 Fonction SQLSetStmtOption

Declare Function SQLSetStmtOption Lib "odbc32.dll" ( _
ByVal HDBC As Long, _
 ByVal foption As Long, _
 ByVal vparam As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


SQLTables

 Fonction SQLTables

Declare Function SQLTables Lib "odbc32.dll" ( _
ByVal hstmt As Long, _
 ByVal q As Long, _
 ByVal cbq As Long, _
 ByVal o As Long, _
 ByVal cbo As Long, _
 ByVal t As Long, _
 ByVal cbt As Long, _
 ByVal tt As Long, _
 ByVal cbtt As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(origine : Philippe Plançon - plancon@onetelnet.fr)

Pas d'exemple disponible...


SQLTransact

 Fonction SQLTransact

Declare Function SQLTransact Lib "odbc32.dll" ( _
ByVal env As Long, _
 ByVal HDBC As Long, _
 ByVal ftype As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :

Pas d'exemple disponible...


ScreenToClient

 Fonction ScreenToClient

Declare Function ScreenToClient Lib "user32" ( _
ByVal hWnd As Long, _
 lpPoint As POINTAPI) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction transforme des coordonnées calculées à l'origine par rapport à l'écran en coordonnées par rapport une fenêtre. La structure POINTAPI contient la position d'origine en paramêtre d'appel et retourne la nouvelle position dans cette même structure.
Si la fonction renvoie 'Vrai', il n'y a pas eu d'erreur, sinon elle renvoie 'Faux'.

Type POINTAPI
x As Long
y As Long
End Type

Exemple d'utilisation :

' Exemple proposé par Michel Defert (micheldefert@free.fr)
' Placer un label sur la feuille, puis le code suivant :

' Position de X et Y par rapport a l'écran
Private Declare Function GetCursorPos Lib "user32" ( _
lpPoint As POINTAPI) As Long

' Position de X et Y par rapport a la fenètre et a GetCursorPos
Private Declare Function ScreenToClient Lib "user32" ( _
ByVal hwnd As Long, _
lpPoint As POINTAPI) As Long

Private Type POINTAPI
X As Long
Y As Long
End Type

' Affiche un point sous le curseur quand on clique sur la feuille
Private Sub Form_Click()
Dim pos As POINTAPI
GetCursorPos pos
ScreenToClient Me.hwnd, pos
Me.Label1 = "Position Horizontale X = : " & pos.X & vbCrLf & _
"Position Verticale Y = : " & pos.Y
Me.DrawWidth = 2 ' Pixel plus épais
Me.ScaleMode = vbPixels ' Feuille en mode Pixel
Me.PSet (pos.X, pos.Y), RGB(255, 0, 0) ' Affiche le pixel en rouge
Me.DrawWidth = 1 ' Pixel normal
Me.ScaleMode = vbTwips ' Feuille en mode Twip
End Sub


SetBitmapDimensionEx

 Fonction SetBitmapDimensionEx

Declare Function SetBitmapDimensionEx Lib "gdi32" ( _
ByVal hbm As Long, _
 ByVal nX As Long, _
 ByVal nY As Long, _
 lpSize As Size) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de fixer les dimensions d'une bitmap.
hbm est un handle sur le bitmap à manipuler,
nX et nY sont les nouvelles dimensions à fixer.
lpSize est une variable de type size qui récupère l'ancienne taille de l'image.
Renvoie "Vrai" si cela a réussi, sinon, "Faux".

Type Size
cx As Long
cy As Long
End Type

Pas d'exemple disponible...


SetBkColor

 Fonction SetBkColor

Declare Function SetBkColor Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal crColor As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de changer la couleur de fond d'un périphérique d'affichage.
hdc est un pointeur vers le périphérique (ou contrôle) sélectionné.
crColor est la couleur de fond à attribuer (constante VB, ou calcul à partir de la fonction RGB).
En cas de succès la fonction retourne la couleur de fond précédente, sinon elle retourne CLR_INVALID (&HFFFF).

Pas d'exemple disponible...


SetBkMode

 Fonction SetBkMode

Declare Function SetBkMode Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal nBkMode As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
La fonction fixe le mode d'affichage pour le périphérique sélectionné.
hdc est un pointeur vers le périphérique (ou le contrôle) sélectionné,
nBkMode est le nouveau mode à appliquer (voir constantes ci-dessous).
La fonction retourne 0 en cas d'échec, sinon, elle donne la valeur du mode précédent.

Constante | Valeur | Définition
OPAQUE | 2 | Définit un fond opaque.
TRANSPARENT | 1 | Définit un fond transparent.

Pas d'exemple disponible...


SetComputerName

 Fonction SetComputerName

Declare Function SetComputerName Lib "kernel32" Alias "SetComputerNameA" ( _
ByVal lpComputerName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction, vous pouvez changer le nom de l'ordinateur.
lpBuffer est la chaîne qui contient le nouveau nom.
La modification n'est prise en compte qu'au démarrage suivant.
Retourne "Faux" en cas d'échec, sinon "Vrai".

Pas d'exemple disponible...


SetCursorPos

 Fonction SetCursorPos

Declare Function SetCursorPos Lib "user32" ( _
ByVal x As Long, _
 ByVal y As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Une fonction toute simple pour placer le curseur de la souris n'importe où sur l'écran.
x et y représentent la position ou doit se positionner la souris.

Exemple d'utilisation :

' (Exemple de Alain Quinet - alain.quinet@free.fr)

' Dans un module, vous définissez la fonction qui suit :

Private Declare Function SetCursorPos Lib "user32" ( _
ByVal x As Long, ByVal y As Long) As Long

' Vous placez sur votre feuille deux textbox nommés
' "txtPosCurHor", "txtPosCurVer" et un bouton "Command1"

' Dans l'évènement Click du bouton, vous tapez le code suivant :
Private Sub Command1_Click()
Dim x As Long, y As Long
' ATTENTION : Entrez des valeurs valides (numeriques)
x = CLng(txtPosCurHor.Text)
y = CLng(txtPosCurVer.Text)
' Cet appel de fonction placera le pointeur de la souris au
' coordonnées indiquées dans les zones de texte
Call SetCursorPos(x, y)
End Sub


SetDoubleClickTime

 Fonction SetDoubleClickTime

Declare Function SetDoubleClickTime Lib "user32" Alias "SetDoubleClickTime" ( _
ByVal wCount As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Permet de définir l'intervalle de temps maximum qu'il faut entre deux clics pour que le système le prenne en double-clic.
wCount représente le temps en millisecondes.

Pas d'exemple disponible...


SetFileAttributes

 Fonction SetFileAttributes

Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" ( _
ByVal lpFileName As String, _
 ByVal dwFileAttributes As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction affecte de nouveaux attributs à un fichier (ou un répertoire).
lpFileName est le nom du fichier (répertoire) à manipuler.
dwFileAttributes représente les attributs à donner. La variable est élaborée à partir des constantes ci-dessous (union de différents attributs avec OR).

Constante | Valeur | Définition
FILE_ATTRIBUTE_READONLY | &H1 | Fichier en lecture seule.
FILE_ATTRIBUTE_HIDDEN | &H2 | Fichier caché.
FILE_ATTRIBUTE_SYSTEM | &H4 | Fichier système.
FILE_ATTRIBUTE_DIRECTORY | &H10 | L'élément est un répertoire.
FILE_ATTRIBUTE_ARCHIVE | &H20 | Le fichier a l'attribut archive.
FILE_ATTRIBUTE_NORMAL | &H80 | Le fichier n'a pas d'attribut.
FILE_ATTRIBUTE_TEMPORARY | &H100 | Fichier temporaire.
FILE_ATTRIBUTE_COMPRESSED | &H800 | Fichier (répertoire) compressé.

Pas d'exemple disponible...


SetLocalTime

 Fonction SetLocalTime

Declare Function SetLocalTime Lib "kernel32" ( _
lpSystemTime As SYSTEMTIME) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de définir l'heure locale du PC. L'heure système se trouve aussi affectée (recalcul de l'heure système en fonction du décalage GMT).
lpSystemTime est une structure de type SYSTEMTIME contenant la nouvelle heure locale.
La fonction retourne Vrai si l'opération s'est bien passée, sinon Faux.

Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Pas d'exemple disponible...


SetPixel

 Fonction SetPixel

Declare Function SetPixel Lib "gdi32" Alias "SetPixel" ( _
ByVal hdc As Long, _
 ByVal x As Long, _
 ByVal y As Long, _
 ByVal crColor As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction dessine sur un point aux coordonnées spécifiées.
hdc est le contexte de sortie.
x et y sont les coordonnées du point à dessiner.
crColor est la couleur du point (constante VB ou appel de la fonction RGB).

Pas d'exemple disponible...


SetPriorityClass

 Fonction SetPriorityClass

Declare Function SetPriorityClass Lib "kernel32" ( _
ByVal hProcess As Long, _
 ByVal dwPriorityClass As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(Origine : Phil - Mail : pplancon@chello.fr)

La fonction permet de définir au système
les niveaux de priorité d'exécution des processus en cours.
hProcess est le handle du processus dont on souhaite modifier la priorité.
dwPriorityClass est la nouvelle priorité à attribuer au processus (voir constantes plus bas).

ATTENTION : AVEC LE NIVEAU REALTIME_PRIORITY_CLASS VOUS JOUEZ AVEC LE FEU. UN SEUL PROCESSUS PEUT AVOIR CETTE PRIORITE EN MEME TEMPS QUI LE PLACE AU DESSUS DES EVENEMENTS SYSTEMES. IL SE PEUT QUE VOUS NE PUISSIEZ PLUS BOUGER LA SOURIS, PLUS UTILISER LE CLAVIER DANS LE CAS DE BOUCLE INFINIE (LA SEULE SOLUTION EST DE REBOOTER SA MACHINE).

Constante | Valeur | Définition
IDLE_PRIORITY_CLASS | &H40 | Priorité minimum.
BELOW_NORMAL_PRIORITY_CLASS | &H4000 | Priorité en dessous de normal.
NORMAL_PRIORITY_CLASS | &H20 | Priorité normale.
ABOVE_NORMAL_PRIORITY_CLASS | &H8000 | Priorité au dessus de normal.
HIGH_PRIORITY_CLASS | &H80 | Priorité haute.
REALTIME_PRIORITY_CLASS | &H100 | Priorité maximum (temps réel).

Exemple d'utilisation :

'---------------------------------
'--- Origine : Phil ---
'--- Mail : pplancon@chello.fr ---
'---------------------------------
Option Explicit

' Le code ci-dessous montre comment changer la priorité du processus
' en cours (= au code qui suit). Les APIs utilisées permettent
' de classer par ordre prioritaire des processus, autrement dit
' le système réparti ou donne totalement les ressources systèmes
' (mémoire, CPU, ...) pour l'exécution de ou d'un processus.

'---Déclaration des constantes---
' Constantes des priorités (6 niveaux de priorités)
Const IDLE_PRIORITY_CLASS As Long = &H40 ' minimum
Const BELOW_NORMAL_PRIORITY_CLASS As Long = &H4000 ' normal -
Const NORMAL_PRIORITY_CLASS As Long = &H20 ' normal
Const ABOVE_NORMAL_PRIORITY_CLASS As Long = &H8000 ' normal +
Const HIGH_PRIORITY_CLASS As Long = &H80 ' haute
Const REALTIME_PRIORITY_CLASS As Long = &H100 ' maximum

' Constantes de gestion des process

'Accès au process en synchro uniquement.
Const SYNCHRONIZE As Long = &H100000
'Accès au process en "query_info".
Const PROCESS_QUERY_INFORMATION As Long = &H400

'Infinite timeout.
Const INFINITE As Long = &HFFFF

'---Déclarations des APIs---
' Gestion de la priorité du procces
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function SetPriorityClass Lib "kernel32" (ByVal hProcess As Long, _
ByVal dwPriorityClass As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long

' Pour le temps
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Private Sub Command1_Click()
'---Déclaration des variables---
Dim i As Long
Dim j As Long
Dim HeureDebut As Long
'---Exécute un calcul bidon---
HeureDebut = timeGetTime
For i = 0 To 50000000 ' <- modifier ce chiffre pour influer sur le temps de calcul
j = (i * 2) Mod 34541
Next i
MsgBox "Temps du calcul bidon : " & timeGetTime - HeureDebut & " ms"
End Sub

Private Sub Form_Load()
'---Déclaration des variables---
Dim LastError As Long
Dim Ret As Long
Dim hCurrentProcess As Long
'---Positionne la feuille---
Me.Move 0, 0
'---Modifie la priorité du process---
' Récupère le handle du process
hCurrentProcess = GetCurrentProcess()
' Affecte sa priorité
Ret = SetPriorityClass(hCurrentProcess, IDLE_PRIORITY_CLASS)
' Gestion des erreurs
If (Ret = 0) Then
LastError = GetLastError()
MsgBox "Impossible de modifier la priorité." & _
vbCrLf & vbCrLf & CStr(LastError)
End If
End Sub


SetRectEmpty

 Fonction SetRectEmpty

Declare Function SetRectEmpty Lib "user32" ( _
lpRect As RECT) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet d'initialiser une structure RECT. Chaque valeur est mise à zéro.
lpRect est la structure qui sera modifiée.
La fonction retourne Vrai si l'opération s'est déroulée correctement, sinon, False.

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Pas d'exemple disponible...


SetRect

 Fonction SetRect

Declare Function SetRect Lib "user32" ( _
lpRect As RECT, _
 ByVal X1 As Long, _
 ByVal Y1 As Long, _
 ByVal X2 As Long, _
 ByVal Y2 As Long) As LONG
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet en une seule passe de définir une structure RECT.
lpRect est la structure RECT que l'on va remplir.
X1, Y1 représente le coin haut-gauche du rectangle.
X2, Y2 représente le coin bas-droit du rectangle.
La fonction retourne Vrai si l'opération s'est déroulée correctement, sinon, False.
La structure RECT est rappelée ci-dessous.

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Pas d'exemple disponible...


SetSystemTime

 Fonction SetSystemTime

Declare Function SetSystemTime Lib "kernel32" ( _
lpSystemTime As SYSTEMTIME) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de définir l'heure système du PC. L'heure locale se trouve aussi affectée (recalcul de l'heure locale en fonction du décalage GMT).
lpSystemTime est une structure de type SYSTEMTIME contenant la nouvelle heure système.
La fonction retourne Vrai si l'opération s'est bien passée, sinon Faux.

Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Pas d'exemple disponible...


SetTextCharacterExtra

 Fonction SetTextCharacterExtra

Declare Function SetTextCharacterExtra Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal nCharExtra As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de définir l'espace placé entre les caractère lors de l'écriture sur un contexte de sortie.
hdc est un pointeur vers le contexte sélectionné (fenêtre, contrôle, impression, ...).
nCharExtra est le nombre d'espace à ajouter entre chaque caractère.
Si la fonction échoue elle retourne "&h80000000", sinon, elle donne la valeur de nCharExtra précédente.

Pas d'exemple disponible...


SetTextColor

 Fonction SetTextColor

Declare Function SetTextColor Lib "gdi32" ( _
ByVal hdc As Long, _
 ByVal crColor As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de changer la couleur d'écriture du texte d'un périphérique d'affichage.
hdc est un pointeur vers le périphérique (ou contrôle) sélectionné.
crColor est la couleur à utiliser pour écrire (constante VB, ou calcul à partir de la fonction RGB).
En cas de succès la fonction retourne la couleur de texte précédemment utilisée, sinon elle retourne CLR_INVALID (&HFFFF).

Pas d'exemple disponible...


SetVolumeLabel

 Fonction SetVolumeLabel

Declare Function SetVolumeLabel Lib "kernel32" Alias "SetVolumeLabelA" ( _
ByVal lpRootPathName As String, _
 ByVal lpVolumeName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet d'attribuer (ou de changer) un nom de volume pour un disque dur (ou une disquette).
lpRootPathName contient le nom du lecteur de travail (ex: "A:\", "C:\", "G:\", ...).
lpVolumePathName est le nouveau nom de volume à attribuer au lecteur.
En cas de réussite, la fonction retourne 1, sinon elle renvoie 0.

Pas d'exemple disponible...


SetWindowLong

 Fonction SetWindowLong

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
ByVal hwnd As Long, _
 ByVal nIndex As Long, _
 ByVal dwNewLong As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction vous autorise à définir de nouvelles informations propres à la structure d'une fenêtre.
nIndex contient une constante dont vous pouvez obtenir la liste en vous reportant à la fonction inverse GetWindowLong.
dwNewLong est la nouvelle valeur qui sera associée au rôle de la constante.
La fonction retourne la valeur précédemment définie pour la constante utilisée.

Pas d'exemple disponible...


SetWindowPos

 Fonction SetWindowPos

Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" ( _
ByVal hwnd As Long, _
 ByVal hWndInsertAfter As Long, _
 ByVal x As Long, _
 ByVal y As Long, _
 ByVal cx As Long, _
 ByVal cy As Long, _
 ByVal wFlags As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(Origine : Phil - Plancon@onetelnet.fr)
Cette API permet d'afficher la fenêtre où bon vous semble sur
l'écran en exécutant une méthode du type move avec la possibilité de laisser la feuille toujours au premier plan d'affichage.
hwnd est le handle de la feuille,
hWndInsertAfter est une des contantes définies ci-dessous,
X, Y, cx et cy sont respectivement les coordonnées et les dimensions de l'image.
wFlags est une combinaison de constantes ci-dessous.

Exemple d'utilisation dans le programme Horloge, ou ci-dessous...

Constante | Valeur | Définition
HWND_BOTTOM | 1 | Place la fenêtre en dessous de toutes les autres.
HWND_NOTOPMOST | -2 | Place la fenêtre au dessus de toutes les fenêtres qui n'ont pas l'attribut "TOPMOST" (et en dessous de ces dernières).
HWND_TOP | 0 | Place la fenêtre au premier niveau.
HWND_TOPMOST | -1 | Place la fenêtre au premier niveau, celle-ci conserve cet attribut même lorsqu'elle perd le focus.
SWP_HIDEWINDOW | &H80 | Cache la fenêtre.
SWP_NOACTIVATE | &H10 | N'active pas la fenêtre.
SWP_NOMOVE | &H2 | Garde la même position (les paramètres X et Y ne sont pas pris en compte).
SWP_NOSIZE | &H1 | Conserve les dimensions courantes (paramètres cx et cy pas pris en compte).
SWP_SHOWWINDOW | &H40 | Affiche la fenêtre.

Exemple d'utilisation :

' Cette fonction vous permet de créer des boîtes à outils (Toolbox).

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2

Private Function PositionForm(ByVal Feuille As Form, Optional PrePlan As Boolean = True) As Long
Dim lgConst As Long
If PrePlan Then
lgConst = HWND_TOPMOST
Else
lgConst = HWND_NOTOPMOST
End If
PositionForm = SetWindowPos(Feuille.hwnd, lgConst, _
Feuille.Left \ Screen.TwipsPerPixelX, _
Feuille.Top \ Screen.TwipsPerPixelY, _
Feuille.Width \ Screen.TwipsPerPixelX, _
Feuille.Height \ Screen.TwipsPerPixelY, 0)
End Function

Private Sub Form_Load()

' Pour mettre une Feuille au premier plan, il suffit alors d'ajouter le code suivant:
PositionForm Form1

' Pour qu'elle retrouve un comportement normal:
PositionForm Form1, False

End Sub


SetWindowText

 Fonction SetWindowText

Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" ( _
ByVal hwnd As Long, _
 ByVal lpString As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Définissez avec cette fonction une nouvelle valeur pour le titre d'une fenêtre, ou le texte associé à un contrôle. Si la fonction échoue elle retourne zéro.

Pas d'exemple disponible...


ShowCursor

 Fonction ShowCursor

Declare Function ShowCursor Lib "user32" ( _
ByVal bShow As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de rendre visible ou invisible le curseur de la souris. bShow à 'Vrai' pour qu'il soit visible, 'Faux' pour qu'il soit invisible.

Pas d'exemple disponible...


ShowWindow

 Fonction ShowWindow

Declare Function ShowWindow Lib "user32" Alias "ShowWindow" ( _
ByVal hwnd As Long, _
 ByVal nCmdShow As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de forcer l'état d'affichage d'une fenêtre (agrandir, réduire).
hwnd est un pointeur (handle) vers une fenêtre.
nCmdShow peut prendre la valeur d'une constante dans le tableau ci-dessous.
La fonction retourne 0 si la fenêtre était cachée, et une valeur différente de 0 dans le cas contraire.

Constante | Valeur | Définition
SW_HIDE | 0 | Cache la fenêtre et en active une autre.
SW_MAXIMIZE | 3 | Agrandit la fenêtre.
SW_MINIMIZE | 6 | Réduit la fenêtre et active la prochaine (dans l'ordre des tâches windows).
SW_RESTORE | 9 | Active et affiche la fenêtre à sa taille et position initiales.
SW_SHOW | 5 | Active et affiche la fenêtre.
SW_SHOWMAXIMIZED | 3 | Active et agrandit la fenêtre.
SW_SHOWMINIMIZED | 2 | Active et réduit la fenêtre.
SW_SHOWNA | 8 | Identique à SW_SHOW sauf que la fenêtre n'est pas activée.

Pas d'exemple disponible...


Sleep

 Fonction Sleep

Declare Sub Sleep Lib "kernel32" ( _
ByVal dwMilliseconds As Long)
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de suspendre pour un temps donné l'application courante.
dwMilliseconds est la durée de mise en sommeil en millisecondes.
Attention, durant toute cette période, la fenêtre de l'application ne sera pas mise à jour (rafraîchit). D'une certaine façon, l'application est gelée durant ce laps de temps.

Exemple d'utilisation :

' (Exemple de André ARASTE - andre.araste@wanadoo.fr)
' Dans une feuille vierge, placez un contrôle Shape à qui vous définirez à
' la création les propriétés suivantes:
' Shape = Circle
' FillStyle = Solide
' Placez ensuite un CommandButton.
' Le click sur le bouton provoquera l'allumage du cercle en couleur avec un
' cadencement à la seconde.
' Voici le programme:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
' Temporisation 1 sec
Dim I As Integer
For I = 0 To 15
Shape1.Refresh
Sleep 1000
Shape1.FillColor = QBColor(I)
Beep
Next I
End Sub


StretchBlt

 Fonction StretchBlt

Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" ( _
ByVal hdc As Long, _
 ByVal x As Long, _
 ByVal y As Long, _
 ByVal nWidth As Long, _
 ByVal nHeight As Long, _
 ByVal hSrcDC As Long, _
 ByVal XSrc As Long, _
 ByVal YSrc As Long, _
 ByVal nSrcWidth As Long, _
 ByVal nSrcHeight As Long, _
 ByVal dwRop As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(Origine : Philippe Plançon - plancon@onetelnet.fr)
Cette fonction permet de redimensionner une image, et elle a le même effet que la propriété Stretch (=Vraie) d'un contrôle Image. Mais la propriété Stretch n'existe pas pour les contrôles Picture, c'est pourquoi il est intéressant de connaître cette API.
Contrôle récepteur :
hDC est le handle du contrôle qui reçoit l'image.
X, Y, nWidth et nHeight définissent le rectangle dans lequel l'image source s'insérera.
Contrôle source :
hSrcDC est le handle du contrôle source.
XSrc, YSrc, nSrcWidth, nSrcHeight définissent le rectangle de l'image source (cela peut-être le contrôle complet une portion).
La constante :
dwRop définit l'opération à effectuer, voir la liste des constantes disponibles dans le tableau ci-dessous.

Constante | Valeur | Définition
SRCAND | &H8800C6 | Combine source et destination avec l'opérateur logique AND.
SRCCOPY | &HCC0020 | Copie l'image source intégralement sans se soucier de l'image de destination.
SRCERASE | &H440328 | Combine source et l'inversion de la destination avec l'opérateur logique AND.
SRCINVERT | &H660046 | Combine source et destination avec l'opérateur logique XOR.
SRCPAINT | &HEE0086 | Combine source et destination avec l'opérateur logique OR.
NOTSRCCOPY | &H330008 | Copie l'image source inversée sans se soucier de l'image de destination.
NOTSRCERASE | &H1100A6 | Combine source et destination avec l'opérateur logique OR puis inversion.
MERGEPAINT | &HBB0226 | Combine le source inversé et l'image de destination avec l'opérateur logique OR.
DSTINVERT | &H550009 | Inversion de l'image de destination sans se soucier du source.
BLACKNESS | &H42 | Tout en noir.
WHITENESS | &HFF0062 | Tout en blanc.

Exemple d'utilisation :

' (Exemple de Philippe Plançon)
' A mettre dans un module...
' Zoom d'une image (Unité le pixel)
Declare Function StretchBlt Lib "gdi32.dll" ( _
ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal hSrcDC As Long, ByVal XSrc As Long, _
ByVal YSrc As Long, ByVal nSrcWidth As Long, _
ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

' Copie une image (Pour API : StretchBlt)
Public Const SRCCOPY = &HCC0020

' A mettre dans une feuille...
Private Sub Form_Load()
' Charger une image dans Picture1 et mettre la propriété AutoSize à vraie
' Attention : il faut mettre les propriétés autoredraw des contrôles images à vraie
' sinon vous allez avoir des surprises :)
' Attention : les contours sont comptabilisés dans la hauteur et la largeur
' Mettre la propriété Appearance à 0 (plat) et BorderStyle à 0 (Aucun)
' pour les deux contrôles Image.

' ---Change le pointeur de la souris---
Screen.MousePointer = vbHourglass
' ---Déclaration des variables---
Dim Ret As Long
Dim Hauteur As Long
Dim Largeur As Long
Dim Zoom As Single
' ---Initialisation---
Zoom = 0.5
Picture1.ScaleMode = vbPixels
Picture2.ScaleMode = vbPixels
Me.ScaleMode = vbPixels
Hauteur = CLng(Zoom * Picture1.Height)
Largeur = CLng(Zoom * Picture1.Width)
' ---Opération a effectuer : COPIER la bitmap de la zone d'image source---
With Picture2
.Width = Largeur
.Height = Hauteur
End With
Ret = StretchBlt(Picture2.hDC, 0, 0, Largeur, Hauteur, _
Picture1.hDC, 0, 0, Picture1.Width, Picture1.Height, _
SRCCOPY)
Picture2.Picture = Picture2.Image
' ---Remet le pointeur de la souris par défaut---
Screen.MousePointer = vbDefault
End Sub


SwapMouseButton

 Fonction SwapMouseButton

Declare Function SwapMouseButton Lib "user32" ( _
ByVal bSwap As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Avec cette fonction, vous pouvez inverser le bouton droit et gauche de la souris.
Si bSwap est mis à 1 les boutons sont inversés, s'il est mis à 0 les boutons retournent à leur état normal.
Si les boutons étaient déjà inversés, la fonction retourne 1 sinon 0.

Exemple d'utilisation :

' (Exemple de Alain Quinet - alain.quinet@free.fr)

Private Declare Function SwapMouseButton Lib "user32" ( _
ByVal bSwap As Long) As Long

' Sur une feuille, vous placez trois boutons
' Command1, Command2, Command3.
' Les boutons Command2 et Command3 vous permettront
' d'inverser ou de restaurer les boutons de votre souris.
' Le bouton Command1 vous permettra de tester le
' fonctionnement des boutons Command2 et Command3.

' Dans l'évenement Click de Command1, vous
' tapez le code qui suit :
Private Sub Command1_Click()
MsgBox ("Youpi")
End Sub

' Dans l'évenement Click de Command2, vous
' tapez le code qui suit :
Private Sub Command2_Click()
Call SwapMouseButton(1)
MsgBox "Boutons inversés"
End Sub

' Dans l'évenement Click de Command3, vous
' tapez le code qui suit :
Private Sub Command3_Click()
Call SwapMouseButton(0)
MsgBox "Boutons restaurés"
End Sub


TextOut

 Fonction TextOut

Declare Function TextOut Lib "gdi32" Alias "TextOutA" ( _
ByVal hdc As Long, _
 ByVal x As Long, _
 ByVal y As Long, _
 ByVal lpString As String, _
 ByVal nCount As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction écrit une chaîne de caractère sur le périphérique spécifié à une position donnée.
Les caractéristiques courantes du texte sont utilisées.
hdc est un pointeur vers le périphérique d'affichage.
x et y sont les coordonnées de départ d'écriture de la chaîne.
lpString est la chaîne de caractère à écrire.
nCount est la longueur de la chaîne.
Si la fonction échoue, elle retourne 0.

Pas d'exemple disponible...


TransparentBlt

 Fonction TransparentBlt

Declare Function TransparentBlt Lib "msimg32.dll" ( _
ByVal hDestDC As Long, _
 ByVal x As Long, _
 ByVal y As Long, _
 ByVal nWidth As Long, _
 ByVal nHeight As Long, _
 ByVal hSrcDC As Long, _
 ByVal xSrc As Long, _
 ByVal ySrc As Long, _
 ByVal nWidthSrc As Long, _
 ByVal nHeightSrc As Long, _
 ByVal crTranparent As Long) As Long
Versions :
. Windows 95/98 : A partir de 98
. Windows NT : Non
. Windows 2000/XP : Oui

Description :
(origine : Phil - plancon@onetelnet.fr)
Cette API permet de faire un blit avec transparence sous Windows 2000 et Windows 98.
hDestDC désigne le handle du DC de destination (exemple : Picture1.hdc).
x et y la positon d'origine dans le handle de destination, nWidth et nHeight les dimensions d'origine.
hSrcDC désigne le handle du source, xSrc et ySrc, sa position d'origine, nWidthSrc et nHeightSrc les dimensions de l'origine.
crTransparent définit la couleur de transparence (que vous pouvez définir avec RGB).

TransparentBlt fonctionne donc comme StechtBlt (ou PaintPicture), sans les opérations de ROP (il ne fait que du vbSrcCopy) mais il ajoute cette couleur de transparence.

NB : Si votre PictureBox de destination a sa propriété AutoRedraw à True, n'oubliez pas d'utiliser sa méthode Refresh après le Blit.

Pas d'exemple disponible...


UnionRect

 Fonction UnionRect

Declare Function UnionRect Lib "user32" Alias "UnionRect" ( _
lpDestRect As RECT, _
 lpSrc1Rect As RECT, _
 lpSrc2Rect As RECT) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction calcule l'union de deux rectangles (coordonnées du rectangle représentant l'intersection).
lpDestRect est le rectangle résultat de l'intersection,
lpSrc1Rect et lpSrc2Rect sont les deux rectangles de départ.
Les rectangles sont tous représentés par la structure RECT qui définie les coordonnées et dimensions de chacun d'entre eux.
Si l'intersection des deux rectangles est vide, la fonction retourne 0.

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Pas d'exemple disponible...


UpdateWindow

 Fonction UpdateWindow

Declare Function UpdateWindow Lib "user32" Alias "UpdateWindow" ( _
ByVal hwnd As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction rafraichit l'état d'une fenêtre.
hwnd est un pointeur vers la fenêtre à rafraîchir.

Pas d'exemple disponible...


WNetConnectionDialog

 Fonction WNetConnectionDialog

Declare Function WNetConnectionDialog Lib "mpr.dll" ( _
ByVal hwnd As Long, _
 ByVal dwType As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction affiche la boîte de dialogue de connexion d'un lecteur réseau (ou imprimante réseau).
hwnd est le handle de la fenêtre appelante.
dwType est une constante définissant le type de ressource à connecter (voir tableau ci-dessous).
Suivant les cas, la fonction retourne une valeur définit dans l'autre tableau ci-dessous.

Constante | Valeur | Définition
RESOURCETYPE_DISK | &H1 | Connexion à des ressources de type disque.
RESOURCETYPE_PRINT | &H2 | Connexion à des ressources de type imprimante.
WN_SUCCESS | 0 | Pas d'erreur.
WN_OUT_OF_MEMORY | 8 | Mémoire insuffisante pour effectuer l'opération.
WN_FUNCTION_BUSY | 170& | La fonction est occupée (essayer de nouveau).
WN_EXTENDED_ERROR | 1208& | Erreur réseau étendue (plus d'infos sur l'erreur avec WNetGetLastError).
WN_NO_NETWORK | 1222& | Pas de réseau trouvé.

Pas d'exemple disponible...


WNetDisconnectDialog

 Fonction WNetDisconnectDialog

Declare Function WNetDisconnectDialog Lib "mpr.dll" ( _
ByVal hwnd As Long, _
 ByVal dwType As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction affiche la boîte de dialogue de déconnexion d'un lecteur réseau (ou imprimante réseau).
hwnd est le handle de la fenêtre appelante.
dwType est une constante définissant le type de ressource à déconnecter (voir tableau ci-dessous).
Suivant les cas, la fonction retourne une valeur définit dans l'autre tableau ci-dessous.

Constante | Valeur | Définition
RESOURCETYPE_DISK | &H1 | Connexion à des ressources de type disque.
RESOURCETYPE_PRINT | &H2 | Connexion à des ressources de type imprimante.
WN_SUCCESS | 0 | Pas d'erreur.
WN_OUT_OF_MEMORY | 8 | Mémoire insuffisante pour effectuer l'opération.
WN_FUNCTION_BUSY | 170& | La fonction est occupée (essayer de nouveau).
WN_EXTENDED_ERROR | 1208& | Erreur réseau étendue (plus d'infos sur l'erreur avec WNetGetLastError).
WN_NO_NETWORK | 1222& | Pas de réseau trouvé.

Pas d'exemple disponible...


WritePrivateProfileString

 Fonction WritePrivateProfileString

Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
 ByVal lpKeyName As Any, _
 ByVal lpString As Any, _
 ByVal lpFileName As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette API permet de créer ou de modifier vos propres fichiers d'initialisations sans se soucier des détails (par exemple... la gestion des fichiers), si le fichier n'existe pas il est créé, sinon il est modifié (c'est bien n'est ce pas...). La fonction retourne 0 si la création ou la modification du fichier d'initialisation a échoué, sinon elle retourne 1.
Voici le détail des variables :
lpApplicationName définit le nom de la section,
lpKeyName définit le nom de la clef,
lpString définit la valeur à ajouter,
lpFileName définit le nom du fichier d'initialisation.

Résumons, voici la structure du fichier d'initialisation lpFileName :

[lpApplicationName]
lpKeyName=lpString

Exemple d'utilisation :

' Pour enregistrer dans un fichier INI
Private Declare Function WritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Public Sub EcrireIni(stSection As String, stKey As String, stValeur As String, stFichier As String)
' Lecture d'une valeur dans un fichier INI
' stSection est le la partie designée entre crochets ([option] par exemple)
' stKey est le nom de la clé à récupérer (COULEUR=... par exemple)
' stValeur est la valeur à stocker
' stFichier est le fichier à manipuler
WritePrivateProfileString stSection, stKey, stValeur, stFichier
End Sub


WriteProfileString

 Fonction WriteProfileString

Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" ( _
ByVal lpszSection As String, _
 ByVal lpszKeyName As String, _
 ByVal lpszString As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction enregistre des informations dans le fichier "win.ini".
lpszSection est la section du fichier concerné par l'écriture.
lpszKeyName est le nom de la clé qui sera ajoutée ou modifiée.
lpszString est la valeur de la clé.
Si le nom de la clé est omis, toute la section est effacée.
Si la valeur de la clé n'est pas renseignée, la clé est effacée du fichier.

Pas d'exemple disponible...


keybd_event

 Fonction keybd_event

Declare Sub keybd_event Lib "user32" Alias "keybd_event" ( _
ByVal bVk As Byte, _
 ByVal bScan As Byte, _
 ByVal dwFlags As Long, _
 ByVal dwExtraInfo As Long)
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette API permet de simuler des frappes au clavier tout comme vous le feriez.
bVk est le code ascii de la touche à envoyer au buffer clavier.
bScan est utilisé pour définir l'action de certaines touches spéciales comme "Imprime écran".
dwFlags est l'évènement que l'on souhaite génèrer comme KeyUp ou l'utilisation des touches étendues sur les claviers spéciaux.
dwExtraInfo permet d'ajouter une valeur supplémentaire à la touche actionnée.

Exemple d'utilisation :

' Exemple de Phil (Plancon@Onetelnet.fr)

Option Explicit

Private Declare Sub keybd_event Lib "user32" Alias "keybd_event" ( _
ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)

' bVk est le code ascii de la touche
Private Const VK_LWIN = &H5B
Private Const VK_APPS = &H5D

' Pour d'autres touches...
' a à z 65 à 90
' Home 36
' End 35
' Flêche vers le haut 38
' Flêche vers le bas 40
' Flêche vers la gauche 37
' Flêche vers la droite 39
' Echap 27
' Impr écran 44 (= vbKeySnapshot)
' Page haut 33
' Page bas 34
' Insert 45
' F1 à F12 112 à 123
' Barre d'espace 32
' Ctrl 17
' Alt 18
' Maj 16
' Verr Num 144
' Arrêt défil 145
' Tab 9
' Shift 16

' bscan (Lorsque l'on utilise la touche imprime écran)
Const TheScreen = 1 ' Copie l'écran
Const TheForm = 0 ' Copie la fenêtre active

' dwFlags (le drapeau) :
Const KEYEVENTF_EXTENDEDKEY = &H1 ' Pour actionner les touches étendues
Const KEYEVENTF_KEYUP = &H2 ' Relache la touche

' ---Cet exemple montre comment gérer Windows---
Sub GestionWindows(Index As Integer)
' ---déclarations des variables---
Dim VK_ACTION As Long
' ---Traite l'action---
Select Case Index
Case 0 ' Ouverture de l'Exploreur
VK_ACTION = &H45 ' La lettre e (ascii 69)
Case 1 ' Rechercher des fichiers
VK_ACTION = &H46 ' La lettre f (ascii 70)
Case 2 ' Réduire toutes les fenêtres
VK_ACTION = &H4D ' La lettre m (ascii 77)
Case 3 ' Ouverture du menu exécuter
VK_ACTION = &H52 ' La lettre r (ascii 82)
Case 4 ' Actionner le menu démarrer
VK_ACTION = &H5B ' Le bouton démarrer de windows sur le clavier (ascci 91)
End Select
' ---Envoie de la séquence de touche---
Call keybd_event(VK_LWIN, 0, 0, 0)
Call keybd_event(VK_ACTION, 0, 0, 0)
Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
End Sub

Private Sub Command1_Click()
' ---Copie d'écran de la forme active (pour l'écran utiliser "TheScreen")---
keybd_event vbKeySnapshot, TheForm, 0&, 0&
' ---On laisse le temps à Windows de charger l'image en mémoire---
DoEvents
' ---Copie du presse-papier dans le contrôle image1---
Image1 = Clipboard.GetData(vbCFBitmap)
End Sub


lstrcat

 Fonction lstrcat

Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" ( _
ByVal lpString1 As String, _
 ByVal lpString2 As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction concatène deux chaîne et retourne un pointeur sur le résultat.
lpString1 est la première chaîne à concaténer.
lpString2 est la chaîne qui sera ajoutée à la première.
La fonction retourne 0 en cas d'échec, sinon elle retourne un pointeur sur la chaîne résultat.

L'intérêt que présente cette fonction dans un programme VB c'est qu'elle retourne un pointeur sur une chaîne. Certains appels à des fonctions API nécessitent des pointeurs sur des chaînes, on peut donc faire un truc du genre :
lgPointeur = lstrcat(stChaine, "")
On récupère alors un pointeur sur notre variable 'stChaine'.

Pas d'exemple disponible...


mciExecute

 Fonction mciExecute

Declare Function mciExecute Lib "winmm.dll" ( _
ByVal lpstrCommand As String) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
(Origine : Michel DEFERT - micheldefert@free.fr)
Cette fonction permet d'effectuer un certain nombre d'opération sur les périphériques MCI.
lpstrCommand indique l'action à effectuer.

Si la fonction réussie elle retourne une valeur différente de 0.

Exemple d'utilisation :

' Exemple de Michel DEFERT - micheldefert@free.fr

Private Sub Form_Load()
' Joue le fichier à l'ouverture de la feuille
Dim X
' Nom et chemin de votre fichier WAV ou AVI
X = mciExecute("play C:\windows\options\cabs\util\test.avi")
End Sub


mouse_event

 Fonction mouse_event

Declare Sub mouse_event Lib "user32" Alias "mouse_event" ( _
ByVal dwFlags As Long, _
 ByVal dx As Long, _
 ByVal dy As Long, _
 ByVal cButtons As Long, _
 ByVal dwExtraInfo As Long)
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction génère des évènements souris. Vous pouvez ainsi déplacer la souris ou appuyer sur ces boutons rien qu'en utilisant cette API.
dwFlags contient un ou plusieurs des constantes du tableau ci-dessous,
dx et dy indiquent une position absolue ou relative (dépend de dwFlags égal à MOUSEEVENTF_ABSOLUTE ou non),
cButtons et dwExtraInfo doivent être mis à 0.

Constante | Valeur | Définition
MOUSEEVENTF_ABSOLUTE | &H8000 | Les coordonnées sont indiquées en absolue (entre 0 et 65535).
MOUSEEVENTF_LEFTDOWN | &H2 | Simule une pression sur le bouton gauche de la souris.
MOUSEEVENTF_LEFTUP | &H4 | Simule un relâchement du bouton gauche de la souris.
MOUSEEVENTF_MIDDLEDO | &H20 | Simule une pression sur le bouton du milieu de la souris.
MOUSEEVENTF_MIDDLEUP | &H40 | Simule un relâchement du bouton du milieu de la souris.
MOUSEEVENTF_MOVE | &H1 | Indique un mouvement de la souris.
MOUSEEVENTF_RIGHTDOW | &H8 | Simule une pression sur le bouton droit de la souris.
MOUSEEVENTF_RIGHTUP | &H10 | Simule un relâchement du bouton droit de la souris.

Exemple d'utilisation :

' (Exemple de Philippe Plançon)
' ---API permettant de déplacer la souris---
Declare Sub mouse_event Lib "User32" (ByVal dwFlags As Long, _
ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)

' ---Définition des constantes---
Global Const MOUSEEVENTF_ABSOLUTE = &H8000
Global Const MOUSEEVENTF_LEFTDOWN = &H2
Global Const MOUSEEVENTF_LEFTUP = &H4
Global Const MOUSEEVENTF_MIDDLEDO = &H20
Global Const MOUSEEVENTF_MIDDLEUP = &H40
Global Const MOUSEEVENTF_MOVE = &H1
Global Const MOUSEEVENTF_RIGHTDOW = &H8
Global Const MOUSEEVENTF_RIGHTUP = &H10
Global Const BaseTemps = 10 ' Base de temps d'enregistrement

' ---Tableau enregistrant les mouvements de la souris---
Global SourisMagic() As Position
Global NbMouvement As Long
Global Compte As Long
Global j As Long

' ---Définition du type---
Type Position
X As Long
Y As Long
Sync As Long ' Enregistrement du temps
End Type

Private Sub Form_Click()
' ---Affiche le mouvement de la souris---
Timer1.Interval = 0
Timer2.Interval = BaseTemps
Compte = 0
j = 1
End Sub

Private Sub Form_Load()
' ---Initialisation des contrôles---
Me.WindowState = vbMaximized
NbMouvement = 0
Compte = 0
Timer1.Interval = BaseTemps
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Timer1.Interval <> 0 Then
' ---Enregistre ce que fais la souris---
NbMouvement = NbMouvement + 1
ReDim Preserve SourisMagic(NbMouvement)
' ---Enregistre que les mouvements---
' Attention, la souris se positionne sur l'objet Screen et non sur la feuille,
' d'où les constantes 40 et 350 qui correspondent aux bordures et à la hauteur
' de l'en-tête de feuille.
SourisMagic(NbMouvement).X = (X + Me.Left + 40) / Screen.Width * 65535
SourisMagic(NbMouvement).Y = (Y + Me.Top + 350) / Screen.Height * 65535
SourisMagic(NbMouvement).Sync = Compte
Me.PSet (X, Y), QBColor(Rnd * 15)
End If
End Sub

Private Sub Timer1_Timer()
' ---Compteur temporel---
Compte = Compte + 1
End Sub

Private Sub Timer2_Timer()
' ---Fait bouger la souris---
If SourisMagic(j).Sync <= Compte Then
Call mouse_event(MOUSEEVENTF_MOVE + MOUSEEVENTF_ABSOLUTE, _
SourisMagic(j).X, SourisMagic(j).Y, 0, 0)
j = j + 1
End If
' ---Fin du mouvement et fin du programme---
If j = NbMouvement Then
Timer2.Interval = 0
End If
' ---Compteur temporel---
Compte = Compte + 1
End Sub


waveOutGetNumDevs

 Fonction waveOutGetNumDevs

Declare Function waveOutGetNumDevs Lib "winmm.dll" Alias "waveOutGetNumDevs" () As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne le nombre de périphérique de sortie audio présents sur le système.
La fonction ne prend aucun argument et retourne 0 en cas d'erreur (ou si aucune carte son n'est installée).

Exemple d'utilisation :

Private Declare Function waveOutGetNumDevs Lib "winmm" () As Long

Private Function CarteSonExiste() As Boolean
' Renvoie "Vrai" si une carte son est présente, sinon "Faux".
Dim lgTMP As Long
lgTMP = waveOutGetNumDevs()
' On récupère dans lgTMP le nombre de cartes son installées.
' Il en faut donc au moins une pour renvoyer "Vrai".
CarteSonExiste = (lgTMP > 0)
End Sub


Fonctions API - Visual Basic Research Center

Liste des fonctions API disponibles (212)

advapi32.dll

GetUserName
RegOpenKey
RegCreateKey
RegQueryValueEx
RegSetValueEx
RegCloseKey

comdlg32.dll

GetSaveFileName
GetOpenFileName

gdi32

AddFontResource
RemoveFontResource
CreateBitmap
CreateBitmapIndirect
CreateCompatibleBitmap
CreateCompatibleDC
GetBitmapDimensionEx
SetBitmapDimensionEx
StretchBlt
BitBlt
SetPixel
GetPixel
RoundRect
Rectangle
Ellipse
GetBkMode
SetBkMode
GetBkColor
SetBkColor
TextOut
SetTextColor
GetTextColor
GetTextFace
GetTextCharacterExtra
SetTextCharacterExtra
ExtFloodFill
MoveToEx
LineTo
Arc
ArcTo

kernel32

GetComputerName
SetComputerName
SetVolumeLabel
GetVolumeInformation
GetLogicalDrives
GetTickCount
CopyFile
GetTempPath
FindFirstFile
FindNextFile
FindClose
GetSystemDirectory
GetWindowsDirectory
GetTempFileName
GetFileAttributes
SetFileAttributes
DeleteFile
RemoveDirectory
CreateDirectory
GetSystemTime
GetLocalTime
SetLocalTime
SetSystemTime
GetDriveType
GetShortPathName
lstrcat
GetDiskFreeSpace
Sleep
CloseHandle
GetExitCodeProcess
Beep
WriteProfileString

WritePrivateProfileString
GetPrivateProfileString
GlobalMemoryStatus
GetCurrentProcess
SetPriorityClass
GetLastError

mpr.dll

WNetConnectionDialog
WNetDisconnectDialog

msimg32.dll

TransparentBlt

odbc32.dll

SQLAllocEnv
SQLFreeEnv
SQLAllocConnect
SQLConnect
SQLDriverConnect
SQLFreeConnect
SQLDisconnect
SQLAllocStmt
SQLFreeStmt
SQLTables
SQLGetInfo
SQLPrepare
SQLExecute
SQLExecDirect
SQLNumResultCols
SQLDescribeCol
SQLFetch
SQLGetData
SQLError
SQLRowCount
SQLTransact
SQLMoreResults
SQLPutData
SQLParamData
SQLParamOptions
SQLSetScrollOptions
SQLSetCursorName
SQLGetCursorName
SQLExtendedFetch
SQLColAttributes
SQLSetPos
SQLBindParameter
SQLBindCol
SQLNumParams
SQLSetStmtOption
SQLSetConnectOption

shell32.dll

ExtractIcon
FindExecutable
SHAddToRecentDocs

user32

GetMenu
GetSystemMenu
DrawIcon
DrawMenuBar
GetMenuItemCount
GetSubMenu
GetMenuString
GetMenuItemID
HiliteMenuItem
EnableMenuItem
ArrangeIconicWindows
GetWindowLong
GetWindowRect
GetWindowText
GetWindowTextLength
IsWindow
SetWindowLong
SetWindowText
BringWindowToTop
FlashWindow

Afficher la liste par ordre alphabétique

IsWindowVisible
EnableWindow
GetDesktopWindow
MoveWindow
ExitWindows
GetCursorPos
ScreenToClient
ShowCursor
GetDoubleClickTime
SetDoubleClickTime
mouse_event
GetSystemMetrics
FindWindow
GetNextWindow
GetParent
IsZoomed
SwapMouseButton
GetClipCursor
ClipCursor
SetRect
SetRectEmpty
EqualRect
CopyRect
IntersectRect
EnumChildWindows
EnumWindows
GetClassName
IsIconic
IsCharAlpha
IsCharAlphaNumeric
IsCharLower
IsCharUpper
OpenIcon
LockWindowUpdate
SetWindowPos
DeleteMenu
keybd_event
UnionRect
InflateRect
IsChild
LoadCursorFromFile
GetKeyState
PaintDesktop
UpdateWindow
CharLower
CharUpper
PtInRect
SetCursorPos
ShowWindow
AnimateWindow
LockWorkStation
GetActiveWindow
GetForegroundWindow
MessageBeep

wininet.dll

InternetOpen
InternetOpenUrl
InternetReadFile
InternetCloseHandle
InternetConnect
FtpSetCurrentDirectory
FtpGetCurrentDirectory
FtpDeleteFile
FtpCreateDirectory
FtpRemoveDirectory
FtpRenameFile
FtpPutFile
HttpOpenRequest
HttpSendRequest
HttpQueryInfo

winmm.dll

waveOutGetNumDevs
mciExecute

winspool.drv

OpenPrinter
PrinterProperties
ClosePrinter