Solved

How to send a key like does SendKey in VB ?

Posted on 1998-07-15
6
235 Views
Last Modified: 2012-06-27
I'm in a derived CFileDialog class with the OFN_EXPLORER style and I would like, in a response of a button, send the 'F2' key to the API in order to rename the selected file.
!!! : I don't want to use the SendInput Method.

Please can someone help me.

Thanks a lot !! ;-)
0
Comment
Question by:acabadet
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 2

Expert Comment

by:warmcat
ID: 1167810
Fire a WM_CHAR at the dialog using either ::SendMessage() or CWnd::SendMessage(). Details of WM_CHAR:

WM_CHAR  
The WM_CHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. WM_CHAR contains the character code of the key that was pressed.

WM_CHAR
chCharCode = (TCHAR) wParam;    // character code
lKeyData = lParam;              // key data
 
Parameters
chCharCode

Value of wParam. Specifies the character code of the key.

lKeyData

Value of lParam. Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table: Value
 Description
 
0-15
 Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user holding down the key.
 
16-23
 Specifies the scan code. The value depends on the original equipment manufacturer (OEM).
 
24
 Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.
 
25-28
 Reserved; do not use.
 
29
 Specifies the context code. The value is 1 if the ALT key is held down while the key is pressed; otherwise, the value is 0.
 
30
 Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is 0 if the key is up.
 
31
 Specifies the transition state. The value is 1 if the key is being released, or it is 0 if the key is being pressed.
 


Return Values
An application should return zero if it processes this message.

Remarks
Because there is not necessarily a one-to-one correspondence between keys pressed and character messages generated, the information in the high-order word of the lKeyData parameter is generally not useful to applications. The information in the high-order word applies only to the most recent WM_KEYDOWN message that precedes the posting of the WM_CHAR message.

For enhanced 101- and 102-key keyboards, extended keys are the right ALT and the right CTRL keys on the main section of the keyboard; the INS, DEL, HOME, END, PAGE UP, PAGE DOWN and arrow keys in the clusters to the left of the numeric keypad; and the divide (/) and ENTER keys in the numeric keypad. Some other keyboards may support the extended-key bit in the lKeyData parameter.


0
 

Author Comment

by:acabadet
ID: 1167811
The SendMessage function doesn't work. I 've already tried !!!
0
 
LVL 22

Accepted Solution

by:
nietod earned 50 total points
ID: 1167812
answer coming.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 22

Expert Comment

by:nietod
ID: 1167813
Sorry for the wait there.  I can never remeber the name of the function.  You want Keybd_event().  This is the most reliable way to "fake" a key event.  It takes care of sending the right pairs of messages with the right flags set etc.
0
 
LVL 2

Expert Comment

by:warmcat
ID: 1167814
Grumble.  Be good to mention it, then.

Try SendMessage() with WM_USER +302 (decimal), which is 0x52e, sending to the Dialog.


0
 
LVL 22

Expert Comment

by:nietod
ID: 1167815
Is this answer sufficient?  If so, you should grade the answer.  If not, let us know what the problem is.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article is a continuation of the C/C++ Visual Studio Express debugger series. Part 1 provided a quick start guide in using the debugger. Part 2 focused on additional topics in breakpoints. As your assignments become a little more …
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question