Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Stuffing the keyboard buffer
Message
De
03/06/1999 14:08:22
 
 
À
03/06/1999 12:19:40
Information générale
Forum:
Visual FoxPro
Catégorie:
Fonctions Windows API
Divers
Thread ID:
00225979
Message ID:
00226122
Vues:
29
>>>>Does anybody know the correct syntax in VFP to declare and call
>>>>the "keybd_event" API function?
>>>>
>>>>I'm running an external application which when it runs presents the user with a Yes and No button, with the Yes button set as the default. I am trying to automate the execution of this external function as much as possible and want to programmatically press the Enter key to trigger the Yes button and conclude the process.
>>>
>>>I think you're going to need to use several API calls to do this, at a minimum, you'll need to know the hWnd of the messagebox so that you can call SetFocus() to point the keyboard focus to the target window, and then issue a keybd_event, since keybd_event doesn't set the context that the keystroke is processed in.
>>
>>
>>I have the hWnd of the called function because I'm running the function via
>>CreateProcess(). The function has the keyboard focus just after I open it so I'm pretty sure my simulated keyboard event will hit it. I just need the syntax of the declare dll statement and the syntax to call the function.
>
>Actually, you have the ProcessID and Process Handle coming back from the PROCESSINFO structure, neither is an hWnd. Regardless, the following declare will work for keybd_event where you have the proper window in focus. Note: I used SHORTs even though it's a BYTE value; only the low-order byte is considered, so keep the values below 256:
>
>
DECLARE keybd_event IN USER32.DLL ;
>   SHORT bVk, ;
>   SHORT bScan, ;
>   INTEGER dwFlags, ;
>   INTEGER dwExtraInfo
>#DEFINE VK_RETURN 0xOD
>=keybd_event(VK_RETURN,0,0,0)  && return was pressed
>
Thanks Ed.
I tried your suggestion, however I'm getting a compile time error:
"Function name is missing )."
on the line containing the =keybd_event(VK_RETURN,0,0,0) statement.
I'm not sure but I have a hunch it may be related to the #define statement.
"The most beautiful experience we can have is the mysterious ; it is the fundamental emotion which stands at the cradle of true art and true science." - Albert Einstein
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform