2013-01-25 81 views
3

我寫了一個應用程序,當前處理來自多個鼠標設備的點擊。C#抑制鼠標點擊多個鼠標

我使用了this project並進行了修改,以處理與鍵盤相關的鼠標點擊。

這工作正常,但現在我需要知道是否有一種方法來抑制單擊事件,如果它已被我的應用程序處理。該應用程序是一個測驗遊戲,所以想法是測驗大師將有(並且仍然能夠使用)1只老鼠,其他參賽者將擁有自己的鼠標(作爲蜂鳴器)。所以當他們進入時,我不希望在操作系統(或者至少這個應用程序)中點擊鼠標點擊事件。

概念無效的WndProc(參考消息消息)熟悉的覆蓋,而這就是我一直沒有要求base.WndProc(參考消息)時,我不想讓點擊事件觸發,但這沒有奏效。

有人可以在這裏指出我正確的方向嗎?

我應該去windows hook路線嗎?我已經看過這個,但我似乎無法弄清楚如何單獨連接每個鼠標設備。

任何幫助將不勝感激。

編輯:

這是一個Windows窗體UI項目,而不是WPF。所以MultiPoint SDK from Microsoft將無法​​正常工作。

+1

有沒有在微軟多點SDK什麼? http://www.microsoft.com/multipoint/mouse-sdk/showcase.aspx - 它支持處理來自多個鼠標的輸入。 – dash

+0

你打敗了我,我想說,我應該提到即時通訊使用Windows窗體用戶界面,而不是WPF。我已經看過多點SDK。 – user1830285

+0

窗口掛鉤不起作用,這需要通過WM_INPUT進行原始輸入。需要拼音。 –

回答

1

對此的解決方案不在WndProc中,而是在PreFilterMessage()中。通過在消息到達表單之前攔截消息,您可以將消息從消息泵中移除,從而使它們永遠達不到所單擊的控件。這也適用於表單中的子控件。

我回答了這個並張貼的完整源代碼在以下問題:

C# Get Mouse handle (GetRawInputDeviceInfo)