如何用C语言结合WinAPI移动Windows桌面图标?
桌面图标位置修改代码失效问题排查
我参考了两个Stack Overflow线程:
- How to programmatically move icons' location from Windows Desktop?
- How can I programmatically manipulate Windows desktop icon locations?
根据这些线程的提示,桌面本质是ListView控件,我尝试直接向桌面HWND发送LVM_SETITEMPOSITION消息,代码如下:
#include <windows.h> #include <stdio.h> #include <CommCtrl.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND MYHWND = NULL; MYHWND = GetDesktopWindow(); SendMessage(MYHWND, LVM_SETITEMPOSITION, 2, MAKELPARAM(100, 100)); return 1; }
但这段代码并未生效。于是我又尝试将相关C++代码转为C语言版本,代码如下:
#include <windows.h> #include <stdio.h> #include <CommCtrl.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND desktopHandle = NULL; desktopHandle = FindWindowEx(NULL, NULL, "Progman", "Program Manager"); desktopHandle = FindWindowEx(desktopHandle, NULL, "SHELLDLL_DefView", NULL); desktopHandle = FindWindowEx(desktopHandle, NULL, "SysListView32", "FolderView"); SendMessage(desktopHandle, LVM_SETITEMPOSITION, 2, MAKELPARAM(500, 500)); return 1; }
但这段代码仍然无法正常工作,希望有人能帮忙排查问题所在,谢谢!
内容的提问来源于stack exchange,提问作者bugger
相关产品推荐
相关产品推荐

