[VBA]Obtenir le "handle" d'un objet
Bonjour à tous,
J'ai découvert sur ce site ce petit bout de code qui semble répondre à mon besoin.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
- Copiez tout d'abord ces déclarations au début du module de la form :
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, _
ByVal Length As Long)
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_LINELENGTH = &HC1
Private Const EM_LINEINDEX = &HBB
Private Const EM_GETLINE = &HC4
- La procédure ci-dessous affiche une par une les lignes du textbox dont le handle est passé en paramètre :
Private Sub AfficheLignes(lngHandleTextBox As Long)
Dim lngNbLignes As Long, i As Long
Dim lngIndexCar As Long, intLongueurLigne As Integer
Dim strLigne As String
'nombre de lignes
lngNbLignes = SendMessage(lngHandleTextBox, EM_GETLINECOUNT, 0, 0)
For i = 1 To lngNbLignes
'index du premier caractère de la ligne
lngIndexCar = SendMessage(lngHandleTextBox, EM_LINEINDEX, i - 1, 0)
'longueur de la ligne
intLongueurLigne = SendMessage(lngHandleTextBox, EM_LINELENGTH, lngIndexCar, 0)
'récupère la ligne dans la chaîne strLigne
strLigne = Space(intLongueurLigne)
CopyMemory ByVal strLigne, intLongueurLigne, Len(intLongueurLigne)
SendMessage lngHandleTextBox, EM_GETLINE, i - 1, ByVal strLigne
MsgBox strLigne
Next
End Sub |
Le hic, c'est que mon expérience est limitée en programmation (surtout en VB) et que je ne sais pas comment obtenir le "handle" du text box que je doit passer en paramètre.
Cela dit, votre aide serait grandement apprécié.
Rob.