Solved

Sending a user defined message to a Process ?

Posted on 2001-06-28
9
258 Views
Last Modified: 2013-11-20
Hi,

I have an application which calls another EXE using CreateProcess(..). This EXE is a standard window which can have multiple views. What I want is to be able to send a message to the EXE  telling it to do something.  I managed to get the HANDLE of the Window by searching for the title of the dialog. I issued a ::PostMessage(hWnd,WM_MYMESSAGE,0,0) to it, and have an ON_MESSAGE(WM_MESSAGE..) in the EXE source, but nothing happens. Could someone give precise answers to what could be wrong and how to solve it?

Thanks,
Sintax
0
Comment
Question by:Sintax
  • 4
  • 3
  • 2
9 Comments
 
LVL 12

Expert Comment

by:migel
ID: 6234593
Hi!
show your code for OnMessage handler in the target app.
In what message map you add such haandler?
Are you shure that  finded HWND hwnd of the Main Window of your application?
0
 
LVL 1

Author Comment

by:Sintax
ID: 6234613
hi,
To be simple, let's call "A" the application which needs to mesasge the other ("B")

In "A":
HWND hWnd;

hWnd =  ::FindWindow(NULL,"Database Window");
if (hWnd != NULL)
{
  ::PostMessage(m_hWnd,WM_MYMESSAGE,0,0);
}

The handle IS correct since If I issue a WM_QUIT then B closes.

In "B" the main class has the following:
BEGIN_MESSAGE_MAP(CBApp, CWinApp)
...
     ON_MESSAGE(WM_MYMESSAGE, WMDOSG)
END_MESSAGE_MAP()

and WMDOSG() is defined as follows:
void CBApp::WMDOSG()
{
  AfxMessageBox("I GOT THE MESSAGE");
}

but the message box is never displayed, so it doesn't get the message. Maybe because its a separate process??

Sintax
0
 
LVL 86

Accepted Solution

by:
jkr earned 250 total points
ID: 6234797
That is done by using 'ON_REGISTERED_MESSAGE()':

// example for ON_REGISTERED_MESSAGE
const UINT    wm_CustomMessage = RegisterWindowMessage( CUSTOMMSGSTRING );
BEGIN_MESSAGE_MAP( CMyWnd, CMyParentWndClass )
    //{{AFX_MSG_MAP( CMyWnd )
    ON_REGISTERED_MESSAGE( wm_CustomMessage, OnCustomMessage )
    // ... Possibly more entries to handle additional messages
    //}}AFX_MSG_MAP
END_MESSAGE_MAP( )

The 1st app would the use

const UINT    wm_CustomMessage = RegisterWindowMessage( CUSTOMMSGSTRING );

PostMessage ( hTargetWnd, wm_CustomMessage, wParam, lParam);

Feel free to ask if you need more information or would need another example!
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 1

Author Comment

by:Sintax
ID: 6234962
I already tried registering the message (both sides, same string), but it seems that the messages are NOT getting to the window. Is there a reason that it doesn't get there?
0
 
LVL 86

Expert Comment

by:jkr
ID: 6235020
>>Is there a reason that it doesn't get there?

There shouldn't be one, if the MSG strings passed to 'RegisterWindowsMessage()' are identical - could you post more of your code?
0
 
LVL 12

Expert Comment

by:migel
ID: 6235436
Hi!
can you run SPY++ and watch what message come to the B app main window?
0
 
LVL 1

Author Comment

by:Sintax
ID: 6237066
I tried Spy++, I moved the cross in find window over B, it was able to get the handle and the title, but when I said OK, it displayed "No window matches search criteria!". This is weird.. since it found the window. What could be wrong?
0
 
LVL 12

Expert Comment

by:migel
ID: 6237118
Try press F5 in the spy before dragging cross to the window (this updates windows list in the SPY)
0
 
LVL 1

Author Comment

by:Sintax
ID: 6244146
Thanx jkr and everybody who helped me !! It works now. I had to use the mainframe. Although now I have another problem. I need to acess the View's public function. How can I access this from MainFrm ???


Sintax
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Separate into files by filename 12 87
Problem to event 3 102
Can not remove SSL certificate on iPhone 6 - iOS10.2 12 854
how to split multiple lines delimiter : 8 109
Here is how to use MFC's automatic Radio Button handling in your dialog boxes and forms.  Beginner programmers usually start with a OnClick handler for each radio button and that's just not the right way to go.  MFC has a very cool system for handli…
Introduction: Hints for the grid button.  Nested classes, templated collections.  Squash that darned bug! Continuing from the sixth article about sudoku.   Open the project in visual studio. First we will finish with the SUD_SETVALUE messa…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …

861 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