单击时按住Shift键?

时间:2012-06-17 13:51:25

标签: c# api mouse

我想知道用鼠标点击时可以按住班次。

它看起来与此类似: - 如果您可以使用SendKeys.SendWait函数模拟鼠标单击 - SendKeys.SendWait(+{Mouseclick}); 到目前为止,我已调用API“User32.dll”来调用鼠标单击:

public const int MOUSEEVENTF_LEFTDOWN = 0x2;
public const int MOUSEEVENTF_LEFTUP = 0x4;
public const int MOUSEEVENTF_MIDDLEDOWN = 0x20;
public const int MOUSEEVENTF_MIDDLEUP = 0x40;
public const int MOUSEEVENTF_RIGHTDOWN = 0x8;
public const int MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport("User32.dll")]
public static extern int mouse_event(int dwFlags, int dx, int dy, int cButton, int dwExtra);

 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

然而;是否可以同时按住Shift键?

问候,DotTutorials

1 个答案:

答案 0 :(得分:2)

您应该可以使用keybd_event功能来模拟Shift键。类似的东西:

public const int MOUSEEVENTF_LEFTDOWN = 0x2;
public const int MOUSEEVENTF_LEFTUP = 0x4;
public const int MOUSEEVENTF_MIDDLEDOWN = 0x20;
public const int MOUSEEVENTF_MIDDLEUP = 0x40;
public const int MOUSEEVENTF_RIGHTDOWN = 0x8;
public const int MOUSEEVENTF_RIGHTUP = 0x10;
public const byte KEYBDEVENTF_SHIFTVIRTUAL = 0x10;
public const byte KEYBDEVENTF_SHIFTSCANCODE = 0x2A;
public const int KEYBDEVENTF_KEYDOWN = 0;
public const int KEYBDEVENTF_KEYUP = 2;
[DllImport("User32.dll")]
public static extern int mouse_event(int dwFlags, int dx, int dy, int cButton, int dwExtra);
[DllImport("user32.dll", EntryPoint="keybd_event", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern void keybd_event(byte vk, byte scan, int flags, int extrainfo);

// shift down
keybd_event(KEYBDEVENTF_SHIFTVIRTUAL, KEYBDEVENTF_SHIFTSCANCODE, KEYBDEVENTF_KEYDOWN, 0);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
// shift up
keybd_event(KEYBDEVENTF_SHIFTVIRTUAL, KEYBDEVENTF_SHIFTSCANCODE, KEYBDEVENTF_KEYUP, 0);