c ++鼠标点击模拟代码

时间:2013-07-02 21:07:46

标签: c++ winapi

我无法理解下面的代码。我无法对它进行很好的解释。 我在代码段旁边留下了我有疑问的评论。

  void LeftClick ( )
        {  
          INPUT input = {0};

           // left down 
          input.type      = INPUT_MOUSE;
          input.mi.dwFlags  = MOUSEEVENTF_LEFTDOWN;
          ::SendInput(1,&input,sizeof(INPUT));

          // left up
          ::ZeroMemory(&input,sizeof(INPUT)); // why zeroMemory? removing this code changes nothing that i can tell
          input.type      = INPUT_MOUSE; // why reset this variable? is it not already set?

          input.mi.dwFlags  = MOUSEEVENTF_LEFTUP;
          ::SendInput(1,&input,sizeof(INPUT));
        }

我在http://forums.codeguru.com/showthread.php?377394-Windows-SDK-User-Interface-How-can-I-emulate-mouse-events-in-an-application

获得了此代码

1 个答案:

答案 0 :(得分:4)

ZeroMemory函数清除名为input的结构中的所有数据 - 这就是代码必须重置input.type变量的原因。

文档:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366920(v=vs.85).aspx

我实际上看了一下我编写的一些旧代码,但我根本没有使用ZeroMemory宏。这是非常不必要的,因为设置的两个值都会重新设置。