You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:13:21