Library tutorials & articles

Sending Messages

Getting Values

There are a number of constants that return values from the SendMessage function. You can also use the SendMessage function to get information from a control because, as it is a function it can return a value. These expose a number of useful properties which are not available with the standard VB control properties. These all begin with EM_ . A few are listed below

Const EM_CANUNDO = &HC6 ' Can we undo the last action?
Const EM_GETFIRSTVISIBLELINE = &HCE ' Get the first visible line in the rich text box
Const EM_GETLINE = &HC4 ' Get the current line number
Const EM_GETLINECOUNT = &HBA ' Get the total number of lines

To send a command to the text box to do any of these things and get a return value, use the following syntax:

Variable = SendMessage(TextBoxName.hWnd, Constant, 0, 0& )

Where Variable is a variable with the correct data type (in the case of using the above constants - Boolean), TextBoxName is the name of your text box, and Constant is one of the constants listed above. The other two properties are set to 0 and 0& (Null) as they are not needed.

The following example also uses a text box, but finds out if you can Undo in Text1, and if so enables the Undo menu item.

mnuUndo.Enabled = SendMessage(Text1.hWnd, EM_CANUNDO, 0, 0&) ' This will return either True or False

The following example uses a text box, finds out the number of lines, and displays it in a message box.

Dim nLines As Long
nLines = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0, 0&) ' This will return either True or False
Msgbox "This document has " & nLines & " lines"

Comments

  1. 27 Jun 2005 at 08:24

    Is ther any one who has been worked on organiation chart in vb.net

  2. 20 Sep 2004 at 12:43

    Dude i have got a software which does all the thing u told but its for sale just 1.2$ or 50Rs
    if u wish u can mail me humanprocessor@yahoo.co.in

  3. 07 Apr 2004 at 13:07

    I wanted to use sendmessage in VB.net
    with following declaration
    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
       Public Shared Function SendMessage( _
           ByVal handle As IntPtr, _
           ByVal message As Integer, _
           ByVal wParam As IntPtr, _
           ByVal lParam As String _
      &nbsp As Integer
    end function
    But I am not getting the required text but I am getting windows text.
    Actually I am trying to get user typed URL from the address bar of IE.
    But the functions returns IE windows text
    Could any one suggest me how to solve this problem

  4. 16 Sep 2002 at 07:21

    Hi,
    I want to store all the keystrokes from diiferent windows programs. Like i am typing in word, writing code in VB, editing a Txt file or filling information on web as i am doiing now.....I want to get all the keystrokes....stored in a file.
    Please reply me....

  5. 01 Jan 1999 at 00:00

    This thread is for discussions of Sending Messages.

Leave a comment

Sign in or Join us (it's free).