VB向其他程序發送消息

来源:互联网 发布:ios商城项目源码 编辑:程序博客网 时间:2024/04/19 00:46
模擬要求:向記事本發送字符A.編輯子窗口。範例如下:首先在工程的Form1中加入一個ComandButton,在其中加入以下代碼:Dim l As Long'遍歷所有的窗口l = EnumWindows(AddressOf EnumWindowsProc, 0)在工程中加入一個Module,在其中加入以下代碼:Public Declare Function EnumWindows Lib "user32" _(ByVal lpEnumFunc As Long, ByVal lParam _As Long) As LongDeclare Function GetWindowLong Lib "user32" Alias _"GetWindowLongA" (ByVal hwnd As Long, _ByVal nIndex As Long) As LongDeclare Function ShowWindow Lib "user32" (ByVal _hwnd As Long, ByVal nCmdShow As Long) As LongPublic Declare Function GetClName Lib "user32" Alias _"GetClNameA" (ByVal hwnd As Long, _ByVal lpClName As String, ByVal nMaxCount As Long) As LongPublic Declare Function EnumChildWindows Lib "user32" _(ByVal hWndParent As Long, _ByVal lpEnumFunc As Long, _ByVal lParam As Long) As LongPublic Declare Function SendMessage Lib "user32" Alias "SendMessageA" _(ByVal hwnd As Long, ByVal wMsg As Long, _ByVal wParam As Long, lParam As Any) As LongPublic Const WM_CHAR = &H102'Public Const WS_OVERLAPPED = &H0&'Public Const WS_CAPTION = &HC00000'Public Const WS_SYSMENU = &H80000'Public Const WS_THICKFRAME = &H40000'Public Const WS_MAXIMIZEBOX = &H10000Public Const WS_MINIMIZEBOX = &H20000'Public Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED _' Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME _' Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)Public Const WS_VISIBLE = &H10000000'Public Const GWL_EXSTYLE = (-20)'Public Const GWL_HWNDPARENT = (-8)Public Const GWL_STYLE = (-16)Public Const SW_MINIMIZE = 6'該函數是EnumWindows的回調函數,EnumWindows函數將遍歷的'窗口句柄傳遞到hwnd參數中Function EnumWindowsProc(ByVal hwnd As Long, _ByVal lParam As Long) As LongDim l As LongDim ld As LongDim astr As String * 256ld = GetWindowLong(hwnd, GWL_STYLE)'如果窗口具有最小化按鈕並且窗口是可見的就將該窗口最小化If ((ld And WS_MINIMIZEBOX) = WS_MINIMIZEBOX) ThenIf ((ld And WS_VISIBLE)) ThenGetClName hwnd, astr, 256'Debug.Print astrIf InStr(astr, "Notepad") ThenDebug.Print hwndEnumChildWindows hwnd, AddressOf EnumChildProc, 0End If'If ShowWindow(hwnd, SW_MINIMIZE) Then'End IfEnd IfEnd IfEnumWindowsProc = TrueEnd FunctionFunction EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As LongDim astr As String * 256GetClName hwnd, astr, 256Debug.Print astrIf InStr(astr, "Edit") ThenFor i = 1 To 10'發送字符ASendMessage hwnd, WM_CHAR, 65, 0Next iEnd IfEnumChildProc = TrueEnd Function首先運行記事本程序,然後再運行程序,點擊Command1,就可以向記事本發送字符串了
原创粉丝点击