win7下获取资源管理器中鼠标选中文件路径
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下获取资源管理器中鼠标选中文件路径相关推荐
- 在 Visual Studio 的解决方案资源管理器中隐藏一些文件
项目文件中有一些属性几乎是专门为 IDE 而准备的,不过考虑到 .NET 生态的开发者多数都使用 Visual Studio,所以基本上也只有 Visual Studio 对这些特性支持的最全面.(才 ...
- Windows 10 删除资源管理器中7个文件夹
Windows 10 安装完成之后 ,在资源管理器中会存在 7 个文件夹,他们分别是:图片.视频.下载.音乐.桌面.文档.3D对象. 我们可以通过修改注册表的方式,隐藏这7个文件夹.相关注册表内容如下 ...
- 计算机网络的视频资源管理器,如何在资源管理器中显示视频文件内容的缩略图 – 手机爱问...
2009-09-05 但在开始-程序中能找到视频设备.就是不能在资源管理器中显示. 你安装一下驱动试试如果是无驱的,建议修复一下系统,如果还不行,建议安装驱动.1.开机按F8不动到高级选项出现在松手, ...
- 解决方案资源管理器中没有头文件源文件
转自:http://blog.csdn.net/wsj998689aa/article/details/40051287 我们操作VS的时候,正常情况下,解决方案窗口中,项目内文件的布局如下: 可是, ...
- “解决方案资源管理器”中不能自动选择正在编辑的文档
本来正在编辑的文档应该在"解决方案资源管理器"中自动选中的,但是我的VS2005机器好像没有这个功能,后来发现 "工具->选贤"里边的"项目和解 ...
- 如何在Windows资源管理器中自定义文件夹背景和图标
We've covered a lot of Windows tweaks over the years, and today we're going to show you how to custo ...
- Win7下如何在windows资源管理器中打开FTP
大家在使用网络的过程中,往往会登陆一些FTP站点,通过这些站点来下载一些软件,以前在IE6中,打开FTP后,就会直接看见文件夹,就如同打开本地硬盘一样,这样很直观也很容易操作.但是在IE8(家庭网络) ...
- 调整Win7资源管理器中导航栏和计算机的位置
原文:http://blog.163.com/roc_sp/blog/static/39012041201141111280971/ 在默认情况下,Win7资源管理器中的计算机是排在库下面的,本文的目 ...
- [转]在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录...
[转]在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录 http://www.cnblogs.com/skywind/archive/2009/05/22/14 ...
最新文章
- Netty源码解析1-Buffer
- 以下输出结果为16的python_作业 -- 几道简单的Python题
- zz STL 优先队列
- CGGeometry基础
- 如何使用Google Analytics(分析)设置和跟踪YouTube频道的效果
- 深搜DFS\广搜BFS 图初步入门
- JS 事件绑定的几种方式 小笔记
- STM32工作笔记0083---UCOSIII中断和时间管理
- word如何设置上标形式_如何在word里设置删除线、添加着重号、上标和下标?戳这里...
- android studio下载sdk的方法,Android Studio修改Android SDK路径的几种方法
- 在matlab上利用fft进行信号频谱分析_全面分析:频谱分析仪原理技术(收藏必备)...
- 静态链接库和动态链接库
- Qt系列文章之 mousePressEvent
- 新人爬虫学习_爬取腾讯招聘信息
- 全球 Top 1000计算机科学家公布:中国53位学者上榜!
- spring boot大学体育赛事管理系统 毕业设计-附源码180923
- UE4贴图自适应屏幕大小
- 通过JDBC-ODBC连接SQL Server数据库
- 继FCoin后的下一轮浪潮 —— 去中心化交易所的逆风翻盘
- 【Redis | 黑马点评 + 思维导图】分布式锁