IUIAutomation

IUIAutomationElement

GetCurrentPropertyValue

http://msdn.microsoft.com/en-us/library/ee671212(v=VS.85).aspx

取桌面图标位置.   2k,   98   方法不同.

//   for   NT   based   /

/*   取桌面   ListView   的句柄   */
                    HWND   hDeskTop;
                    hDeskTop   =   FindWindow( "progman ",   NULL);
                    hDeskTop   =   FindWindowEx(hDeskTop,   0,   "shelldll_defview ",   NULL);
                    hDeskTop   =   FindWindowEx(hDeskTop,   0,   "syslistview32 ",   NULL);

/*   取   explorer.exe   句柄.   注意   OpenProcess   的参数   */
                    DWORD   dwProcessId;
                    GetWindowThreadProcessId(hDeskTop,   &dwProcessId);
                    HANDLE   hProcess   =   OpenProcess(PROCESS_VM_READ   |   PROCESS_VM_OPERATION,   FALSE,   dw
            ProcessId);

/*   在   explorer.exe   空间内分配内存   */
                    PVOID   pv   =   VirtualAllocEx(hProcess,   NULL,   sizeof(POINT),   MEM_COMMIT,   PAGE_READW
            RITE);

/*   给桌面   ListView   窗口发一   LVM_GETITEMPOSITION   取   "我的电脑 "   坐标   */
                    ListView_GetItemPosition(hDeskTop,   1,   pv);

/*   把由   LVM_GETITEMPOSITION   获得的坐标数据复制到   pt   结构   */
                    POINT   pt;
                    ReadProcessMemory(hProcess,   pv,   &pt,   sizeof(POINT),   NULL);

/*   释放内存,   句柄   */
                    VirtualFreeEx(hProcess,   pv,   0,   MEM_RELEASE);
                    CloseHandle(hProcess);

//   for   9x   /

/*   取桌面   ListView   的句柄   */
                    HWND   hDeskTop;
                    hDeskTop   =   FindWindow( "progman ",   NULL);
                    hDeskTop   =   FindWindowEx(hDeskTop,   0,   "shelldll_defview ",   NULL);
                    hDeskTop   =   FindWindowEx(hDeskTop,   0,   "syslistview32 ",   NULL);

/*   分配一共享内存   */
                    HANDLE   hmm   =   CreateFileMapping(INVALID_HANDLE_VALUE,   NULL,   PAGE_READWRITE,   0,   s
            izeof(POINT),   NULL);
                    POINT   *   ppt;
                    ppt   =   (POINT   *)MapViewOfFile(hmm,   FILE_MAP_ALL_ACCESS,   0,   0,   0);

/*   给桌面   ListView   窗口发一   LVM_GETITEMPOSITION   取   "我的电脑 "   坐标   */
                    ListView_GetItemPosition(   hDeskTop,   0,   ppt);

/*   释放内存.   对   ppt   的操作要在这之前做.   */
                    UnmapViewOfFile(ppt);
                    CloseHandle(hmm);

不同版本的   EXPLORER   中,   "我的电脑 "   可能有不同的   index,   就是传给   ListView_GetItem
            Position   的第   2   个参数.   2000   下是   1,   98   下似乎是   0.

网友对该文章的评论  
                          网友:   匿名   发表于:   2003-9-27   18:22:52

you   don 't   need     show   off   here    
                     
                          网友:   sd   发表于:   2003-6-8   17:31:22

wwwwwwww    
                     
                          网友:   匿名   发表于:   2003-2-28   16:49:52

获取桌面图标位置.   2k,   98   方法不同.

//   for   NT   based   /

/*   取桌面   ListView   的句柄   */
                                HWND   hDeskTop;
                                hDeskTop   =   FindWindow( "progman ",   NULL);
                                hDeskTop   =   FindWindowEx(hDeskTop,   0,   "shelldll_defview ",   NULL);
                                hDeskTop   =   FindWindowEx(hDeskTop,   0,   "syslistview32 ",   NULL);

/*   取   explorer.exe   句柄.   注意   OpenProcess   的参数   */
                                DWORD   dwProcessId;
                                GetWindowThreadProcessId(hDeskTop,   &dwProcessId);
                                HANDLE   hProcess   =   OpenProcess(PROCESS_VM_READ   |   PROCESS_VM_OPERATION,   FALSE,   dw
                        ProcessId);

/*   在   explorer.exe   空间内分配内存   */
                                PVOID   pv   =   VirtualAllocEx(hProcess,   NULL,   sizeof(POINT),   MEM_COMMIT,   PAGE_READW
                        RITE);

/*   给桌面   ListView   窗口发一   LVM_GETITEMPOSITION   取   "我的电脑 "   坐标   */
                                ListView_GetItemPosition(hDeskTop,   1,   pv);

/*   把由   LVM_GETITEMPOSITION   获得的坐标数据复制到   pt   结构   */
                                POINT   pt;
                                ReadProcessMemory(hProcess,   pv,   &pt,   sizeof(POINT),   NULL);

/*   释放内存,   句柄   */
                                VirtualFreeEx(hProcess,   pv,   0,   MEM_RELEASE);
                                CloseHandle(hProcess);

//   for   9x   /

/*   取桌面   ListView   的句柄   */
                                HWND   hDeskTop;
                                hDeskTop   =   FindWindow( "progman ",   NULL);
                                hDeskTop   =   FindWindowEx(hDeskTop,   0,   "shelldll_defview ",   NULL);
                                hDeskTop   =   FindWindowEx(hDeskTop,   0,   "syslistview32 ",   NULL);

/*   分配一共享内存   */
                                HANDLE   hmm   =   CreateFileMapping(INVALID_HANDLE_VALUE,   NULL,   PAGE_READWRITE,   0,   s
                        izeof(POINT),   NULL);
                                POINT   *   ppt;
                                ppt   =   (POINT   *)MapViewOfFile(hmm,   FILE_MAP_ALL_ACCESS,   0,   0,   0);

/*   给桌面   ListView   窗口发一   LVM_GETITEMPOSITION   取   "    
                     
                          网友:   Wormie4evr(wormie4evr@peoplemail.com.cn)   发表于:   2003-2-13   20:58:52

barking:
                        不好意思,现在才看到。它们都是是桌面进程的窗口的类名,依次为父子窗口。
                        这些资料用Spy++软件获取很方便。    
                     
                          网友:   daixi   发表于:   2003-1-27   11:31:29

ListView_GetItemPosition,可能是少了頭文件commctrl.h    
                     
                          网友:   barking(barking_gentleman@hotmail.com)   发表于:   2003-1-26   9:48:53

ListView_GetItemPosition在编译时有错误提示是这个函数没被声明
                        应如何改?    
                     
                          网友:   barking(barking_gentleman@hotmail.com)   发表于:   2003-1-20   8:44:58

能不能详细的说明一下 "progman ",   "shelldll_defview ",     "syslistview32 ",   各是什么意思?
                        在哪里能找到关于这些东西的资料
                        谢谢

-----   Original   Message   -----  
From:   <li-jie_wang@agilent.com>
To:   <superaide@163.com>
Sent:   Friday,   October   28,   2005   12:41   PM
Subject:   hehe

Windows   高级编程指南

何编程实现,控制桌面图标是否自动排列,最好用API;
就是说我想控制     桌面点右键-> 排列图标-> 自动排列     这一项是否被选中
int   GetSystemMetrics(
    int   nIndex       //   system   metric   or   configuration   setting
);

参数添SM_ARRANGE,得到是否自动排列

POINT   Point;
int   i,n;
hWnd=FindWindow( "Progman ", "Program   Manager ");
hWnd=GetWindow(hWnd,GW_CHILD);
hWnd=GetWindow(hWnd,GW_CHILD);
n=ListView_GetItemCount(hWnd);
for(i=0;i <n;i++)
        ListView_GetItemPosition(hWnd,i,&Point);     //此步出错,因为是不同进程

我已经替你问了高人,但他说只在NT下才能用其它方法解决。呵呵,你去看看http://www.csdn.net/expert/topic/217/217263.shtm吧,我也没办法了,原来以为可以的,解决了记得告诉我一声。

能够指定任何一个桌面上的图标位置。??

将第一个项移到(500,   500)
HWND   hPM   =   ::FindWindow(NULL,   "Program   Manager ");
HWND   hShell   =   ::FindWindowEx(hPM,   NULL,   "SHELLDLL_DefView ",   NULL);
HWND   hSLV   =   ::FindWindowEx(hShell,   NULL,   "SysListView32 ",   NULL);
ListView_SetItemPosition(hSLV,   0,   500,   500);

其它要用到的消息查下msdn,
LVM_GET打头

HWND   hWndLv=GetFirstChild(GetFirstChild(FindWindow( "ProgMan ",NULL)))
hWndLv是左面ListView的句柄
然后用GetItemRect(hWndLv)得到每个图标的位置
SetItemRect()设置每个图标的位置
chi\

桌面是一个sysList32的通用控件

win7下获取资源管理器中鼠标选中文件路径相关推荐

  1. 在 Visual Studio 的解决方案资源管理器中隐藏一些文件

    项目文件中有一些属性几乎是专门为 IDE 而准备的,不过考虑到 .NET 生态的开发者多数都使用 Visual Studio,所以基本上也只有 Visual Studio 对这些特性支持的最全面.(才 ...

  2. Windows 10 删除资源管理器中7个文件夹

    Windows 10 安装完成之后 ,在资源管理器中会存在 7 个文件夹,他们分别是:图片.视频.下载.音乐.桌面.文档.3D对象. 我们可以通过修改注册表的方式,隐藏这7个文件夹.相关注册表内容如下 ...

  3. 计算机网络的视频资源管理器,如何在资源管理器中显示视频文件内容的缩略图 – 手机爱问...

    2009-09-05 但在开始-程序中能找到视频设备.就是不能在资源管理器中显示. 你安装一下驱动试试如果是无驱的,建议修复一下系统,如果还不行,建议安装驱动.1.开机按F8不动到高级选项出现在松手, ...

  4. 解决方案资源管理器中没有头文件源文件

    转自:http://blog.csdn.net/wsj998689aa/article/details/40051287 我们操作VS的时候,正常情况下,解决方案窗口中,项目内文件的布局如下: 可是, ...

  5. “解决方案资源管理器”中不能自动选择正在编辑的文档

    本来正在编辑的文档应该在"解决方案资源管理器"中自动选中的,但是我的VS2005机器好像没有这个功能,后来发现 "工具->选贤"里边的"项目和解 ...

  6. 如何在Windows资源管理器中自定义文件夹背景和图标

    We've covered a lot of Windows tweaks over the years, and today we're going to show you how to custo ...

  7. Win7下如何在windows资源管理器中打开FTP

    大家在使用网络的过程中,往往会登陆一些FTP站点,通过这些站点来下载一些软件,以前在IE6中,打开FTP后,就会直接看见文件夹,就如同打开本地硬盘一样,这样很直观也很容易操作.但是在IE8(家庭网络) ...

  8. 调整Win7资源管理器中导航栏和计算机的位置

    原文:http://blog.163.com/roc_sp/blog/static/39012041201141111280971/ 在默认情况下,Win7资源管理器中的计算机是排在库下面的,本文的目 ...

  9. [转]在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录...

    [转]在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录 http://www.cnblogs.com/skywind/archive/2009/05/22/14 ...

最新文章

  1. Netty源码解析1-Buffer
  2. 以下输出结果为16的python_作业 -- 几道简单的Python题
  3. zz STL 优先队列
  4. CGGeometry基础
  5. 如何使用Google Analytics(分析)设置和跟踪YouTube频道的效果
  6. 深搜DFS\广搜BFS 图初步入门
  7. JS 事件绑定的几种方式 小笔记
  8. STM32工作笔记0083---UCOSIII中断和时间管理
  9. word如何设置上标形式_如何在word里设置删除线、添加着重号、上标和下标?戳这里...
  10. android studio下载sdk的方法,Android Studio修改Android SDK路径的几种方法
  11. 在matlab上利用fft进行信号频谱分析_全面分析:频谱分析仪原理技术(收藏必备)...
  12. 静态链接库和动态链接库
  13. Qt系列文章之 mousePressEvent
  14. 新人爬虫学习_爬取腾讯招聘信息
  15. 全球 Top 1000计算机科学家公布:中国53位学者上榜!
  16. spring boot大学体育赛事管理系统 毕业设计-附源码180923
  17. UE4贴图自适应屏幕大小
  18. 通过JDBC-ODBC连接SQL Server数据库
  19. 继FCoin后的下一轮浪潮 —— 去中心化交易所的逆风翻盘
  20. 【Redis | 黑马点评 + 思维导图】分布式锁

热门文章

  1. 刺向巴勒斯坦的致命毒针——双尾蝎 APT 组织的攻击活动分析与总结
  2. 脑袋空空时,浅浅的摸一下鱼
  3. jupyter打开后没有自动弹出浏览器的解决方法
  4. Flutter 重构去哪儿QTalk
  5. PC电脑微信,能刷朋友圈了,附安装地址
  6. bar_chart_race
  7. Vue进阶(幺陆叁):vue项目启动后自动打开页面并设置默认浏览器
  8. #98-【推理】接金币
  9. 交叉编译概念、配置方法以及使用
  10. php oauth2 认证,laravel之passport oauth2认证之授权码详解