>>>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)