要想获取桌面上图标的信息,就需要FindWindow这个API函数,获取到桌面的句柄:

hwnd= (HWND)::FindWindow("Progman", "Program Manager"); //获取系统桌面的句柄
hwnd= (HWND)::FindWindowEx(hwnd, NULL, "shelldll_defview", NULL);
desktophwnd = (HWND)::FindWindowEx(hwnd, NULL, "syslistview32", "FolderView");

然后查询桌面图标的数量:

int count = (int)SendMessage(desktophwnd, LVM_GETITEMCOUNT, (WPARAM)0, (LPARAM)0);

接下来,就是获取桌面进程id,根据id获取进程句柄。然后就是遍历获取桌面图标信息的输出:

        LVITEMlvi, *_lvi;char item[512];char *_item; unsigned long pid;HANDLE process;GetWindowThreadProcessId(desktophwnd, &pid);process = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION, FALSE, pid);_lvi = (LVITEM*)VirtualAllocEx(process, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE);_item = (char*)VirtualAllocEx(process, NULL, 512, MEM_COMMIT, PAGE_READWRITE);//lvi.mask = LVIF_TEXT;lvi.cchTextMax = 512;for (int i = 0; i < count; i++) {lvi.pszText = _item;lvi.iSubItem = 0;WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL);SendMessage(listview, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_lvi);ReadProcessMemory(process, _item, item, 512, NULL);ReadProcessMemory(process, _rc, &rc, sizeof(rc), NULL);cout << item ;cout << "  ";cout << endl;}VirtualFreeEx(process, _lvi, 0, MEM_RELEASE);VirtualFreeEx(process, _item, 0, MEM_RELEASE);

做到这一步了,才发现获取的信息为空。然后就是查资料,查了好久才知道是电脑32位和64位系统的问题。。需要把LVITEM结构体修改一下:

typedef struct tagLVITEM64A
{UINT mask;int iItem;int iSubItem;UINT state;UINT stateMask;INT64 pszText;int cchTextMax;int iImage;LPARAM lParam;
#if (_WIN32_IE >= 0x0300)int iIndent;
#endif
#if (_WIN32_WINNT >= 0x501)int iGroupId;UINT cColumns; // tile view columnsPUINT puColumns;
#endif
} LVITEM64A, *LPLVITEM64A;

然后就获取到桌面的图标信息,如下图:

获取电脑桌面上图标的信息相关推荐

  1. python获取原图GPS位置信息,轻松得到你的活动轨迹

    点击上方"AI搞事情"关注我们 一.图像EXIF信息 介绍 EXIF(Exchangeable image file format,可交换图像文件格式)是专门为数码相机的照片设定的 ...

  2. 微信公众号开发:获取openId和用户信息(完整版)

    注:之前总结怎么进行本地公众号开发调试,时间一长忘记开发配置却忘了,所以这里记录一下公众号开发配置,方便快速上手. 目录 开发前服务器配置 网页授权获取用户基本信息 snsapi_base snsap ...

  3. Python获取原图GPS位置信息,轻松得到你的活动轨迹!

    一.图像EXIF信息 介绍 EXIF(Exchangeable image file format,可交换图像文件格式)是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,如拍摄时间. ...

  4. Java获取照片的Exif信息,并解析GPS

    Java获取照片的Exif信息,并解析GPS 1. 效果图 2. 什么是Exif? 3. 源代码 参考 ❤️ 这篇博客将介绍什么EXIF,以及如何用Java语言读取Exif信息,并转换经纬度为位置信息 ...

  5. 根据经纬度获取用户当前位置信息

    根据上篇文章获取的经纬度获取用户当前的位置信息 //获取用户所在位置信息ADDRESS func getUserAddress() { let latitude : CLLocationDegrees ...

  6. 获取Java系统相关信息

    1 package com.test; 2 3 import java.util.Properties; 4 import java.util.Map.Entry; 5 6 import org.ju ...

  7. R语言sys方法:sys.info函数获取系统和用户信息、sys.localeConv函数获取当前区域中的数字和货币表示的详细信息、sys.setFileTime函数更改文件的时间

    R语言sys方法:sys.info函数获取系统和用户信息.sys.localeConv函数获取当前区域中的数字和货币表示的详细信息.sys.setFileTime函数更改文件的时间 目录

  8. R语言sys方法:sys.getpid函数获取R会话的进程ID、sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件、sys.info函数获取系统和用户信息

    R语言sys方法:sys.getpid函数获取R会话的进程ID.sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件.sys.info函数获取系统和用户信息 目录

  9. 如何获取数据库中标的所有字段和数据类型?

    如何获取数据库中标的所有字段和数据类型? 目录 如何获取数据库中标的所有字段和数据类型? #获取表中所有字段

最新文章

  1. 开发者:Serverless 从懵比到实战
  2. @ConditionalOnProperty 详解
  3. java多层catch语句_Java异常之catch语句块
  4. opencore0.6.3_大杨随笔2020.11.3
  5. stm32 GPIO简单介绍及初始化配置(库函数)
  6. HTTP中response响应数据获取
  7. 熟水凉白开,瓶装水新风口?
  8. 学生成绩管理系统设计报告python_python实现简易版学生成绩管理系统
  9. 在java中写出html代码,在java里写html代码
  10. c++可视化界面_新基建的福音:智慧楼宇可视化监控系统引领智能化新时代
  11. JEECG Framework 3.4.1 beta 版本发布
  12. php class variable,PHP中的變量類擴展 - 是否可能?
  13. Lua包管理工具Luarocks
  14. Easy Touch 5 简单使用
  15. MacOS Mojava密码最小4位,这很讨厌!
  16. java PDF模板生成并导出(文字、表格、图片)
  17. 密码学系列之:blowfish对称密钥分组算法
  18. 深圳房价链家数据分析
  19. DiscuzNT 交易插件设计之商品添加,编辑和删除(CUD)
  20. 共享姨妈巾出来了成为共享家族中的热门产品

热门文章

  1. 预测:2019年最值得关注的程序语言是什么?
  2. 参数估计(Parameter Estimation)
  3. 数据分析/算法/建模/产品实习面经(字节跳动、爱奇艺、平安科技、石墨文档、欧克云链、水滴、茄子快传……)
  4. html标签lang=“en“解读
  5. Star CCM+ 案例 - 旋风分离器 (cyclone separator)-3 模拟设置
  6. Java牛客网社区项目——知识点面试题
  7. (1146, Table 'django.django_session' doesn't exist)
  8. 记一次小程序接口本地可访问,真机不能访问的问题
  9. 泰克示波器查眼图_如何用泰克示波器测量眼图
  10. 2017.08.20【NOIP提高组】模拟赛B组 【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)