
有几种方法实现:
1创建一个桌面大小的"透明窗体",并且边框设为0。这样窗口坐标就是桌面坐标,在自己程序的消息循环中捕获鼠标消息就行了。QQ、RTX的"屏幕截图"功能就是这样实现的。
2使用SetWindowsHookEx捕获WH_MOUSE、WH_GETMESSAGE消息。并将SetWindowsHookEx的第四个参数设置为NULL,捕获全局的消息。然后在第二个参数的回调函数中调用CallNextHookEx,以及监听鼠标消息。程序关闭后,别忘记调用UnhookWindowsHookEx。还有就是程序要写在DLL中,因为系统会把它注入到其它进程中去捕获消息的。可以参考网上SetWindowsHookEx实现键盘记录的例子,实现鼠标记录。
3驱动中Inline Hook Mouclass鼠标类驱动的MouseClassServiceCallback函数,获得鼠标输入。
建议使用1、2中的一种方法。没必要开发驱动,这里只是介绍有几种方法可以获得鼠标全局点击事件。
来自:>
1 利用findwindow函数,通过窗体的标题(caption)来获取窗体的句柄
2 再利用SetWindowPos函数,利用窗体句柄来设置一个窗体的位置。。。
你可以把一个外部窗口移动摆放在任何位置。。。。。自然就知道它的位置了
#include "stdioh"
#include "windowsh"
void main()
{
// 获取活动窗口
HWND h=GetForegroundWindow();
printf("0x%X\n",h);
// 获取窗口标题
char text[200];
GetWindowText(h,text,200);
printf("%s\n",text);
// 获取屏幕鼠标坐标
POINT pt;
GetCursorPos(&pt);
printf("%d %d\n",ptx,pty);
// 获取窗口鼠标坐标
ScreenToClient(h,&pt);
printf("%d %d\n",ptx,pty);
}
设置窗口在屏幕的位置可使用以下函数:
move(int x,int y)
move(QPoint p)
窗口的位置是相对于父窗口的,已包括标题栏的高度和边框的宽度。
setGeometry(int x,int y,int w,int h)
setGeometry(QRect r)
setGeometry()可同时设置窗口的位置和尺寸,与move()不同,x,y的值不包括题栏的高度和边框的宽度。所以,如果执行setGeometry(0,0,500,200),窗口的标题栏和边框在屏幕之外,而无法显示在屏幕上。
注意:
原点位置左上角。x 轴向右,y轴向下。
获取窗口位置的函数有:
x():获取窗口的x轴位置;
y():获取窗口的y轴位置;
pos():返回包含x,y轴位置的QPoint实例;
geometry():返回包含x,y轴位置以及窗口宽、高的QRect实例;这些值不包括标题栏的高度和边框的宽度。
frameGeometry():返回的参数与geometry()相同,但包括标题栏的高度和边框的宽度且要在显示之后调用才有效。
例如:
要让窗口显示在屏幕中央,就需要知道屏幕的尺寸。可调用静态函数QApplicationdesktop()来获取代表桌面的QDesktopWidget 对象。
再通过调用QDesktopWidget类的函数得到相应值:
width():屏幕宽度的像素值;
height()::屏幕高度的像素值;
screenGeomtry():返回整个屏幕的位置和尺寸的QRect对象;
availableGeomtry():返回屏幕可用区域的位置和尺寸的QRect对象,即扣除任务栏的区域。
例1:
例2:
你在本对话框类中用GetWindowRect
肯定只能获得本窗口的啊
用
::GetWindowRect(
),
第一个参数是目标窗口的HWND
(注意前面有两个冒号)
RECT rectWindow;
BOOL GetWindowRect(hwnd,&rectWindow);
第一个是窗体的句柄,第二个参数填矩形的指针。
之后这个矩形rectWindow就是窗口的大小和位置了。
如果还要设置窗口位置的话,要使用SetWindowPos。这个函数功能太多,写不过来,具体用法百度百科上有。
分成两个问题,到底哪个你不会?
Winform里多个窗体之间如何传递变量?
Winform里如何获取窗体相对于桌面(屏幕)的坐标?
以上就是关于如何获取任意窗口中的控件的位置,返回坐标vc的全部的内容,包括:如何获取任意窗口中的控件的位置,返回坐标vc的、在易语言中知道一个窗口的地址怎么获取其位置、VB 如何获取外部程序的窗口位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)