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

来源:百度知道 编辑:UC知道 时间:2024/06/30 17:49:54
应用Windows API来完成这个工作.

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);
释放申请的空间