零起點學VB做外掛(四)


   前一段,我們學了基本的鍵盤模擬部分,但是對於只是前台的模擬,大家應該不會滿足吧,那么今天我們要做的就是后台模擬。呵呵,很企盼吧!

  后台模擬,就要用到postmessage或者sendmessage,大家可以google下他們的詳細資料。我這里先放上他們的聲明吧:

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
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 FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
這個函數可以利用窗口名來找到句柄,而句柄就是我們進行下一步的關鍵了。
我們拿記事本為例來寫個小程序吧,工具是VB6.0:

Private Sub keytest_Click()
        hWndGt = FindWindow(vbNullString, "無標題 - 記事本")

        Label13.Caption = ""
        Label13.Caption = "記事本母窗口句柄:0x" & Hex(hWndGt)  '利用label13顯示記事本句柄
        
        WaitingSeconds (0.3)
        childhwnd = FindWindowEx(hWndGt, vbNullString, "Edit", "") 
        Label14.Caption = ""
        Label14.Caption = "記事本子窗口句柄:0x" & Hex(childhwnd)'利用label14顯示記事本的子窗口“edit”的句柄
        WaitingSeconds (0.3)

        Dim i As Integer
        looptime = 1
       
       
        For i = 1 To looptime Step 1

            PostMessage childhwnd, WM_KEYDOWN, VK_I, 0&  '輸出I
            PostMessage childhwnd, WM_KEYDOWN, VK_SPACE, 0&  '輸出space
            PostMessage childhwnd, WM_KEYDOWN, VK_SPACE, 0&  '輸出space
            WaitingSeconds (0.5)
            PostMessage childhwnd, WM_KEYDOWN, VK_L, 0& '輸出L
            PostMessage childhwnd, WM_KEYDOWN, VK_O, 0& '輸出O
            PostMessage childhwnd, WM_KEYDOWN, VK_V, 0& '輸出V
            PostMessage childhwnd, WM_KEYDOWN, VK_E, 0& '輸出E
            PostMessage childhwnd, WM_KEYDOWN, VK_SPACE, 0&  '輸出space
            PostMessage childhwnd, WM_KEYDOWN, VK_SPACE, 0&  '輸出space
            WaitingSeconds (0.5)
            PostMessage childhwnd, WM_KEYDOWN, VK_Y, 0& '輸出Y
            PostMessage childhwnd, WM_KEYDOWN, VK_O, 0& '輸出O
            PostMessage childhwnd, WM_KEYDOWN, VK_U, 0& '輸出U
            PostMessage childhwnd, WM_KEYDOWN, VK_ENTER, 0&  '輸出enter
           
            WaitingSeconds (0.5)
        Next

        
        Label15(0).Caption = ""
        Label15(0).Caption = "記事本發送完成"

End Sub
上邊這段程序是這樣做得:先找到記事本的窗口,但是由於記事本的特點,它的母窗口並不能讓我們進行操作,只有它的第一個子窗口“Edit”才是我們可以進行操作的。所以我們又利用函數FindWindowEx找到它的第一個子窗口“Edit”的句柄。然后在Edit窗口進行了模擬按鍵的輸出“I LOVE YOU”。

無論記事本是在前台,還是后台,甚至最小化的時候,我們依然可以利用上面的函數將“I LOVE YOU”輸入進記事本,是不是很感慨呢。現在我們已經初步完成了模擬按鍵的學習。

無論前台還是后台,我們都能做到!  外掛,我們來了!


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: