亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您好,關于C# sendmessage的詳解,求助!

您好,關于C# sendmessage的詳解,求助!

C C#
慕俠2389804 2021-11-11 11:07:56
sendmessage有幾個參數 用來發鍵盤消息 鼠標消息,我現在不太明白的有這些虛擬鍵值、按下松開、怎么區分是鍵盤還是鼠標、數字跟字母按鍵是不是不僅僅是鍵值的差別 還是有其他參數的區別,暫且拋開組合鍵, 實際點說是幫我搞定幾個發送數字鍵,發送字母鍵,發送左鍵,右鍵,當然這個都包括按下和松開,另外///模擬鼠標左鍵點擊 x表示橫坐標,y表示縱坐標public void SendMsg(IntPtr hWnd, int x, int y){///發送左鍵消息SendMessage(hWnd, 0x0201, (IntPtr)1, (IntPtr)(y * 65536 + x));Thread.Sleep(50);SendMessage(hWnd, 0x0202, (IntPtr)1, (IntPtr)(y * 65536 + x));}這段代碼是否有誤?
查看完整描述

2 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

先看SendMessage
SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
第一個參數HWND hWnd
故名思議是窗體句柄,你這兒作為參數傳遞進來了
第二個參數UINT Msg
是windows消息常量,這里使用到兩個0x201,0x202,還是百科就可以找到,如下:
WM_LBUTTONDOWN = $0201;//按下鼠標左鍵
WM_LBUTTONUP = $0202;//釋放鼠標左鍵
第三個參數WPARAM wParam
MSDN里頭有這么一段
WM_LBUTTONDOWN
WPARAM wParam
LPARAM lParam;
Parameters
wParam
Indicates whether various virtual keys are down. This parameter can be one or more of the following values.
MK_CONTROL
The CTRL key is down.
MK_LBUTTON
The left mouse button is down.//這句是重點了,而后我查找MK_LBUTTON的值,就是定義為 0x01.也就是為什么是(IntPtr)1。
第四個參數LPARAM IParam
MSDN里說到
lParam
The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
這里說到低位代表X坐標,指向左上角,高位則代表Y坐標。從代碼中的(IntPtr)(y * 65536 + x)參數不難分析到,y * 65536相當于<<16。65536代表16位數據的數據量,這個是屬于位的運算。比如0-65535是個16位unsigned int類型的數據范圍,一共能取到的數就是65536.這個數據是個32位的數據,前16位代表了X坐標值,后16位為Y值,所以按照這個寫法應該是正確的。




查看完整回答
反對 回復 2021-11-14
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

SendMessage 第二個參數,指定發送的消息類型, 如鼠標消息WM_LBUTTONDOWN,WM_MOUSEMOVE等。鍵盤消息:WM_KEYDOWN,WM_KEYUP
沒問題,最后2個參數也不必轉成句柄。

查看完整回答
反對 回復 2021-11-14
  • 2 回答
  • 0 關注
  • 515 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號