2011-11-30 52 views
1

我的鼠標有問題。每當我只點擊一次,它會偶爾雙擊。我知道這是鼠標的問題,我已經聯繫了製造商,仍然在等待回覆。但在此期間,我想知道是否有一種方法可以在很短的時間(可能是1-10毫秒)內點擊鼠標左鍵兩次,並禁用第二次點擊。攔截和禁用全局鼠標事件

我主要知道如何使用鉤子,所以這不是問題,我的主要問題是如何阻止事件發生,如果可能的話。

+1

這個問題涉及Windows,而不是C++。你應該重播它。 – curiousguy

+2

這是不切實際的,希望你能從製造商那裏得到解決方案。買另一隻老鼠。 –

回答

1

關於如何防止從正在處理的鼠標消息的信息是MSDN中的「LowLevelMouseProc回調函數」的文檔中: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644986(v=vs.85).aspx 具體而言,說:「如果所述鉤程序處理了該消息,它可能會返回一個非零值,以防止系統將消息傳遞給鉤子鏈或目標窗口過程的其餘部分。「所以,如果你瞭解windows hook,你就知道該怎麼做。

編輯:實際上,現在我想到更多關於它,你不想丟棄任何事件。您只是想將doubleclick事件轉換爲另一個左鍵事件。我相信你可以在鉤子處理程序中完成它,它會起作用。你試過了嗎?

+0

我還沒有嘗試過,感謝您的信息和想法,我會給它一個鏡頭。 – Elec0

0

在C#的WinForms中,您編寫了一個涉及鼠標接收MouseEventArgs對象的事件處理程序。在它內部,您可以訪問某些信息,例如它被點擊的次數。

protected void RowClicked(object sender, MouseEventArgs evt) 
{ 
    // Trigger it when the mouse was clicked only once 
    if(evt.Button.Clicks == 1) { 
     // ... more things ... 
    } 

    return; 
} 

其他的圖書館有其他的可能性。也就是說,你的問題與GUI庫無關。您必須在操作系統的配置選項中更改鼠標的靈敏度。例如,在Windows的控制面板中,您可以更改點擊與另一個點擊之間必須經過多少時間才能被視爲雙擊。在l Ubuntu中,你可以做同樣的事情,在系統菜單>>首選項>>鍵盤和鼠標。

+0

問題的標題顯示「攔截和禁用全局鼠標事件」。 –