关于读取Windows桌面的图标名字和位置,网上能找到很多现成的程序
例如
http://stackoverflow.com/questions/5369155/getting-text-from-syslistview32-in-64bit
http://bbs.csdn.net/topics/390624481?page=1
还能找到很多,但是程序都有一个问题,就是在64位win7下,程序编译成32位模式,无法获取。(32位编译32位运行,或者64位编译64位运行都没问题。但是,现在的软件应该都是这个模式,因为要支持xp,又想只出一个版本,只出一个32位版本的方法性价比最高)
这个问题的关键在于跨32位和64位进程操作的时候,比如32位进程读写64位进程(这是最常见的情况),传递的数据结构需要适应64位进程。
回到题目的问题
读取Windows桌面图标的原理很简单
核心就是找到桌面句柄,通过SendMessage(LVM_GETITEMTEXT)获得文字
LVITEM结构定义
typedef struct tagLVITEMW
{
UINT mask;
int iItem;
int iSubItem;
UINT state;
UINT stateMask;
LPWSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
int iIndent;
#endif
#if (_WIN32_WINNT >= 0x0501)
int iGroupI