我的程式向別的行程發滑鼠訊息,就是wm_lbuttondown,發現有的行,有的不行。不行的話,要發mouse_event才行。但是這樣就要求那個視窗是前端視窗,很不方便。
為什么有時候滑鼠訊息不行,非要發mouse_event? 有辦法讓它不是前端視窗時也能起作用嗎?
uj5u.com熱心網友回復:
用spy++捕獲下目標視窗收到的訊息,在視窗不是前段的情況下,看看目標視窗是否有收到訊息uj5u.com熱心網友回復:
你是說發wm_lbuttondown訊息?
uj5u.com熱心網友回復:
現在 我如果用mouse_event是可以正常作業的 目標視窗就像是人手工按下了滑鼠一樣。但用sendmessage發wm_lbuttondown訊息則不行
不過 用mouse_event有個麻煩之處 就是必須先把目標視窗設為前端視窗 才行 否則也無法正常作業
uj5u.com熱心網友回復:
試試用 PostMessage 派發到訊息佇列中uj5u.com熱心網友回復:
http://www.autohotkey.com或者
CreateDesktop
uj5u.com熱心網友回復:
我想問: 這種不回應wm_lbuttondown訊息,卻卻能回應mouse_event的程式是怎樣撰寫的?兩者有什么不同?uj5u.com熱心網友回復:
鍵盤滑鼠屬于輸入訊息, 有焦點的如果點擊的是子控制元件, 這些訊息不能直接發給主表單, 你要發到控制元件上去
uj5u.com熱心網友回復:
你不是說有的時候訊息發過去了但是實際感覺表單是沒有回應訊息嗎,所以就先確認下看看訊息有沒有發送過去
uj5u.com熱心網友回復:
發了WM_LBUTTONDOWN,別忘了發WM_LBUTTONUPuj5u.com熱心網友回復:
有兩種可能性1. 目標視窗句柄拿錯了. 這時發到哪里去了 , 就不知道了.
2. 如果目標視窗, 不是你自己寫的程式, 那么很可能目標視窗對這類的滑鼠訊息有特殊處理.
uj5u.com熱心網友回復:
很多訊息是不允許/不能跨行程發的。uj5u.com熱心網友回復:
用spy++捕獲下目標視窗收到的訊息,在視窗不是前段的情況下,看看目標視窗是否有收到訊息
你是說發wm_lbuttondown訊息?
你不是說有的時候訊息發過去了但是實際感覺表單是沒有回應訊息嗎,所以就先確認下看看訊息有沒有發送過去
剛才用spy看了一下 訊息已經發到目標視窗 但目標程式不處理 沒反應
uj5u.com熱心網友回復:
有兩種可能性
1. 目標視窗句柄拿錯了. 這時發到哪里去了 , 就不知道了.
2. 如果目標視窗, 不是你自己寫的程式, 那么很可能目標視窗對這類的滑鼠訊息有特殊處理.
應該是
有兩種可能性
1. 目標視窗句柄拿錯了. 這時發到哪里去了 , 就不知道了.
2. 如果目標視窗, 不是你自己寫的程式, 那么很可能目標視窗對這類的滑鼠訊息有特殊處理.
有兩種可能性
1. 目標視窗句柄拿錯了. 這時發到哪里去了 , 就不知道了.
2. 如果目標視窗, 不是你自己寫的程式, 那么很可能目標視窗對這類的滑鼠訊息有特殊處理.
有兩種可能性
1. 目標視窗句柄拿錯了. 這時發到哪里去了 , 就不知道了.
2. 如果目標視窗, 不是你自己寫的程式, 那么很可能目標視窗對這類的滑鼠訊息有特殊處理.
應該是第二種情況 因為spy跟蹤到訊息一發到目標視窗
這就難了 他有特殊處理方法 我怎樣讓他不是前端視窗時也能處理呢 mouse_event倒是可以 但要求是前端視窗
uj5u.com熱心網友回復:
我就想問一下 不處理wm_lbuttondown訊息 但回應mouse_event的程式怎么寫?uj5u.com熱心網友回復:
用spy++捕獲下目標視窗收到的訊息,在視窗不是前段的情況下,看看目標視窗是否有收到訊息
你是說發wm_lbuttondown訊息?
你不是說有的時候訊息發過去了但是實際感覺表單是沒有回應訊息嗎,所以就先確認下看看訊息有沒有發送過去
剛才用spy看了一下 訊息已經發到目標視窗 但目標程式不處理 沒反應
那視窗收到直接的物理按建的訊息和自己發送過去的一樣嗎?
uj5u.com熱心網友回復:
用spy++捕獲下目標視窗收到的訊息,在視窗不是前段的情況下,看看目標視窗是否有收到訊息
你是說發wm_lbuttondown訊息?
你不是說有的時候訊息發過去了但是實際感覺表單是沒有回應訊息嗎,所以就先確認下看看訊息有沒有發送過去
剛才用spy看了一下 訊息已經發到目標視窗 但目標程式不處理 沒反應
那視窗收到直接的物理按建的訊息和自己發送過去的一樣嗎?
一樣的
uj5u.com熱心網友回復:
剛才試用了一個虛擬桌面軟體,發現如果程式運行在虛擬桌面里,如果當前顯示的不是虛擬桌面,那么mouse_event是不能把訊息訊息發到相應的視窗的,只有把這個虛擬桌面顯示出來,滑鼠訊息才能發到那個視窗。uj5u.com熱心網友回復:
頭疼啊!我的程式,想把滑鼠訊息發給一個應用程式,結果,第一:發WM_LBUTTONDOWN這樣的訊息不行,得發mouse_event,而mouse_event的話,又必須目標視窗在最前端。連放到虛擬桌面里都不行。這是不是意味著,我的程式,無法讓它在后臺作業了?只能把它的目標視窗,放到最前端?
還有什么別的辦法嗎?我知道虛擬機是一種方法,但是一般的用戶都是不會虛擬機的。除了虛擬機以外,還有別的辦法嗎?
uj5u.com熱心網友回復:
搜“后臺呼叫外部程式的完美實作(使用CreateDesktop建立隱藏桌面)”uj5u.com熱心網友回復:
HOOK后在處理uj5u.com熱心網友回復:
頭疼啊!我的程式,想把滑鼠訊息發給一個應用程式,結果,第一:發WM_LBUTTONDOWN這樣的訊息不行,得發mouse_event,而mouse_event的話,又必須目標視窗在最前端。連放到虛擬桌面里都不行。
這是不是意味著,我的程式,無法讓它在后臺作業了?只能把它的目標視窗,放到最前端?
還有什么別的辦法嗎?我知道虛擬機是一種方法,但是一般的用戶都是不會虛擬機的。除了虛擬機以外,還有別的辦法嗎?
這種屏蔽了的,只能hook或者注入后臺處理
uj5u.com熱心網友回復:
wm_lbuttondown 需要wparam 和lparam引數配合使用,它內部也有可能做了訊息過濾轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/40493.html
標籤:基礎類
