如何获得桌面的hwnd

visual 2000-03-10 11:37:00
我想做一个程序,可以获得桌面的hwnd(中文和英文98都适用),然后列出桌面的图标数量,同时将指定的图标(例如我的电脑的图标)画在一个对话框上。
其原理是什么?如您方便,请给出一段源码。谢!
...全文
586 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
visual 2000-03-14
  • 打赏
  • 举报
回复
iceberg:
因为我留的是263的mail,所以没有到21cn去。今天在21cn里看到了你的源码。已收到。谢谢!
visual 2000-03-13
  • 打赏
  • 举报
回复
欣喜之余。
先把分给大家。
希望各位不要介意我的给分权重。
visual 2000-03-13
  • 打赏
  • 举报
回复
lin:
Active TreeView、Delphi的源码已收到。我会慢慢研究。以后还会多多向您请教。
谢谢!
SoftDIY:
谢谢您提供的网址。
ZPoint:
可否详细说说。
SoftDIY 2000-03-12
  • 打赏
  • 举报
回复
iceberg,你给Visual发源码的时候可否CC:pcsoftdiy@yahoo.com,多谢了。
Lin,Sorry,敲成Liu了:)
SoftDIY 2000-03-12
  • 打赏
  • 举报
回复
Liu说的不错,用shell api可获得,其实不用get desktop的hwnd,www.codeguru.com的dialog版面有Shelltree的VC源码。
Lin 2000-03-12
  • 打赏
  • 举报
回复
其实,桌面的快捷方式都在一个子目录里,而这个子目录的位置可以用SHGetSpecialFolderLocation获得,原型定义如下,具体请参照MSDN:
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation(
HWND hwndOwner,
int nFolder,
LPITEMIDLIST *ppidl
);
另外,类似我的电脑,网上邻居...图标也可以用ShellAPI获得。

  另外,Active TreeView马上就发给你,另外有一个Delphi的源码(ShellTree,支持上下文菜单),希望对你有所帮助。
ZPoint 2000-03-12
  • 打赏
  • 举报
回复
在IE组件上调用DESKTOP
visual 2000-03-11
  • 打赏
  • 举报
回复
首先感谢二位。请二位将控件和源码发到 wg2000@263.net。
以前曾看到过一个程序,好像文件名是desktop.exe(当然不知道是不是最初的名字),它的功能就是在tray处插入一个图标,当点击右键时,弹出一个菜单,菜单上是桌面的所有图标(当然图标上都有一个小箭头),点击菜单中的某一项,就相当于双击桌面上的那个对应的图标。我不知道他的原理是不是上述那样。如果您认为不是上述那样,也请将我说的这个程序的原理指点一下,如果您认为原理正是您所认为的那样。那就再次感谢二位将控件和源码发给我。
iceberg 2000-03-11
  • 打赏
  • 举报
回复
获得桌面的窗口句柄还不够。如果你用spy++查看桌面,会发现它的窗口类名为SysListView32,实际上就是一个listview控件,不过它覆盖了整个桌面而已,它是Desktop窗口的子窗口。要读取它的图标信息可不容易,应为这些信息都保存在explorer的进程空间里,而windows是不允许一个进程直接读取另一个进程的数据的,所以你还得掌握打破进程边界的技术才行。 Jeffery Richer的《windows高级编程》(英文名为《Programmnig Applications for Microsoft Windows》中有一个读取桌面图标的范例程序,你可以看看,相信问题可以迎刃而解。具体的实现代码较为复杂,如果你没有买这本书的话,我可以把源码发给你。
Lin 2000-03-10
  • 打赏
  • 举报
回复
1、获得桌面的hWnd: HWND GetDesktopWindow(VOID),但并不能保证获得桌面的图标数量;
2、其实你最好用Shell API,有很多这方面的例子。我可以给你一个这样的ActiveX控件。

函数功能 在窗口列表中寻找与指定条件相符的第一个子窗口 。 该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。 参数; (1)hwndParent:要查找的子窗口所在的父窗口的句柄(如果设置了hwndParent,则表示从这个hwndParent指向的父窗口中搜索子窗口)。 如果hwndParent为 0 ,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。 Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口。 (2)hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。 (3)lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0。 (4)lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为 NULL,则为所有窗口全匹配。 返回值 Long,找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError 如果函数成功,返回值为具有指定类名和窗口名的窗口句柄。如果函数失败,返回值为NULL。 若想获得更多错误信息,请调用GetLastError函数。
《精通Visual C++实效编程280例》光盘源代码 精通Visual C++实效编程280例(附光盘)的目录介绍 内容介绍 作者介绍 目录介绍 商品目录: 返回商品页面 第1章 窗口   1.1 实例1:通过HWND获得CWnd指针   1.2 实例2:获得应用程序主窗口的指针   1.3 实例3:获得指定点的窗口   1.4 实例4:最大化和最小化窗口   1.5 实例5:关闭窗口   1.6 实例6:设置窗口的大小和位置   1.7 实例7:居中显示窗口   1.8 实例8:顶层显示窗口   1.9 实例9:设置窗口图标   1.10 实例10:获得和设置窗口的标题   1.11 实例11:显示或隐藏窗口的标题栏   1.12 实例12:改变窗口形状   1.13 实例13:设置窗口的透明区域   1.14 实例14:透明窗口   1.15 实例15:窗口闪烁   1.16 实例16:图片窗口   1.17 实例17:动画窗口   1.18 实例18:桌面窗口   1.19 实例19:最小化桌面所有窗口   1.20 实例20:获取任务栏窗口   1.21 实例21:显示或隐藏任务栏   1.22 实例22:枚举桌面所有顶层窗口  第2章 菜单和光标   2.1 实例23:动态添加和删除菜单项   2.2 实例24:在系统菜单中添加和删除菜单项   2.3 实例25:禁用关闭按钮   2.4 实例26:启用和禁用菜单项   2.5 实例27:设置菜单项的检查状态   2.6 实例28:快捷菜单   2.7 实例29:获取光标的坐标   2.8 实例30:限制光标的移动范围   2.9 实例31:自定义光标   2.10 实例32:等待光标  第3章 控制栏   3.1 实例33:创建工具栏   3.2 实例34:设置工具栏标题   3.3 实例35:停靠工具栏   3.4 实例36:设置工具栏位图   3.5 实例37:为工具栏按钮添加文本标签   3.6 实例38:为工具栏按钮添加下拉箭头   3.7 实例39:为工具栏按钮设置热点图像   3.8 实例40:启用或禁用工具栏的工具提示   3.9 实例41:在工具栏中添加组合框   3.10 实例42:创建状态栏   3.11 实例43:在状态栏中添加进度条   3.12 实例44:显示或隐藏工具栏和状态栏   3.13 实例45:使用组合栏  第4章 对话框  第5章 框架和文档视图  第6章 通用控件  第7章 GDI  第8章 文件  第9章 打印  第10章 多线程  第11章 网络  第12章 ADO数据库  第13章 动态链接库  第14章 系统  第15章 设备管理  第16章 数据类型及转换

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧