我正試圖通過使用SetWindowsHookEx,在視窗中的像素發生變化時執行一個動作。我可以成功地接收到Windows訊息,但大多數訊息是在沒有螢屏更新的情況下被呼叫的,而且有些訊息在一個像素上被呼叫了不止一次。
//WH_GETMESSAGE由于某些原因沒有呼叫回呼...。
SetWindowsHookEx(WH_CALLWNDPROC, hhookSysMsg, hinstDLL, GetWindowThreadProcessId(hwnd, NULL)) 。
我試著監聽WM_PAINT、WM_NCPAINT和WM_ERASEBKGND,但由于某些原因,它們并不是每次都能觸發--例如,在記事本中,當滾動條顏色發生變化(例如,當用游標懸停在它們上面)或改變文本本身時,它并沒有觸發。
switch(msg->message
{
//沒有捕捉到所有的螢屏更新!
case WM_PAINT:
case WM_NCPAINT:
case WM_ERASEBKGND:
//Bit-blit the screen to a file/process the screen/etc.。
...
default:
break。
有人能幫我解決這個問題嗎?如果沒有具體的事件在一個視窗內改變像素時運行,是否有一個事件串列,我可以對其進行切換式表達?
uj5u.com熱心網友回復:
沒有訊息可以通知客戶端一個像素的顏色變化。這也不會真的有用。客戶端負責在視窗的(客戶)區域內繪圖。如果他們需要知道一個像素的顏色變化,它可以自己監控這個狀態。
如果你需要知道一個像素的顏色變化,它可以自己監控。
如果您需要監控外國行程中像素顏色的變化,系統將不會幫助您解決這個問題。你將不得不鉤住所有可能改變像素顏色的 API 呼叫,并保留狀態資訊以確定狀態的變化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/320280.html
標籤:
上一篇:多執行緒和等待事件的問題
