MFC取得桌面图标信息,名称与坐标

转载 2012年03月22日 09:32:33

桌面信息是跟explorer.exe息息相关的,我们感兴趣的信息便可以在里面找到。

获取它的句柄后,我们可以发送一系列的消息,将我们所感兴趣的信息列举下来,一系列的初始化代码:

if(((hWnd = FindWindowEx(NULL, NULL, “Progman”, NULL)) == NULL) ||
((hWnd = FindWindowEx(hWnd, NULL, “SHELLDLL_DefView”, NULL)) == NULL) ||
((hWnd = FindWindowEx(hWnd, NULL, “SysListView32″, NULL)) == NULL))
{
MessageBox(“Could not get desktop window.”);
}

这段代码不难理解,这便是要寻找桌面窗口的句柄。

接下来代码:

GetWindowThreadProcessId(hWnd, &dwPID);
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
pData = VirtualAllocEx(hProcess, NULL, ALLOC_SIZE, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
pString = VirtualAllocEx(hProcess, NULL, ALLOC_SIZE, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
pPt = VirtualAllocEx(hProcess, NULL, ALLOC_SIZE, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);

接着向初始化好的内存中写入:

WriteProcessMemory(hProcess, pData, &lvi, sizeof(LVITEM), &BytesWritten);

接下来便是发送消息吧。

得到桌面图标个数:

::SendMessage(hWnd, LVM_GETITEMCOUNT, (WPARAM)0, (LPARAM)0);

返回值便是一个int类型值。

获取相应图标名称:

::SendMessage(hWnd, LVM_GETITEMTEXT, (WPARAM)count, (LPARAM)pData);
ReadProcessMemory(hProcess, pString, szText, ALLOC_SIZE, &BytesRead);

count为相应第几个图标,szText中则为存贮的信息。

获取相应图标坐标:

POINT pt;
::SendMessage(hWnd,LVM_GETITEMPOSITION,(WPARAM)count,(LPARAM)pPt);
fResult = ReadProcessMemory(hProcess, pPt, &pt, sizeof(POINT), &BytesRead);

pt即为所得。

效果如图:


原文链接:http://www.limou.net/?p=780


C#获得桌面图标名称和位置

using System.Runtime.InteropServices; public const uint LVM_FIRST = 0x1000; public const uint L...

c# 获取桌面图标的位置和名称

在外国一个博客中看到的  转载过来  翻译了一下  并封装在一个类中   using System; namespace System.Windows.Forms { /// ...

精品代码收藏,AU3规划桌面图标坐标。

#NoTrayIcon #AutoIt3Wrapper_icon=D:\autoit3\Aut2Exe\Icons\FOLDER.ico #AutoIt3Wrapper_Compression=4...
  • nmgwddj
  • nmgwddj
  • 2011年11月28日 06:32
  • 1172

VS2013在Window下显示问题(解决MFC.exe桌面图标显示异常问题)

一直纠结于为什么代码也修改了MFC原来的图片,为什么一直还是显示MFC图标,搜索了很久,偶然找到一个方法,使用WIN7时,MFC工程生成的应用程序图标,如果更改为自定义的ICON图标之后可能在桌面上显...

Win7系统电脑将鼠标停留在桌面图标上不出现提示信息的原因及解决方法图文教程

一般情况下,在Win7系统停留在桌面图标上会出现提示信息,可是有时候将鼠标停留在桌面图标上不出现提示信息,怎么回事呢?这种情况怎么办呢?下面脚本之家的小编就带来Win7系统电脑将鼠标停留在桌面图标上不...

VC MFC 桌面图标管理软件

  • 2011年04月26日 22:41
  • 302KB
  • 下载

Android 桌面图标右上角显示未读消息数字

背景:        在Android原生系统中,众所周知不支持桌面图标显示未读消息提醒的数字,虽然第三方控件BadgeView可以实现应用内的数字提醒。但对于系统的图标,特别是app的logo图标...

桌面图标分类软件Fences的缺点

可能吧在我生活中不能没有的10个软件中写道了Fences, 体验试用后发现些小问题. 在小众的留言里面也看到了很多网友发出的bug, 下面列出了部分解决方案. 特别说明: 测试环境为Windows...

wince隐藏任务栏与去除桌面图标 快捷方式

有的时候在系统启动之后,不希望看到wince的桌面和任务栏,也就是不希望用户看到wince系统界面。这就要隐藏任务栏,去除桌面的快捷方式,以及输出文本。        如,现在桌面的情况如图: ...

如何在Ubuntu上添加桌面图标?

本文的pdf版本可以在https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B92-FAjNvVzGZmVlMDZlOT...
  • gqqnb
  • gqqnb
  • 2011年07月21日 20:35
  • 17819
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC取得桌面图标信息,名称与坐标
举报原因:
原因补充:

(最多只允许输入30个字)