Sending keys
-
-
sendInput doesn't take Hwnd as a param so is it not possible to specify the window? and hence you said "The window must have focus" ? NULL
Yes it's not possible to specify a window as it's simulating keys at the lowest level. You would have to set the window as the foreground window. Raymond talks about this. You can also read the comments for more good info. http://blogs.msdn.com/oldnewthing/archive/2005/05/30/423202.aspx[^] Using PostMessage with WM_KEYDOWN / WM_KEYUP / WM_SYSKEYDOWN / WM_SYSKEYUP (WM_CHAR is generated by the TranslateMessage function) might work with a number of applications though (there's that problem with key states though). You would have to test with all the applications you wish to send input to if you would like to still continue with this route. -- modified at 6:49 Thursday 6th July, 2006
-
sendInput doesn't take Hwnd as a param so is it not possible to specify the window? and hence you said "The window must have focus" ? NULL
Meat Loaf wrote:
endInput doesn't take Hwnd as a param so is it not possible to specify the window? and hence you said "The window must have focus" ?
then First SetFocus on window and then send Keyinput to that window. Is setting focus on That window incurred any problem?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers, Alok Gupta VC Forum Q&A :- I/ IV Support CRY- Child Relief and You
-
How do I send keys to application? I tried like ::SendMessage(hwnd,WM_CHAR,(WPARM)VK_KEY,NULL) But it's not right I guess.. please help me. NULL
hi, Assuming m_pWnd is pointer to the window you want to send keys then use,
m_pWnd->SendMessage(WM_KEYDOWN,WPARAM(VK_DELETE),LPARAM(0x01530001)); m_pWnd->SendMessage(WM_KEYUP,WPARAM(VK_DELETE),LPARAM(0xC1530001));
or::SendMessage(hwnd,WM_KEYDOWN,WPARAM(VK_DELETE),LPARAM(0x01530001)); ::SendMessage(hwnd,WM_KEYUP,WPARAM(VK_DELETE),LPARAM(0xC1530001));
:) if this answers you then, vote for 5 :cool: -
Meat Loaf wrote:
endInput doesn't take Hwnd as a param so is it not possible to specify the window? and hence you said "The window must have focus" ?
then First SetFocus on window and then send Keyinput to that window. Is setting focus on That window incurred any problem?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers, Alok Gupta VC Forum Q&A :- I/ IV Support CRY- Child Relief and You
-
hi, Assuming m_pWnd is pointer to the window you want to send keys then use,
m_pWnd->SendMessage(WM_KEYDOWN,WPARAM(VK_DELETE),LPARAM(0x01530001)); m_pWnd->SendMessage(WM_KEYUP,WPARAM(VK_DELETE),LPARAM(0xC1530001));
or::SendMessage(hwnd,WM_KEYDOWN,WPARAM(VK_DELETE),LPARAM(0x01530001)); ::SendMessage(hwnd,WM_KEYUP,WPARAM(VK_DELETE),LPARAM(0xC1530001));
:) if this answers you then, vote for 5 :cool: -
hi, Assuming m_pWnd is pointer to the window you want to send keys then use,
m_pWnd->SendMessage(WM_KEYDOWN,WPARAM(VK_DELETE),LPARAM(0x01530001)); m_pWnd->SendMessage(WM_KEYUP,WPARAM(VK_DELETE),LPARAM(0xC1530001));
or::SendMessage(hwnd,WM_KEYDOWN,WPARAM(VK_DELETE),LPARAM(0x01530001)); ::SendMessage(hwnd,WM_KEYUP,WPARAM(VK_DELETE),LPARAM(0xC1530001));
:) if this answers you then, vote for 5 :cool: -
I haven't tried that yet. There must be no problem in setting the focus. But still I'd try to do it with a sendMessage. NULL
Meat Loaf wrote:
I haven't tried that yet. There must be no problem in setting the focus. But still I'd try to do it with a sendMessage.
then Simulate KeyPress by sending WM_KEYDOWN and WM_KEYUP message one after another!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers, Alok Gupta VC Forum Q&A :- I/ IV Support CRY- Child Re
-
No I guess not, is it working with VK_F1?
-
ok here is your explaination 1. Run your Application, 2. run spy++ and set it to capture KeyBorad messages (using Finder tool). 3. Press F1 key (or what ever key you want to send). 4. analyze the Messages log window and double click on the message having WM_KEYDOWN and
nVirtualKey:VK_F1
or WM_KEYUP andnVirtualKey:VK_F1
. Get LPARAM value from there. you are done. The LPARAM valur for F1 remains constant. no matter where you run your application and when you run it. This way u can get LPARAM values for all your virtual key simulations, infact LPARAM contains bit combinations for ScanCode,RepeatCout,AltDown, Extended Value for the WM_KeyDown event. Thanks Azam -
ok here is your explaination 1. Run your Application, 2. run spy++ and set it to capture KeyBorad messages (using Finder tool). 3. Press F1 key (or what ever key you want to send). 4. analyze the Messages log window and double click on the message having WM_KEYDOWN and
nVirtualKey:VK_F1
or WM_KEYUP andnVirtualKey:VK_F1
. Get LPARAM value from there. you are done. The LPARAM valur for F1 remains constant. no matter where you run your application and when you run it. This way u can get LPARAM values for all your virtual key simulations, infact LPARAM contains bit combinations for ScanCode,RepeatCout,AltDown, Extended Value for the WM_KeyDown event. Thanks Azam -
How do I send keys to application? I tried like ::SendMessage(hwnd,WM_CHAR,(WPARM)VK_KEY,NULL) But it's not right I guess.. please help me. NULL
See my example here.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
-
See my example here.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb