@falsam, j'ai donc effectué une tentative d'intégration de ton bout de code dans mon petit projet, mais cela c'est avéré infructueuse
mon très très faible niveau de débutant y est certainement pour quelques chose
Code : Tout sélectionner
Procedure SendKey(Key.s)
; get virtual key code and shift state
VK.w = VkKeyScan_(Asc(Key))
If VK = -1
ProcedureReturn
EndIf
; get scan code if an extended key
If MapVirtualKey_(VK, 2) = 0
Extended.l = #KEYEVENTF_EXTENDEDKEY
; get scan code
Scan.l = MapVirtualKey_(VK, 0)
Else
Extended = 0
Scan = 0
EndIf
; press shift/ctrl/alt if needed
Shift.l = VK & $100
Ctrl.l = VK & $200
Alt.l = VK & $400
If Shift
keybd_event_(#VK_SHIFT, 0, 0, 0)
EndIf
If Ctrl
keybd_event_(#VK_CONTROL, 0, 0, 0)
EndIf
If Alt
keybd_event_(#VK_MENU, 0, 0, 0)
EndIf
; press and release key
VK & $ff
keybd_event_(VK, Scan, Extended, 0)
keybd_event_(VK, Scan, #KEYEVENTF_KEYUP | Extended, 0)
; release shift/ctrl/alt if pressed
If Shift
keybd_event_(#VK_SHIFT, 0, #KEYEVENTF_KEYUP, 0)
EndIf
If Ctrl
keybd_event_(#VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)
EndIf
If Alt
keybd_event_(#VK_MENU, 0, #KEYEVENTF_KEYUP, 0)
EndIf
EndProcedure
; send string to foreground application
Procedure SendCommand(String.s)
For Letter.l = 1 To Len(String)
SendKey(Mid(String, Letter, 1))
Next
EndProcedure
Window_0 = OpenWindow(#PB_Any, x, y, 180, 150, "Corsair V1", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If Window_0
String_Ap = StringGadget(#PB_Any, 10, 20, 120, 20, "Appli name")
Button_Li = ButtonGadget(#PB_Any, 130, 20, 40, 20, "A-B")
Button_Up = ButtonGadget(#PB_Any, 30, 50, 20, 20, "/\")
Button_Lf = ButtonGadget(#PB_Any, 10, 60, 20, 20, "<")
Button_Rg = ButtonGadget(#PB_Any, 50, 60, 20, 20, ">")
Button_Dw = ButtonGadget(#PB_Any, 30, 70, 20, 20, "\/")
Button_Ta = ButtonGadget(#PB_Any, 10, 100, 40, 30, "Tab")
Button_En = ButtonGadget(#PB_Any, 70, 100, 40, 30, "Enter")
Button_F2 = ButtonGadget(#PB_Any, 130, 100, 40, 30, "F2")
String_Cmd = StringGadget(#PB_Any, 80, 60, 50, 20, "Cmd")
Button_Se = ButtonGadget(#PB_Any, 130, 60, 40, 20, "Send")
StickyWindow(Window_0, #True)
DisableGadget(Button_Dw,1)
DisableGadget(Button_Up,1)
DisableGadget(Button_Lf,1)
DisableGadget(Button_Rg,1)
DisableGadget(Button_Ta,1)
DisableGadget(Button_F2,1)
DisableGadget(Button_En,1)
DisableGadget(Button_Se,1)
DisableGadget(String_Cmd,1)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Timer
Case #PB_Event_Gadget
Select EventGadget()
Case Button_Li
app$ = GetGadgetText(String_Ap)
hconsole = FindWindow_(0, app$)
If hconsole
DisableGadget(Button_Dw,0)
DisableGadget(Button_Up,0)
DisableGadget(Button_Lf,0)
DisableGadget(Button_Rg,0)
DisableGadget(Button_Ta,0)
DisableGadget(Button_F2,0)
DisableGadget(Button_En,0)
DisableGadget(Button_Se,0)
DisableGadget(String_Cmd,0)
EndIf
Case Button_Dw
SendCommand(#VK_DOWN)
Case Button_Up
SendCommand(#VK_UP)
Case Button_Lf
SendCommand(#VK_LEFT)
Case Button_Rg
SendCommand(#VK_RIGHT)
Case Button_F2
SendCommand(#VK_F2)
Case Button_En
SendCommand(#VK_ADD)
Case Button_Ta
SendCommand(#VK_TAB)
Case String_Ap
SetGadgetText(String_Ap,#Empty$)
Case String_Cmd
SetGadgetText(String_Cmd,#Empty$)
Case Button_Se
cmd$ = GetGadgetText(String_Cmd)
SendCommand(cmd$)
EndSelect
EndSelect
ForEver
EndIf
End