Windows编程中如何获取Windows桌面快捷方式的坐标和大小?

Windows编程中如何获取Windows桌面快捷方式的坐标和大小?,第1张

DWORD dwProcessId

HWND hDeskTop

hDeskTop = ::FindWindow( "progman", NULL )

hDeskTop = ::FindWindowEx( hDeskTop, 0, "shelldll_defview", NULL )

hDeskTop = ::FindWindowEx( hDeskTop, 0, "syslistview32", NULL )//获取桌面窗口句柄

GetWindowThreadProcessId(hDeskTop, &dwProcessId)//通过桌面窗口句柄获取此窗口所在进程的PID,其实就是explorer进程

HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId)//打开指定PID进程,取得进程句柄

LPVOID lpvPt = VirtualAllocEx(hProcess,NULL,sizeof(POINT),MEM_COMMIT,PAGE_READWRITE)//在指定进程里面申请一个POINI结构大小的空间.

POINT pt

ListView_GetItemPosition(hDeskTop,1,lpvPt)//获取第一个图标锋郑让的坐标,存入lpvPt

ReadProcessMemory(hProcess,lpvPt,&pt,sizeof(POINT),NULL)

//lpvPt不是本进程里面的,不能使用,所以就要

利用ReadProcessMemory从指定进程给读出来

VirtualFreeEx(hProcess, lpvPt, 0, MEM_RELEASE)

释放申请的空间

CloseHandle(hProcess)//关闭句柄

最后得出的pt就是你要的哪个坐标,这个是求第一个图标的坐标

ListView_GetItemPosition(hDeskTop,1,lpvPt)

想改求丛梁其他的,把1换成你要的哪个就可以了

我还有个获取桌面所有图银局标名称的程序,要的话把邮箱留下<原理和实现过程全部有解释>

要确定坐标,首先要知道屏幕的坐标系有多大,也就是长宽是多少个像素。一个像素可以理解为一个点,一个屏幕能显示誉洞隐的最小的显示单位。在 *** 作系统上,我们可以通过查看屏幕分辨率来得知坐标系的大小。

以我当前电脑的分辨率1920x1080为例,坐标的原点在庆厅左上角,在编程上,程序界面的也是以左上角为原点。如:g_hwnd=CreateWindow(ClassName,"静态控件演示",iWs_OverlappedWindow,iCw_UsedDefault,0,600,600,iNull,iNull,hInstance,iNull),注意:我们可以放置控件和编辑的区域是扣除边框的区域,所以创建一个600x600的窗体,那么实际到可颤告放置控件和编辑的区域大概是580x555。

1、电脑登录微信账号。

2、陆余旁电脑登录微信账号毁拦后,按Alt+A进行截图。

3、按Alt+A后,进入截图页面,但是不要截图,把鼠标放到左上角POS就早橡为(0,0),POS为position缩写,位置的意思。

4、移动鼠标,POS也就会跟着变化,就可以知道鼠标当前位置的坐标了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12258124.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存