VBA Excel Windows API - V1.03 - Send Text WMSETTEXT to Edit Box in External App. When a VBA solution falls short of your needs. 10+ of my favorite Windows API functions to use in Office applications. When a VBA solution falls short of your.
Hi,I need to stop using sendkeys to send text to other applications on the same machine (mostly because it doesn't work properly with ie7).
I decided to use the SendMessage api function and have it working with notepad. However, to fully replace the sendkeys functionality, it needs to work with other applications as well, e.g. ieX, wordpad, excel etc.
My code is below. The problem is that in the case of notepad, I first find the window handle for notepad, then the handle for the Edit window which is the text editor window, then send the string. But other applications don't always have a window called edit.
Is there a way to make this work just like sendkeys? Or should I do it another way?
Bit of Code:
Private Declare Function FindWindowEx Lib 'user32' Alias 'FindWindowExA' (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Public Declare Function SendMessage Lib 'user32.dll' Alias 'SendMessageA' (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal ByValByValwParam As Integer, ByVal lParam As String) As Integer
Private Const WM_SETTEXT = &HC
Private Function SendMessage()
Dim ihWnd As Integer = 0
Dim ihEdit As Integer = 0
Dim phEdit As IntPtr = Nothing
'get the notepad window handle
ihWnd = FindWindowEx(0, 0, 'Notepad', vbNullString)
'get the notepad editor window handle
ihEdit = FindWindowEx(ihWnd, 0, 'EDIT', vbNullString)
'change to intptr for SendMessage to work
phEdit = New IntPtr(ihEdit)
'send the string 'hello', returns 1 for ok, 0 for fail
Dim iRet As Integer = SendMessage(phEdit, WM_SETTEXT, 0, 'Hello')
End Function
Hope you can help...
Mike. -->
Displays a message in a dialog box, waits for the user to click a button, and returns an Integer indicating which button the user clicked.
Note
Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new Office Add-ins model. Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.
Syntax
MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])
The MsgBox function syntax has these named arguments:
Part | Description |
---|---|
prompt | Required. String expression displayed as the message in the dialog box. The maximum length of prompt is approximately 1024 characters, depending on the width of the characters used. If prompt consists of more than one line, you can separate the lines by using a carriage return character (Chr(13)), a linefeed character (Chr(10)), or carriage return - linefeed character combination (Chr(13) & Chr(10)) between each line. |
buttons | Optional. Numeric expression that is the sum of values specifying the number and type of buttons to display, the icon style to use, the identity of the default button, and the modality of the message box. If omitted, the default value for buttons is 0. |
title | Optional. String expression displayed in the title bar of the dialog box. If you omit title, the application name is placed in the title bar. |
helpfile | Optional. String expression that identifies the Help file to use to provide context-sensitive Help for the dialog box. If helpfile is provided, context must also be provided. |
context | Optional. Numeric expression that is the Help context number assigned to the appropriate Help topic by the Help author. If context is provided, helpfile must also be provided. |
Settings
The buttonsargument settings are:
Constant | Value | Description |
---|---|---|
vbOKOnly | 0 | Display OK button only. |
vbOKCancel | 1 | Display OK and Cancel buttons. |
vbAbortRetryIgnore | 2 | Display Abort, Retry, and Ignore buttons. |
vbYesNoCancel | 3 | Display Yes, No, and Cancel buttons. |
vbYesNo | 4 | Display Yes and No buttons. |
vbRetryCancel | 5 | Display Retry and Cancel buttons. |
vbCritical | 16 | Display Critical Message icon. |
vbQuestion | 32 | Display Warning Query icon. |
vbExclamation | 48 | Display Warning Message icon. |
vbInformation | 64 | Display Information Message icon. |
vbDefaultButton1 | 0 | First button is default. |
vbDefaultButton2 | 256 | Second button is default. |
vbDefaultButton3 | 512 | Third button is default. |
vbDefaultButton4 | 768 | Fourth button is default. |
vbApplicationModal | 0 | Application modal; the user must respond to the message box before continuing work in the current application. |
vbSystemModal | 4096 | System modal; all applications are suspended until the user responds to the message box. |
vbMsgBoxHelpButton | 16384 | Adds Help button to the message box. |
vbMsgBoxSetForeground | 65536 | Specifies the message box window as the foreground window. |
vbMsgBoxRight | 524288 | Text is right-aligned. |
vbMsgBoxRtlReading | 1048576 | Specifies text should appear as right-to-left reading on Hebrew and Arabic systems. |
The first group of values (0-5) describes the number and type of buttons displayed in the dialog box; the second group (16, 32, 48, 64) describes the icon style; the third group (0, 256, 512) determines which button is the default; and the fourth group (0, 4096) determines the modality of the message box. When adding numbers to create a final value for the buttons argument, use only one number from each group.
Note
These constants are specified by Visual Basic for Applications. As a result, the names can be used anywhere in your code in place of the actual values.
Return values
Constant | Value | Description |
---|---|---|
vbOK | 1 | OK |
vbCancel | 2 | Cancel |
vbAbort | 3 | Abort |
vbRetry | 4 | Retry |
vbIgnore | 5 | Ignore |
vbYes | 6 | Yes |
vbNo | 7 | No |
Remarks
When both helpfile and context are provided, the user can press F1 (Windows) or HELP (Macintosh) to view the Help topic corresponding to the context. Some host applications, for example, Microsoft Excel, also automatically add a Help button to the dialog box.
If the dialog box displays a Cancel button, pressing the ESC key has the same effect as clicking Cancel. If the dialog box contains a Help button, context-sensitive Help is provided for the dialog box. However, no value is returned until one of the other buttons is clicked.
Note
To specify more than the first named argument, you must use MsgBox in an expression. To omit some positional arguments, you must include the corresponding comma delimiter.
Example
This example uses the MsgBox function to display a critical-error message in a dialog box with Yes and No buttons. The No button is specified as the default response. The value returned by the MsgBox function depends on the button chosen by the user. This example assumes that
DEMO.HLP
is a Help file that contains a topic with a Help context number equal to 1000
.See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.