본문 바로가기

Window Programming/VB

VB에서 다른 윈도우에 메시지 줘서 실행시키기

Option Explicit

Public Const WM_COMMAND = &H111
Public Const WM_SETTEXT = &HC

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

 

'=======================================================================
' Method    : Main
' Author    : 이 석재(http://cafe.naver.com/xlsvba/831)
' LA Time   : 2008-04-05 16:21
' Purpose   : WM_SETTEXT, WM_COMMAND메세지를 이용하여 다른 응용프로그램을 컨트롤하는예제
'=======================================================================

Sub Main()
  Dim hPrt As Long
  Dim hTxt As Long
  Dim hCmd As Long
    '## 부모윈도우 핸들값 취득
    hPrt = FindWindow("ThunderRT6FormDC", "테스트")
   
    If hPrt <> 0 Then
        hTxt = FindWindowEx(hPrt, ByVal 0&, "ThunderRT6TextBox", vbNullString)   '## 텍스트박스 핸들값 취득
        hCmd = FindWindowEx(hPrt, ByVal 0&, "ThunderRT6CommandButton", "메세지")  '## 버튼 핸들값 취득
        '## SendMessage(해당윈도우 핸들,WM_SETTEXT, 0&, ByVal 입력값)  
        Call SendMessage(hTxt, WM_SETTEXT, 0&, ByVal "aaa")  

        '## PostMessage(부모윈도우 핸들,WM_COMMAND, 0&, 자신윈도우 핸들)
        Call PostMessage(hPrt, WM_COMMAND, 0&, hCmd)
    Else
        MsgBox "급하기두 하셔라~~ Test.exe부터 실행하셔야죵...^^"
    End If   
End Sub