je te prépare ça
...
Finis, le résultat, et qui marche en plus :
Code : Tout sélectionner
Procedure KeyBoardEvent(Touche, ToucheSpecial)
; WindowID : fenêtre qui va recevoir la touche
; Touche : Touche appuyée, voir constantes PB dans l'aide de AddKeyboardShortcut()
; ToucheSpecial :
; = 1 si touche Control appuyée
; = 2 si touche Alt appuyée
; = 0 sinon
SetForeGroundWindow_(WindowID)
If OpenLibrary(0, "user32.dll")
Select ToucheSpecial
Case 1
CallFunction(0, "keybd_event", #VK_CONTROL, 0, 0, 0)
Case 2
CallFunction(0, "keybd_event", #VK_MENU, 0, 0, 0)
EndSelect
CallFunction(0, "keybd_event", Touche, 0, 0, 0)
Delay(10)
CallFunction(0, "keybd_event", Touche, 0, #KEYEVENTF_KEYUP, 0)
Select ToucheSpecial
Case 1
CallFunction(0, "keybd_event", #VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)
Case 2
CallFunction(0, "keybd_event", #VK_MENU, 0, #KEYEVENTF_KEYUP, 0)
EndSelect
CloseLibrary(0)
EndIf
EndProcedure
NewList Liste_Fenetres()
Procedure.l RunProgramEx(NomFichier$, Parametre$, RepertoireCourant$)
ClearList(Liste_Fenetres())
; Fenêtre au premier plan
WindowID = GetForegroundWindow_()
; On liste les fenêtres ouvertes
hWnd.l = FindWindow_( 0, 0 )
While hWnd <> 0
If GetwindowLong_(Hwnd, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
AddElement(Liste_Fenetres())
Liste_Fenetres() = hWnd
EndIf
hWnd = GetWindow_(hWnd, #GW_HWNDNEXT)
Wend
; On lance le programme
RunProgram(NomFichier$, Parametre$, RepertoireCourant$)
; On cherche l'ID du la fenêtre créée
Time = GetTickCount_()
Repeat
LastWindowID = GetForegroundWindow_()
If GetTickCount_() - Time > 5000
ProcedureReturn 0
EndIf
If LastWindowID <> 0 And LastWindowID <> WindowID
; On compare avec la liste des fenêtres qui étaient ouvertes
ResetList(Liste_Fenetres())
While NextElement(Liste_Fenetres())
If LastWindowID = Liste_Fenetres()
WindowID = LastWindowID
EndIf
Wend
EndIf
Until LastWindowID <> 0 And LastWindowID <> WindowID And GetwindowLong_(LastWindowID, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
ProcedureReturn LastWindowID ; On renvoie l'ID de la dernière fenêtre créé
EndProcedure
; Debut du test
SetClipboardText("Poste de travail") ; on met "Poste de travail" dans le presse papier
WindowExploreur = RunProgramEx("explorer.exe", "/n,/e", "") ; on lance l'explorateur window
; les paramètres signifie :
; /n : ouvre dans le volets d'exploration les dossiers
; /e : ouvre obligatoirement une nouvelle fenêtre de l'explorateur windows
KeyBoardEvent(#PB_Shortcut_D, 2) ; Envoie la touche Alt + D, cela permet d'aller dans la barre d'adresse
KeyBoardEvent(#PB_Shortcut_V, 1) ; Envoie la touche Ctrl + V, pour copier le texte du presse papier dans la barre d'adresse
KeyBoardEvent(#PB_Shortcut_Return, 0) ; Envoie la touche Entrée, pour valider