Et en fin ta dernière question, pour écrire dans une autre fenêtre (c une methode parmi tant d'autre)
ProcedureDLL SendKeys(handle, window$, keys$) ; Ecrit du code pour vous (si handle est précisé, la fonction écrit dans la fenêtre choisie) (si window$ est précisé, la fonction écrit dans la fenêtre portant le nom défini)
If window$ <> "" : handle = FindWindow_ (0, window$) : EndIf ; Use window$ instead of handle.
If IsWindow_ (handle) = 0 ; Does the target window actually exist?
ProcedureReturn 0 ; Nope, so report 0 for failure to type.
Else
; This block gives the target window the focus before typing.
thread1 = GetWindowThreadProcessId_ ( GetForegroundWindow_ (), 0)
thread2 = GetWindowThreadProcessId_ (handle, 0)
If thread1 <> thread2 : AttachThreadInput_ (thread1, thread2, #True ) : EndIf
SetForegroundWindow_ (handle) ; Target window now has the focus for typing.
Sleep_ (125) ; 1/8 second pause before typing To prevent fast CPU problems.
; Now the actual typing starts.
keybd_event_ ( #VK_MENU , 0, #KEYEVENTF_KEYUP , 0) ; Release ALT key before typing.
keybd_event_ ( #VK_CONTROL , 0, #KEYEVENTF_KEYUP , 0) ; Release CONTROL key before typing.
keybd_event_ ( #VK_SHIFT , 0, #KEYEVENTF_KEYUP , 0) ; Release SHIFT key before typing.
keybd_event_ ( #VK_LWIN , 0, #KEYEVENTF_KEYUP , 0) ; Release WINDOWS key before typing.
For r = 1 To Len (keys$)
vk$ = Mid (keys$, r, 1)
If vk$ = "{" ; Special key found.
s = FindString (keys$, "}" , r + 1) - (r + 1) ; Get length of special key.
s$ = Mid (keys$, r + 1, s) ; Get special key name.
Select s$ ; Get virtual key code of special key.
Case "ALTDOWN" : keybd_event_ ( #VK_MENU , 0, 0, 0) ; Hold ALT down.
Case "ALTUP" : keybd_event_ ( #VK_MENU , 0, #KEYEVENTF_KEYUP , 0) ; Release ALT.
Case "BACKSPACE" : vk = #VK_BACK
Case "CONTROLDOWN" : keybd_event_ ( #VK_CONTROL , 0, 0, 0) ; Hold CONTROL down.
Case "CONTROLUP" : keybd_event_ ( #VK_CONTROL , 0, #KEYEVENTF_KEYUP , 0) ; Release CONTROL.
Case "DELAY" : vk = 0 : Sleep_ (1000) ; Delay typing for one second.
Case "DELETE" : vk = #VK_DELETE
Case "DOWN" : vk = #VK_DOWN
Case "END" : vk = #VK_END
Case "ENTER" : vk = #VK_RETURN
Case "ESCAPE" : vk = #VK_ESCAPE
Case "F1" : vk = #VK_F1
Case "F2" : vk = #VK_F2
Case "F3" : vk = #VK_F3
Case "F4" : vk = #VK_F4
Case "F5" : vk = #VK_F5
Case "F6" : vk = #VK_F6
Case "F7" : vk = #VK_F7
Case "F8" : vk = #VK_F8
Case "F9" : vk = #VK_F9
Case "F10" : vk = #VK_F10
Case "F11" : vk = #VK_F11
Case "F12" : vk = #VK_F12
Case "HOME" : vk = #VK_HOME
Case "INSERT" : vk = #VK_INSERT
Case "LEFT" : vk = #VK_LEFT
Case "PAGEDOWN" : vk = #VK_NEXT
Case "PAGEUP" : vk = #VK_PRIOR
Case "PRINTSCREEN" : vk = #VK_SNAPSHOT
Case "RETURN" : vk = #VK_RETURN
Case "RIGHT" : vk = #VK_RIGHT
Case "SPACE" : vk = #VK_SPACE
Case "SHIFTDOWN" : shifted = 1 : keybd_event_ ( #VK_SHIFT , 0, 0, 0) ; Hold SHIFT down.
Case "SHIFTUP" : shifted = 0 : keybd_event_ ( #VK_SHIFT , 0, #KEYEVENTF_KEYUP , 0) ; Release SHIFT.
Case "TAB" : vk = #VK_TAB
Case "UP" : vk = #VK_UP
Case "WINDOWS" : vk = #VK_LWIN
EndSelect
If Left (s$, 3) <> "ALT" And Left (s$, 7) <> "CONTROL" And Left (s$, 5) <> "SHIFT"
keybd_event_ (vk, 0, 0, 0) : keybd_event_ (vk, 0, #KEYEVENTF_KEYUP , 0) ; Press the special key.
EndIf
r + s + 1 ; Continue getting the keystrokes that follow the special key.
Else
vk = VkKeyScanEx_ ( Asc (vk$), GetKeyboardLayout_ (0)) ; Normal key found.
If vk > 303 And shifted = 0 : keybd_event_ ( #VK_SHIFT , 0, 0, 0) : EndIf ; Due to shifted character.
keybd_event_ (vk, 0, 0, 0) : keybd_event_ (vk, 0, #KEYEVENTF_KEYUP , 0) ; Press the normal key.
If vk > 303 And shifted = 0 : keybd_event_ ( #VK_SHIFT , 0, #KEYEVENTF_KEYUP , 0) : EndIf ; Due to shifted character.
EndIf
Next
If thread1 <> thread2 : AttachThreadInput_ (thread1, thread2, #False ) : EndIf ; Finished typing to target window!
keybd_event_ ( #VK_MENU , 0, #KEYEVENTF_KEYUP , 0) ; Release ALT key in case user forgot.
keybd_event_ ( #VK_CONTROL , 0, #KEYEVENTF_KEYUP , 0) ; Release CONTROL key in case user forgot.
keybd_event_ ( #VK_SHIFT , 0, #KEYEVENTF_KEYUP , 0) ; Release SHIFT key in case user forgot.
keybd_event_ ( #VK_LWIN , 0, #KEYEVENTF_KEYUP , 0) ; Release WINDOWS key in case user forgot.
ProcedureReturn 1 ; Report successful typing! : )
EndIf
EndProcedure