Solved

Question about "SendMessage" function

Posted on 1999-01-22
5
200 Views
Last Modified: 2010-04-02
Can the API call 'SendMessage' be used to emulate keystrokes?
   If so, what is the correct syntax(parameters) for doing this.

Thanks in advance
0
Comment
Question by:jamarlin
[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
  • 2
  • 2
5 Comments
 
LVL 15

Accepted Solution

by:
Tommy Hui earned 20 total points
ID: 1184872
Generally, you can use

  SendMessage(hwnd, WM_CHAR, virtKey, 0);

for most keys. However, certain keys like SHIFT, require three SendMessages in sequence: WM_KEYDOWN, WM_CHAR, and WM_KEYUP.
0
 
LVL 22

Expert Comment

by:nietod
ID: 1184873
If you wish to send keystrokes to the application with the focus, then the keybd_event() procedure is ussually easier to use.
0
 

Author Comment

by:jamarlin
ID: 1184874
The application that I am sending keystrokes to does not have the focus. In fact,
before I send keystrokes to that app, I used the API 'EnableWindow' to disable the application.
See, I dont want the user to be able to type in this application at all(at least not while I am
sending keystrokes to it).  This is the main reason why I am trying to see if SendMessage will work as oppposed to SendKeys. I had been using SendKeys to this point, but I seem to get errors(probably because the user was hitting keys on the keyboard while SendKeys was at work).  Any suggestions.
0
 
LVL 22

Expert Comment

by:nietod
ID: 1184875
Dissabling the window may be a problem.  It may not recognize the keystrokes when disabled.

Also use Spy++ to make sure that you are sending the exact same key messages that are ordinarily send when a key is typed.  Make sure all the parameters are correct.  I would send just the key down and key up messages.  It will covert them to the WM_CHAR messages as needed.
0
 

Author Comment

by:jamarlin
ID: 1184876
Thank you for your suggestions.
Both of you have been a great help to me!!

Thanks again.


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

Suggested Solutions

Title # Comments Views Activity
Using Diagnostic tools in VS2015: Unresoved allocations 19 148
White board coding practice 3 99
gdb doesn't stop on breakpoint 2 140
print bytes of an integer 6 48
When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
Written by John Humphreys C++ Threading and the POSIX Library This article will cover the basic information that you need to know in order to make use of the POSIX threading library available for C and C++ on UNIX and most Linux systems.   [s…
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 clear a vector as well as how to detect empty vectors in C++.

751 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