所以我写了一个小工具,有一点更容易访问的功能,因为没有热键。
现在我使用全局热键将鼠标移动到显示器上的特定位置并执行r/l单击。
KeyboardHook hook = new KeyboardHook();
hook.KeyPressed +=
new EventHandler<KeyPressedEventArgs>(hook_KeyPressed);
hook.RegisterHotKey(TestBox.ModifierKeys.Control, Keys.D1);
void hook_KeyPressed(object sender, KeyPressedEventArgs e)
{
Process[] p = Process.GetProcessesByName(".......");
if (p.Count() > 0)
SetForegroundWindow(p[0].MainWindowHandle);
RightMouseClick(2000,110);
System.Threading.Thread.Sleep(200);
LeftMouseClick(2060,120);
}
到目前为止一切顺利。现在我的问题是:
坐标是从我的右显示器(三重设置)。但如果我决定切换程序到我的左显示器?然后坐标不再匹配。我的方式将是这样的东西,但我不知道如何开始和实现这一点。
如果你第一次按下热键,有一个坐标检查。如果没有-〉要求设置他们。用户然后移动鼠标到第一个点,按F2,移动到第二个点,并再次按F2。所以坐标被保存,热键可以执行。
1条答案
按热度按时间jc3wubiy1#
您的问题是关于多屏幕显示器上的屏幕坐标,重点是:
[...]如果我决定把程序切换到我左边的显示器上怎么办?
您是否考虑过使用Screen类来获取显示指标?使用Jeremy的link for
GetWindowRect()
,您可以让应用按时间间隔轮询程序位置变化,确定每个应用所在的屏幕,并相应地调整坐标。**组合框的屏幕 Package **
列举