2010-10-22 34 views
1

將WM_MOUSEMOVE消息發送到應用程序的客戶區(在本例中爲Open Office Writer)時,圖像將閃爍,就好像鼠標位於指定的座標上一樣,但不會保持該狀態。的代碼是:SendMessage WM_MOUSEMOVE不能正常工作

PostMessage的(hWndClient,WM_MOUSEMOVE,0,MAKEWORD(X,Y))

其中x和y是相對於客戶區。

在循環中發送它仍然不起作用,因爲鼠標懸停事件突出顯示的區域將閃爍。

任何幫助,將不勝感激。

+0

你試圖通過發送'WM_MOUSEMOVE'打開Office作家來完成什麼目標? – 2010-10-22 01:36:56

+0

這是一種多用戶VNC類的事情,所以移動光標使用SetCursorPos或什麼你不會不幸的工作。 – ckg 2010-10-22 01:49:03

+0

你是否設法讓它工作?我自動化的一個控件在懸停之前無法工作,所以我需要說服程序使用Windows消息來懸停按鈕。 – 2015-03-16 01:48:43

回答

1

該應用程序可能觸發各種其他事件。也許它想看WM_MOUSEHOVER等等......這已經很長時間了,但我記得那裏有一些關於如何實現這些事件的東西 - 就像有一個單獨的線程輪詢鼠標並在鼠標生成WM_MOUSELEAVE事件時不再是窗口。你也可能會被類似的東西咬傷。當接收事件時,應用程序本身也可能輪詢鼠標的真實位置。

根據你想要做的事情,也許你可以通過編程的方式移動鼠標,而不是僅僅試圖僞造事件。不幸的是,我不記得這個API,但我相信這是可能的。

+0

你說得對,應用程序在WM_MOUSEMOVE消息後調用GetWindowPos。 – ckg 2010-10-22 04:50:49

1

我用某事像這樣在我的主窗口,並期待幫助...在WM_MOUSEMOVE:

POINT Point; 
GetCursorPos(&Point); 
ScreenToClient(hHwnd, &Point); 
int X = Point.x; 
int Y = Point.y;