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#
  4. SendMessage Function (Sub in C#)

SendMessage Function (Sub in C#)

Scheduled Pinned Locked Moved C#
csharpcomtoolsquestion
14 Posts 6 Posters 0 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.
  • P Programm3r

    OK, so I'm using PInvoke - doing the following:[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
    But I'm receiving the following error:

    Error 2 The modifier 'extern' is not valid for this item
    Error 3 Expected class, delegate, enum, interface, or struct

    Why ??? :confused::confused:


    The only programmers that are better that C programmers are those who code in 1's and 0's :bob: :)Programm3r My Blog: ^_^

    L Offline
    L Offline
    Luc Pattyn
    wrote on last edited by
    #5

    Hi,

    Programm3r wrote:

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

    you have to put these lines inside a class, any class would do (I use LP_user32 for all user32.dll functions). :)

    Luc Pattyn [Forum Guidelines] [My Articles]


    this weeks tips: - make Visual display line numbers: Tools/Options/TextEditor/... - show exceptions with ToString() to see all information - before you ask a question here, search CodeProject, then Google


    P W 2 Replies Last reply
    0
    • L Luc Pattyn

      Hi,

      Programm3r wrote:

      [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

      you have to put these lines inside a class, any class would do (I use LP_user32 for all user32.dll functions). :)

      Luc Pattyn [Forum Guidelines] [My Articles]


      this weeks tips: - make Visual display line numbers: Tools/Options/TextEditor/... - show exceptions with ToString() to see all information - before you ask a question here, search CodeProject, then Google


      W Offline
      W Offline
      wienzzz
      wrote on last edited by
      #6

      Yep, put it inside a class.. search in microsoft documentation for more info about windows messaging, the message type, and other info.. CMIIW

      Mail me at erwin@holyknight.us

      1 Reply Last reply
      0
      • L Luc Pattyn

        Hi,

        Programm3r wrote:

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

        you have to put these lines inside a class, any class would do (I use LP_user32 for all user32.dll functions). :)

        Luc Pattyn [Forum Guidelines] [My Articles]


        this weeks tips: - make Visual display line numbers: Tools/Options/TextEditor/... - show exceptions with ToString() to see all information - before you ask a question here, search CodeProject, then Google


        P Offline
        P Offline
        Programm3r
        wrote on last edited by
        #7

        Ok, I'm trying this .... class WindowsService : ServiceBase { [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern IntPtr SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
        But I receive this: Error 1 The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?)


        The only programmers that are better that C programmers are those who code in 1's and 0's :bob: :)Programm3r My Blog: ^_^

        M G L 3 Replies Last reply
        0
        • P Programm3r

          Ok, I'm trying this .... class WindowsService : ServiceBase { [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern IntPtr SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
          But I receive this: Error 1 The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?)


          The only programmers that are better that C programmers are those who code in 1's and 0's :bob: :)Programm3r My Blog: ^_^

          M Offline
          M Offline
          Martin 0
          wrote on last edited by
          #8

          using System.Runtime.InteropServices;

          All the best, Martin

          P 1 Reply Last reply
          0
          • P Programm3r

            Ok, I'm trying this .... class WindowsService : ServiceBase { [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern IntPtr SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
            But I receive this: Error 1 The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?)


            The only programmers that are better that C programmers are those who code in 1's and 0's :bob: :)Programm3r My Blog: ^_^

            L Offline
            L Offline
            Luc Pattyn
            wrote on last edited by
            #9

            Visual Studio is kind enough to include the probable fix in the error message. MSDN will tell you which namespace DllImport belongs to. :)

            Luc Pattyn [Forum Guidelines] [My Articles]


            this weeks tips: - make Visual display line numbers: Tools/Options/TextEditor/... - show exceptions with ToString() to see all information - before you ask a question here, search CodeProject, then Google


            1 Reply Last reply
            0
            • P Programm3r

              Ok, I'm trying this .... class WindowsService : ServiceBase { [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern IntPtr SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
              But I receive this: Error 1 The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?)


              The only programmers that are better that C programmers are those who code in 1's and 0's :bob: :)Programm3r My Blog: ^_^

              G Offline
              G Offline
              Giorgi Dalakishvili
              wrote on last edited by
              #10

              Add this line to your using directives list: using System.Runtime.InteropServices;

              #region signature my articles #endregion

              P 1 Reply Last reply
              0
              • M Martin 0

                using System.Runtime.InteropServices;

                All the best, Martin

                P Offline
                P Offline
                Programm3r
                wrote on last edited by
                #11

                Thanks :)


                The only programmers that are better that C programmers are those who code in 1's and 0's :bob: :)Programm3r My Blog: ^_^

                1 Reply Last reply
                0
                • G Giorgi Dalakishvili

                  Add this line to your using directives list: using System.Runtime.InteropServices;

                  #region signature my articles #endregion

                  P Offline
                  P Offline
                  Programm3r
                  wrote on last edited by
                  #12

                  Thanks :)


                  The only programmers that are better that C programmers are those who code in 1's and 0's :bob: :)Programm3r My Blog: ^_^

                  1 Reply Last reply
                  0
                  • P Programm3r

                    Hi all, What can I use within C# to replace the function:LRESULT SendMessage( HWND hWnd, // handle of destination window UINT Msg, // message to send WPARAM wParam, // first message parameter LPARAM lParam // second message parameter );
                    Many Thanks in advance Regards,


                    The only programmers that are better that C programmers are those who code in 1's and 0's :bob: :)Programm3r My Blog: ^_^

                    P Offline
                    P Offline
                    Programm3r
                    wrote on last edited by
                    #13

                    Is it possible to show a MessageBox from a Service developed in C# ? Many Thanks Regards,


                    The only programmers that are better that C programmers are those who code in 1's and 0's :bob: :)Programm3r My Blog: ^_^

                    B 1 Reply Last reply
                    0
                    • P Programm3r

                      Is it possible to show a MessageBox from a Service developed in C# ? Many Thanks Regards,


                      The only programmers that are better that C programmers are those who code in 1's and 0's :bob: :)Programm3r My Blog: ^_^

                      B Offline
                      B Offline
                      Big Daddy Farang
                      wrote on last edited by
                      #14

                      When you say "Service" do you mean that your C# program is running as a Windows Service? That's my assumption here, and yes it's possible. Whether or not it's advisable is another matter. Now when I say "possible" I mean that the code will compile and build, and the .exe can be installed as a Windows Service and run. Often times one of the main reasons to develop a solution to run as a Windows Service is so that it can run even when no user is logged in to the computer. Now if that's the case, and the code finds it way down the path to where the MessageBox is .Show()'n, I don't know what will happen. Maybe nothing. Maybe it's displayed and causes the Service to stop executing until the nonexistent user clicks the unseen "OK" button. Of course you could try it and see what happens. If you do, post your results here so everyone can know, too. Then try to find out if a tree falls in the forest.... ;) BDF

                      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