gpt4 book ai didi

c++ - 尝试将鼠标按下和向上事件发送到 C++ 中的绘图 Canvas 应用程序/窗口

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:40 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的程序,将鼠标光标移动到屏幕上的 X、Y 位置,发送鼠标按下事件,再次移动光标,然后释放鼠标以绘制一条线

我尝试使用 SendInput 和 mouse_events 取得了一些成功,但不是我想要的。

int main(int argc, char *argv[])
{
tagINPUT inp;
tagMOUSEINPUT mi;
DWORD moveFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE);
DWORD downFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN);
DWORD upFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP);

mi.dwFlags = moveFlags;
mi.dx = 5000;
mi.dy = 2000;
inp.type = INPUT_MOUSE;
inp.mi = mi;

SendInput(1, &inp, sizeof inp);

tagMOUSEINPUT mi2;
tagINPUT inp2;

SetCursorPos(1500, 500);

mi2.dwFlags = downFlags;
inp2.type = INPUT_MOUSE;
inp2.mi = mi2;
SendInput(1, &inp2, sizeof inp2);

SetCursorPos(500,200);
mi2.dwFlags = upFlags;
inp2.type = INPUT_MOUSE;
inp2.mi=mi2;
SendInput(1, &inp2, sizeof inp2);

return 0;
}

非常基本的尝试,只是移动、单击、移动和释放。

基本上,这适用于常规用户控件。如果说 Chrome 是最上面的窗口,它会突出显示一些文本。我可以移动 x/y 使其点击屏幕上的按钮/用户控件...

这也将在选择橡皮擦函数时才在MSpaint中绘制所需的行。如果我尝试使用 Brushtool,什么也不会发生。如果我试图在 Flash 窗口上绘图 (http://doodle.no.de),也是一样;

我已经尝试使用 0x0201 和 0x0202 作为我的 leftdown 和 leftup(它们都是 WM_ 等价物)并且它们的行为完全相同。

有什么想法吗?

最佳答案

如果您使用 Mouse_event,则很容易完成此任务。这是我想出的代码,希望对您有所帮助。

 #include <iostream>
#include <windows.h>

using namespace std;

int main()
{
int pos1, pos2, pos3, pos4;


cout << "Enter x coordinate: "; //starting point
cin >> pos1;
cout << "Enter y coordinate: ";
cin >> pos2;


cout << "Enter x coordinate: "; //ending point
cin >> pos3;
cout << "Enter y coordinate: ";
cin >> pos4;

SetCursorPos(pos1,pos2);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0); //clicks on canvas
Sleep(30); //puts small delay between next click
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); // holds down left mouse button
Sleep(300);
SetCursorPos(pos3,pos4);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //releases left mouse button


return 0;
}

关于c++ - 尝试将鼠标按下和向上事件发送到 C++ 中的绘图 Canvas 应用程序/窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7935742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com