背景:hook客戶端程式clientApp,hook程式為一個對話框程式
目的:在clientApp的唯一eidt控制元件輸入交易碼的時候,hook程式彈出該交易的help資訊(對話框隱藏并嵌入瀏覽器控制元件,Navigate來顯示幫助資訊)
還有:對話框啟動的時候隱藏在托盤,在defWindowProc實作
現:hook寫的是一個鍵盤鉤子dll,對話框程式是調起程式,clientApp是個全屏的
hook捕獲到clientApp輸入交易碼后,呼叫Navigate后,通過SendMessage發WM_PAINT訊息,在OnPaint呼叫ShowWindow()和UpdateWindow();
問題:
程式執行的時候,如果第一次輸入交易碼,能彈出對話框,顯示幫助資訊,
但是再次輸入交易碼后,沒彈出對話框,點任務欄顯示對話框確實也根據交易碼獲取了幫助資訊,但沒彈到前面來
已做:
一開始是捕獲交易碼后發WM_NCPAINT,然后在defWindowProc中ShowWindow(),試了SetActiveWindow(),SetForegroundWindow(),只在任務欄變亮,但
是未在clientApp界面上顯示(第一次都是成功的,就是第二次不成功顯示),點擊任務欄顯示正確。然后查了資料,說WM_NCPAINT是重繪非客戶區,然后我換WM_PAINT,并在OnPaint()
中顯示,還是一樣的,第一次能彈,第二次不行!!!!
請高手解惑(PS: 第一次用MFC做這個,對話框底層呼叫流程不是很理解)
(SetWindowPos Top不行,用戶操作的時候,當輸交易碼的時候,幫助資訊對話框應該被覆寫了,輸完交易碼回車的時候彈出)
uj5u.com熱心網友回復:
這種問題最好是用show hide來搞吧轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/112508.html
標籤:界面
上一篇:USB藍牙配接器介面函式呼叫
