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

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

C語言FindWindow和SetFocus的問題?

C語言FindWindow和SetFocus的問題?

胡子哥哥 2019-02-19 18:14:02
C語言FindWindow和SetFocus的問題
查看完整描述

2 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

FindWindow返回HWND類型的句柄。在MSDN上關于SetFocus函數的介紹,其中有一句很關鍵“該窗口必須與調用線程的消息隊列相關。”意思就是說在窗口線程中才可以對這個窗口SetFocus(),估計你是別的線程中對查找到的窗口,然后使用SetFocus,所以失敗了。

SetFocus函數的說明:

函數功能:該函數對指定的窗口設置鍵盤焦點。該窗口必須與調用線程的消息隊列相關。
函數原型:HWND SetFocus(HWND hWnd)。
參數:
hWnd:接收鍵盤輸入的窗口指針。若該參數為NULL,則擊鍵被忽略。
返回值:若函數調用成功,則返回原先擁有鍵盤焦點的窗口句柄。若hWnd參數無效或窗口未與調用線程的消息隊列相關,則返回值為NULL。若想要獲得更多錯誤信息,可以調用GetLastError函數。

查看完整回答
反對 回復 2019-03-10
?
蠱毒傳說

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

printf("%08X\n",shwnd);//用spy++測試了,句柄值是對的

DWORD cmdpid;
GetWindowThreadProcessId(cmd,&cmdpid);//當前控制臺PID
DWORD notepid;
GetWindowThreadProcessId(shwnd,?epid);//輸入欄PID

AttachThreadInput(cmdpid,notepid,TRUE);//連接控制臺和記事本輸入欄兩個線程

SetFocus(fhwnd);//焦點轉移到輸入欄
printf("%08X",SetFocus(fhwnd));//此處輸出0,調用失敗

keybd_event('A',0,0,0);//發送消息
keybd_event('A',0,KEYEVENTF_KEYUP,0);

AttachThreadInput(cmdpid,notepid,FALSE);//釋放連接
getchar();
return 0;



查看完整回答
反對 回復 2019-03-10
  • 2 回答
  • 0 關注
  • 912 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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