導航:首頁 > 編程大全 > 給指定窗口發消息工具

給指定窗口發消息工具

發布時間:2021-03-06 07:40:49

『壹』 如何向另外一個窗體發送點擊某一按鈕的消息

先用FindWindow函數找到程序句柄,再用findWindowEx扭句柄,然後調用sendmessage函數發送消息即可

Declare Function SendMessage Lib 「user32" Alias 「SendMessageA" (ByVal hwnd
As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
SendMessage函數的hwnd參數為接收消息的窗口或控制項的hwnd句柄。wMsg參數指定具體的消息值。要發送滑鼠左鍵按下和釋放的消息,wMsg的取值分別為WM_LBUTTONDOWN和WM_LBUTTONUP,這兩個常量定義如下:

Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
把這兩個消息發送給一個按鈕,按鈕就會像真的被滑鼠左鍵單擊了一樣。SendMessage函數中的後兩個參數在本例中可以不理,簡單置0即可。
還有一點細節需注意。如果連續給按鈕發送一對WM_LBUTTONDOWN和WM_LBUTTONUP消息,Windows會來不及進行一些必要的系統操作,這樣在視覺上就看不出按鈕被按下後又放開的效果,好像按鈕沒有按動。但按鈕的Click事件處理過程被激活執行表明按鈕確實被按過。為了達到視覺上的完美效果,我們不妨在WM_LBUTTONDOWN和WM_LBUTTONUP兩個消息之間插入一段短短的延時,比如說200毫秒,在這段延時期間,把處理權交給Windows,這樣Windows就有時間顯示按鈕被按下的效果了。插入延時的辦法有很多,可以加入一段空循環或利用計時器控制項,這里再介紹一個API函數GetTickCount,該函數獲取自Windows啟動至被調用時所經過的毫秒數。利用這個函數控制延時,不僅精確,而且節省資源。
GetTickCount 函數的介面聲明如下:
Declare Function GetTickCount Lib 「kernel32" () As Long

====================CODE:
Private eclare Function GetTickCount Lib 「kernel32" () As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Private 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
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Dim tWnd As Long, bWnd As Long, ncWnd As Long

Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202

Private Sub Command1_Click()
tWnd = FindWindow("Shell_TrayWnd", vbNullString)
bWnd = FindWindowEx(tWnd, ByVal 0&, "BUTTON", vbNullString)
SendMessage bWnd, WM_LBUTTONDOWN, 0, ByVal O&
GetTickCount
SendMessage bWnd, WM_LBUTTONUP, 0, ByVal O&
End Sub這個例子展示點「開始」按扭

『貳』 vb如何對指定窗口發送按鍵消息

如果對普通的窗口發送就直接sendkeys,如果對高級一點的窗口發就用KEYBOARD_EVENT這個API函數,如果對回高級游戲窗口發答送按鍵消息一般就要用到驅動級WINIO模擬按鍵了,不知道你想用哪種我給一個keyboard_event函數模擬鍵盤按鍵的代碼吧通用部分聲明:Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) 窗體部分,也就是按鍵實現代碼:keybd_event vbKeyUp, 0, 0, 0 '按下↑鍵
keybd_event vbKeyUp, 0, 2, 0 '釋放↑鍵 這里模擬按上下方向鍵你自己改一下就行了

『叄』 python向指定窗口模擬發送鍵盤消息

//根據窗口標題找到對應窗口的句柄

[cpp] view plain
HWND hq = FindWindow(NULL, title);
if (hq != NULL)
{
cout << "找到對應窗口";
}
else
{
cout << "沒找到對應窗口";
}

//通過句柄向指定窗口發送專模擬鍵盤按鍵消屬息

[cpp] view plain
SendMessage(hq, WM_KEYDOWN, 'L', 0);

『肆』 怎麼用SendMessageA 給指定窗口發送滑鼠點擊某點消息

不是不支持,而是屏蔽了,游戲禁止程序對游戲進行非法操作,包括修改內存,修改封包,自動按鍵之類的操作,你可以找找利用winio進行按鍵操作的模塊或者支持庫,理論上這個是屏蔽不了,

『伍』 VB sendkey可以向指定窗口發送消息嗎如果可以,怎麼實現

Private Sub Form_Load()
Dim x
x = Shell("Notepad.exe", vbNormalFocus)
SendKeys "這是一個文本文件的測試程序.", True ' 模擬輸入英文字元串
SendKeys "{Enter}{Enter}", True ' 兩次回車
waittime (2) ' 延時 2 秒
SendKeys "自動輸入文字", True
SendKeys "{Enter}{Enter}", True
waittime (2)
SendKeys "既不是病毒,也不是木馬!", True
SendKeys "{Enter}{Enter}", True
waittime (2)
SendKeys "開始退出... 看菜單項{(}F{)}...", True
SendKeys "%", True 'Alt 鍵激活菜單條
waittime (1)
SendKeys "(F)", True '按字母 "F",選擇"文件(F)"菜單
waittime (1)
SendKeys "(X)", True '按字母 "X", 選擇"退出(X)"
waittime (2)
SendKeys "(N)", True '彈出一個對話框,詢問文件是否存檔,按 "N" 不存檔
End '結束本模擬程序
End Sub
Private Sub waittime(delay As Single)
Dim starttime As Single
starttime = Timer
Do Until (Timer - starttime) > delay
Loop
End Sub

『陸』 VB向指定窗口發送消息

Private 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
Private Const WM_CHAR = &H102Private Sub Command1_Click()
PostMessage &H290B6C, WM_CHAR, Asc("A"), 0
End Sub

『柒』 sendmessage怎麼在易語言中讓它找到指定窗口然後發送按鍵消息而且支持後台的哦謝謝大家幫忙解決解決吧!

發送抄按鍵消息用這個命令:ndmessage(你要接收消息的窗口句柄,自定義消息,0,0)
而支持後台的話,你用了時鍾去循環執行,就已經可以後台了。
關鍵在於找到指定的窗口,一般窗口所屬進程的名稱是不變的,那就可以從進程名取出窗口句柄,然後就sendmessage就行了。
值得一提的是這個方法用來對付網路游戲不一定管用,網路游戲開發者有一定的防範措施的!
你可以用來對付系統記事本測試一下程序是否有效

『捌』 VB 用SendMessage向指定窗口發送消息,發送哪個消息可以改變窗體的類型

'這個程序運行的效果是,單擊一下窗體,變成無標題欄,再次單擊,又變有標題欄。
'剛才試驗過,把Me.Hwnd改成windows計算器的句柄,就可以隨意改變計算器的窗體類型

'設置窗體結構信息函數
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'獲取窗體結構信息函數
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_SYSMENU = &H80000
Private Const WS_CAPTION = &HC00000
Private Const WS_SIZEBOX = &H40000
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
'為窗體指定一個新位置和狀態函數
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_NOZORDER = &H4
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_NOREPOSITION = &H200
'獲得整個窗體的大小和位置
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Change As Boolean
Private Sub Form_Click()
Dim lStyle As Long
Dim MyRect As RECT
'獲取窗體的大小和位置
GetWindowRect Me.hwnd, MyRect
'取得當前窗體信息
lStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
If Change Then
'分別使系統菜單(包括圖標)、標題、大小、最大化、最小化顯示/有效
lStyle = lStyle Or WS_SYSMENU
lStyle = lStyle Or WS_CAPTION
lStyle = lStyle Or WS_SIZEBOX
lStyle = lStyle Or WS_MAXIMIZEBOX
lStyle = lStyle Or WS_MINIMIZEBOX
Else
'分別使系統菜單(包括圖標)、標題、大小、最大化、最小化隱藏/無效
lStyle = lStyle And Not WS_SYSMENU
lStyle = lStyle And Not WS_CAPTION
lStyle = lStyle And Not WS_SIZEBOX
lStyle = lStyle And Not WS_MAXIMIZEBOX
lStyle = lStyle And Not WS_MINIMIZEBOX
End If
'按lStyle的值設置窗體信息
SetWindowLong Me.hwnd, GWL_STYLE, lStyle
'保持窗體的大小與位置不變
SetWindowPos Me.hwnd, 0, MyRect.Left, MyRect.Top, MyRect.Right - MyRect.Left, MyRect.Bottom - MyRect.Top, SWP_NOREPOSITION Or SWP_NOZORDER Or SWP_FRAMECHANGED
'改變顯示/隱藏狀態
Change = Not Change
End Sub

『玖』 VB sendkey可以向指定窗口發送消息嗎 如果可以 怎麼實現

可以的,比如先啟動計算器,再在VB中運行下面的代碼即可向計算器中輸入數字專:
AppActivate "計算器"
SendKeys "1234"

不過一般來說這屬個只能實現簡單的功能,如果要想實現復雜一些的操作(比如向處於後台運行狀態的窗口發送按鍵消息,並且不影響前台的鍵盤操作),就要藉助API函數了,而且代碼量也比較大。所謂的API就是FindWindow先找到指定窗口的句柄,再用SendMessage發送按鍵消息咯。不過這就跟VB本身的sendkey無關了。

『拾』 易語言在指定窗口發送指定信息軟體怎麼製作

QQ聊天窗口你是取不到句柄的,不信你試試。幾年前的老版本QQ可以取到

閱讀全文

與給指定窗口發消息工具相關的資料

熱點內容
網路中常用的傳輸介質 瀏覽:518
文件如何使用 瀏覽:322
同步推密碼找回 瀏覽:865
樂高怎麼才能用電腦編程序 瀏覽:65
本機qq文件為什麼找不到 瀏覽:264
安卓qq空間免升級 瀏覽:490
linux如何刪除模塊驅動程序 瀏覽:193
at89c51c程序 瀏覽:329
怎麼創建word大綱文件 瀏覽:622
裊裊朗誦文件生成器 瀏覽:626
1054件文件是多少gb 瀏覽:371
高州禁養區內能養豬多少頭的文件 瀏覽:927
win8ico文件 瀏覽:949
仁和數控怎麼編程 瀏覽:381
項目文件夾圖片 瀏覽:87
怎麼在東芝電視安裝app 瀏覽:954
plc顯示數字怎麼編程 瀏覽:439
如何辨別假網站 瀏覽:711
寬頻用別人的賬號密碼 瀏覽:556
新app如何佔有市場 瀏覽:42

友情鏈接