在Windows中检测双击全局

时间:2012-10-12 01:28:33

标签: c# c++ windows visual-studio-2010 winapi

我想编写一个在后台运行的Windows程序,并打印出下一次鼠标双击事件发生时的确切时间(精确到毫秒)。具体来说,我想要在桌面上双击某个.exe文件的确切时间。有没有办法做到这一点,如果是这样,你能提供一些简单的示例代码吗?

2 个答案:

答案 0 :(得分:0)

可能制作Windows挂钩是最好的解决方案。 查看关于钩子的文档。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms632589%28v=vs.85%29.aspx

查看此演示:

http://code.msdn.microsoft.com/windowsdesktop/CppWindowsHook-06957865

答案 1 :(得分:0)

在某些情况下,例如silverlight,您没有鼠标双击事件,所以您可以做的是检查鼠标按下的时间和位置,并与下一个鼠标按下时间和位置进行比较,以模拟双击动作。它是这样的:

    double mouseVerticalPosition;
    double mouseHorizontalPosition;        
    DateTime clickedTime;
    bool IsSecondClick = false;


    void button_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
       {
           if(IsSecondClick)
           {

             IsSecondClick = false;
             if ((y - mouseVerticalPosition == 0) & y - mouseHorizontalPosition == 0) &
             clickedTime - DateTime.Now < SOMETIME )
             { 
               // mouse double click happenes
             }
           }
           else
           {
             IsSecondClick = true;
             clickedTime = DateTime.Now;
             mouseVerticalPosition = e.GetPosition(null).Y;
             mouseHorizontalPosition = e.GetPosition(null).X;               

           }
       }