Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. How to communicate between two different app using SendMessage API?

How to communicate between two different app using SendMessage API?

Scheduled Pinned Locked Moved C / C++ / MFC
c++jsontutorialquestion
13 Posts 6 Posters 3 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Anasuya2015
    wrote on last edited by
    #1

    How to communicate between two different app using Send Message API? Ex: APP1 having textbox txtBox1 APP2 having textbox txtBox2 In txtbox1 whats ever we type, that needs to be displayed in textbox2. How to achieve it using SendMessage() API. Ex code in VC++ is appreciated.

    L A S 3 Replies Last reply
    0
    • A Anasuya2015

      How to communicate between two different app using Send Message API? Ex: APP1 having textbox txtBox1 APP2 having textbox txtBox2 In txtbox1 whats ever we type, that needs to be displayed in textbox2. How to achieve it using SendMessage() API. Ex code in VC++ is appreciated.

      L Offline
      L Offline
      Lost User
      wrote on last edited by
      #2

      See SendMessage function (Windows)[^]. Use the RegisterWindowMessage function (Windows)[^] to create a message number that is unique to your applications, and set the other two parameters to values that both your applications understand.

      A 1 Reply Last reply
      0
      • L Lost User

        See SendMessage function (Windows)[^]. Use the RegisterWindowMessage function (Windows)[^] to create a message number that is unique to your applications, and set the other two parameters to values that both your applications understand.

        A Offline
        A Offline
        Anasuya2015
        wrote on last edited by
        #3

        Thanks for your help. I am facing issue in extracting the message. Code is as follows... APP1:

        int WM_MYMSG = RegisterWindowMessage (L"MYMESSAGE");
        HWND hw = FindWindow(NULL, L"Demo");
        LPCTSTR strMsg = L"ClientDemo1";
        //Send that message
        ::SendMessage(hw, WM_MYMSG, NULL, (LPARAM(LPCTSTR)strMsg);

        APP2:

        LRESULT CDemoDlg::OnMyMsg(WPARAM w, LPARAM l) {

        MSG\* p = (MSG\*)l;
        LPCTSTR str = (LPCTSTR)p->message;
        MessageBox(str);// No message. But getting the alert while sending message. Need to extract the actual msg here.
        
        return (LRESULT) 0;
        

        }

        Please let me know what changes is needed here by which it'll display "ClientDemo1" in msgbox.

        L D 2 Replies Last reply
        0
        • A Anasuya2015

          Thanks for your help. I am facing issue in extracting the message. Code is as follows... APP1:

          int WM_MYMSG = RegisterWindowMessage (L"MYMESSAGE");
          HWND hw = FindWindow(NULL, L"Demo");
          LPCTSTR strMsg = L"ClientDemo1";
          //Send that message
          ::SendMessage(hw, WM_MYMSG, NULL, (LPARAM(LPCTSTR)strMsg);

          APP2:

          LRESULT CDemoDlg::OnMyMsg(WPARAM w, LPARAM l) {

          MSG\* p = (MSG\*)l;
          LPCTSTR str = (LPCTSTR)p->message;
          MessageBox(str);// No message. But getting the alert while sending message. Need to extract the actual msg here.
          
          return (LRESULT) 0;
          

          }

          Please let me know what changes is needed here by which it'll display "ClientDemo1" in msgbox.

          L Offline
          L Offline
          Lost User
          wrote on last edited by
          #4

          The LPARAM in your sending application is a Unicode string, so why are you casting it to a MSG pointer in the receiving app?

          A 1 Reply Last reply
          0
          • A Anasuya2015

            How to communicate between two different app using Send Message API? Ex: APP1 having textbox txtBox1 APP2 having textbox txtBox2 In txtbox1 whats ever we type, that needs to be displayed in textbox2. How to achieve it using SendMessage() API. Ex code in VC++ is appreciated.

            A Offline
            A Offline
            Arthur V Ratz
            wrote on last edited by
            #5

            You can use COM automation, Named Pipes, TCP/IP Sockets or whatsoever by implementing your own protocol for interprocess communtication. :)

            A 1 Reply Last reply
            0
            • L Lost User

              The LPARAM in your sending application is a Unicode string, so why are you casting it to a MSG pointer in the receiving app?

              A Offline
              A Offline
              Anasuya2015
              wrote on last edited by
              #6

              I am just finding the way to print the message. So you mean to say it is not needed and directly we can use lparam to print the message?

              L 1 Reply Last reply
              0
              • A Arthur V Ratz

                You can use COM automation, Named Pipes, TCP/IP Sockets or whatsoever by implementing your own protocol for interprocess communtication. :)

                A Offline
                A Offline
                Anasuya2015
                wrote on last edited by
                #7

                Here requirement is restrict to SendMessage() API. Anyway thanks for your answer. Can you send any sample code for Named Pipes implementation?

                A 2 Replies Last reply
                0
                • A Anasuya2015

                  Here requirement is restrict to SendMessage() API. Anyway thanks for your answer. Can you send any sample code for Named Pipes implementation?

                  A Offline
                  A Offline
                  Arthur V Ratz
                  wrote on last edited by
                  #8

                  Using Pipes - MSDN Resource

                  1 Reply Last reply
                  0
                  • A Anasuya2015

                    I am just finding the way to print the message. So you mean to say it is not needed and directly we can use lparam to print the message?

                    L Offline
                    L Offline
                    Lost User
                    wrote on last edited by
                    #9

                    Anasuya2015 wrote:

                    So you mean to say ...

                    No, I am saying that whatever type you use in the LPARAM field in the sending app, you must use the same type in the receiver.

                    1 Reply Last reply
                    0
                    • A Anasuya2015

                      Here requirement is restrict to SendMessage() API. Anyway thanks for your answer. Can you send any sample code for Named Pipes implementation?

                      A Offline
                      A Offline
                      Arthur V Ratz
                      wrote on last edited by
                      #10

                      Also you can reuse SendMessage() API function with its regular list of arguments by implementing your own that encapsulates for example named pipes client mechanism. :)

                      1 Reply Last reply
                      0
                      • A Anasuya2015

                        How to communicate between two different app using Send Message API? Ex: APP1 having textbox txtBox1 APP2 having textbox txtBox2 In txtbox1 whats ever we type, that needs to be displayed in textbox2. How to achieve it using SendMessage() API. Ex code in VC++ is appreciated.

                        S Offline
                        S Offline
                        Serkan Onat
                        wrote on last edited by
                        #11

                        You can use WM_COPYDATA[^] message with SendMessage API There is a linked example on MSDN topic as well

                        M 1 Reply Last reply
                        0
                        • A Anasuya2015

                          Thanks for your help. I am facing issue in extracting the message. Code is as follows... APP1:

                          int WM_MYMSG = RegisterWindowMessage (L"MYMESSAGE");
                          HWND hw = FindWindow(NULL, L"Demo");
                          LPCTSTR strMsg = L"ClientDemo1";
                          //Send that message
                          ::SendMessage(hw, WM_MYMSG, NULL, (LPARAM(LPCTSTR)strMsg);

                          APP2:

                          LRESULT CDemoDlg::OnMyMsg(WPARAM w, LPARAM l) {

                          MSG\* p = (MSG\*)l;
                          LPCTSTR str = (LPCTSTR)p->message;
                          MessageBox(str);// No message. But getting the alert while sending message. Need to extract the actual msg here.
                          
                          return (LRESULT) 0;
                          

                          }

                          Please let me know what changes is needed here by which it'll display "ClientDemo1" in msgbox.

                          D Offline
                          D Offline
                          David Crow
                          wrote on last edited by
                          #12

                          Your casting is a bit unclear. It should probably be:

                          ::SendMessage(hw, WM_MYMSG, NULL, (LPARAM) strMsg);
                          ...
                          LPCTSTR str = (LPCTSTR) l;
                          MessageBox(str);

                          The process calling SendMessage() will likely be blocked by the second process since it will be waiting on the message box to be dismissed.

                          "One man's wage rise is another man's price increase." - Harold Wilson

                          "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                          "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                          1 Reply Last reply
                          0
                          • S Serkan Onat

                            You can use WM_COPYDATA[^] message with SendMessage API There is a linked example on MSDN topic as well

                            M Offline
                            M Offline
                            Maximilien
                            wrote on last edited by
                            #13

                            :thumbsup: This is what we use and it works nicely

                            I'd rather be phishing!

                            1 Reply Last reply
                            0
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • World
                            • Users
                            • Groups