- Public Sub SendString(ByVal vhTargetWnd As Long, ByRef vsInput As String)
- Dim i As Long
- Dim nRc As Integer
- For i = 1 To Len(vsInput)
- nRc = VkKeyScan(AscW(Mid$(vsInput, i, 1)))
- If nRc <> -1 Then
- SendKeysEx vhTargetWnd, nRc And &HFF&, nRc \ &H100&
- End If
- Next i
- End Sub
-
- Public Sub SendKeysEx(ByVal vhTargetWnd As Long, ByVal veKey As VBRUN.KeyCodeConstants, Optional ByVal veShift As VBRUN.ShiftConstants, Optional ByVal vbExtendedKey As Boolean = False)
- Dim xbMemBuffer(255) As Byte
- Dim xbNewBuffer(255) As Byte
- Dim nKeyParam As Long
- Dim nTargetThreadID As Long
- '# Si la cible est valide...
- If IsWindow(vhTargetWnd) Then
- nTargetThreadID = GetWindowThreadProcessId(vhTargetWnd, ByVal 0&)
- AttachThreadInput GetCurrentThreadId, nTargetThreadID, 1&
-
- nKeyParam = MapVirtualKey(veKey, 0) * &H10000
- If vbExtendedKey Then
- nKeyParam = nKeyParam Or &H1000000 '# bit 24
- End If
-
- '# On mémorise l'etat du clavier
- GetKeyboardState xbMemBuffer(0)
-
- If (veShift And vbShiftMask) <> 0 Then
- xbNewBuffer(vbKeyShift) = &H80
- End If
- If (veShift And vbCtrlMask) <> 0 Then
- xbNewBuffer(vbKeyControl) = &H80
- End If
-
- '# On place notre image du clavier en mémoire
- SetKeyboardState xbNewBuffer(0)
-
- '# On prévient la cible que le clavier a été manipulé
- PostMessage vhTargetWnd, WM_KEYDOWN, veKey, nKeyParam
- PostMessage vhTargetWnd, WM_KEYUP, veKey, nKeyParam Or &HC0000000
-
- '# On 'force' la cible a prendre en compte les changements effectués
- Sleep 1
-
- '# Il ne nous reste plus alors qu'a restaurer l'image du clavier.
- SetKeyboardState xbMemBuffer(0)
- AttachThreadInput GetCurrentThreadId, nTargetThreadID, 0&
- End If
- End Sub
Public Sub SendString(ByVal vhTargetWnd As Long, ByRef vsInput As String)
Dim i As Long
Dim nRc As Integer
For i = 1 To Len(vsInput)
nRc = VkKeyScan(AscW(Mid$(vsInput, i, 1)))
If nRc <> -1 Then
SendKeysEx vhTargetWnd, nRc And &HFF&, nRc \ &H100&
End If
Next i
End Sub
Public Sub SendKeysEx(ByVal vhTargetWnd As Long, ByVal veKey As VBRUN.KeyCodeConstants, Optional ByVal veShift As VBRUN.ShiftConstants, Optional ByVal vbExtendedKey As Boolean = False)
Dim xbMemBuffer(255) As Byte
Dim xbNewBuffer(255) As Byte
Dim nKeyParam As Long
Dim nTargetThreadID As Long
'# Si la cible est valide...
If IsWindow(vhTargetWnd) Then
nTargetThreadID = GetWindowThreadProcessId(vhTargetWnd, ByVal 0&)
AttachThreadInput GetCurrentThreadId, nTargetThreadID, 1&
nKeyParam = MapVirtualKey(veKey, 0) * &H10000
If vbExtendedKey Then
nKeyParam = nKeyParam Or &H1000000 '# bit 24
End If
'# On mémorise l'etat du clavier
GetKeyboardState xbMemBuffer(0)
If (veShift And vbShiftMask) <> 0 Then
xbNewBuffer(vbKeyShift) = &H80
End If
If (veShift And vbCtrlMask) <> 0 Then
xbNewBuffer(vbKeyControl) = &H80
End If
'# On place notre image du clavier en mémoire
SetKeyboardState xbNewBuffer(0)
'# On prévient la cible que le clavier a été manipulé
PostMessage vhTargetWnd, WM_KEYDOWN, veKey, nKeyParam
PostMessage vhTargetWnd, WM_KEYUP, veKey, nKeyParam Or &HC0000000
'# On 'force' la cible a prendre en compte les changements effectués
Sleep 1
'# Il ne nous reste plus alors qu'a restaurer l'image du clavier.
SetKeyboardState xbMemBuffer(0)
AttachThreadInput GetCurrentThreadId, nTargetThreadID, 0&
End If
End Sub