社区
进程/线程/DLL
帖子详情
已知对话框窗体句柄,怎样判断它是自定义对话框窗体还是属于系统对话框窗体??
gaoxiaowei
2012-03-15 03:37:25
如题已知窗体句柄,怎样判断它是自定义对话框窗体还是属于系统对话框??
...全文
194
18
打赏
收藏
已知对话框窗体句柄,怎样判断它是自定义对话框窗体还是属于系统对话框窗体??
如题已知窗体句柄,怎样判断它是自定义对话框窗体还是属于系统对话框??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gaoxiaowei
2012-03-15
打赏
举报
回复
[Quote=引用 15 楼 gfm688 的回复:]
CFileDialog 就是对 GetOpenFileName / GetSaveFileName 的封装,使用Comdlg32.dll
还有 目录选择对话框是SHBrowseForFolder,使用Shell32.dll
[/Quote]
ok了,其实我可以判断ModuleName不属于我的进程名字即可,非常感谢,接分吧 哈哈
zero_226
2012-03-15
打赏
举报
回复
可不可以读取窗口的属性,看看这些属性里有没有自定义的属性?
Lactoferrin
2012-03-15
打赏
举报
回复
看类名
gfm688
2012-03-15
打赏
举报
回复
CFileDialog 就是对 GetOpenFileName / GetSaveFileName 的封装,使用Comdlg32.dll
还有 目录选择对话框是SHBrowseForFolder,使用Shell32.dll
gaoxiaowei
2012-03-15
打赏
举报
回复
[Quote=引用 12 楼 gfm688 的回复:]
就是判断窗口是哪个模块的了
如果是MessageBox, 则GetWindowModuleFileName第二个参数返回User32.dll的的路径
[/Quote]
这个对messagebox 可以做过滤,对CFileDialog没有过滤掉
gaoxiaowei
2012-03-15
打赏
举报
回复
[Quote=引用 12 楼 gfm688 的回复:]
就是判断窗口是哪个模块的了
如果是MessageBox, 则GetWindowModuleFileName第二个参数返回User32.dll的的路径
[/Quote]
我明白了,我试试看。
gfm688
2012-03-15
打赏
举报
回复
就是判断窗口是哪个模块的了
如果是MessageBox, 则GetWindowModuleFileName第二个参数返回User32.dll的的路径
gfm688
2012-03-15
打赏
举报
回复
试试 GetWindowModuleFileName
gaoxiaowei
2012-03-15
打赏
举报
回复
高手支招啊
gaoxiaowei
2012-03-15
打赏
举报
回复
我把代码贴一下:
LRESULT CALLBACK CSkinXImpl::HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
CWPSTRUCT cwps;
if( (nCode == HC_ACTION) && !::IsBadReadPtr( (LPVOID)lParam, sizeof(CWPSTRUCT)) )
{
CWPSTRUCT * pCwps = reinterpret_cast<CWPSTRUCT*>( lParam );
CopyMemory( &cwps, (LPVOID)lParam, sizeof(CWPSTRUCT) );
switch(cwps.message)
{
case WM_CREATE:
{
TCHAR szClass[MAX_PATH];
memset( szClass, 0, sizeof( szClass ) );
GetClassName(cwps.hwnd, szClass, MAX_PATH);
//这个时候想过滤掉系统对话框,不做换肤处理
// skin
CWidgetHookBase* pWidget = NULL;
pWidget = CWidgetFactory::Instance()->CreateWidget(szClass);
if (pWidget) pWidget->Install(cwps.hwnd);
break;
}
default:
break;
}
}
return CallNextHookEx((HHOOK)CSkinXImpl::m_hHook, nCode, wParam, lParam);
}
gaoxiaowei
2012-03-15
打赏
举报
回复
[Quote=引用 7 楼 gfm688 的回复:]
不好的意思,我理解错楼主的意思了,刚刚想到系统对话框是指MessageBox那些
[/Quote]
没关系,感谢你的回答。
gfm688
2012-03-15
打赏
举报
回复
不好的意思,我理解错楼主的意思了,刚刚想到系统对话框是指MessageBox那些
gaoxiaowei
2012-03-15
打赏
举报
回复
sorry,补充一下:现在是在1个进程里面,判断对话框窗体 是自己设计的窗体,还是系统通用的窗体。
通用窗体如:CFileDialog 、Messagebox弹出的窗体
孤魂游梦
2012-03-15
打赏
举报
回复
[Quote=引用 4 楼 gaoxiaowei 的回复:]
引用 2 楼 gfm688 的回复:
GetWindowThreadProcessId
OpenProcess
EnumProcessModules
GetModuleFileNameEx
判断窗体对应的进程
这个怎么判断??
[/Quote]
看进程拥有者
gaoxiaowei
2012-03-15
打赏
举报
回复
[Quote=引用 2 楼 gfm688 的回复:]
GetWindowThreadProcessId
OpenProcess
EnumProcessModules
GetModuleFileNameEx
判断窗体对应的进程
[/Quote]
这个怎么判断??
gaoxiaowei
2012-03-15
打赏
举报
回复
我现在通过LONG nStyle=GetWindowLong(hWnd,GWL_STYLE);获取到了窗体的类型,但是现在还没找到区分的方法(Spy++对比了一些style),不知道还有什么办法来解决?
gfm688
2012-03-15
打赏
举报
回复
GetWindowThreadProcessId
OpenProcess
EnumProcessModules
GetModuleFileNameEx
判断窗体对应的进程
罗平
2012-03-15
打赏
举报
回复
应该不能区分吧?这个句柄是没有任何分别的。
根据
窗体
句柄
传值.rar
窗体
句柄
是Windows
系统
中标识一个窗口的唯一数值,它代表了一个窗口对象。在VB中,我们可以使用API函数来获取或操作这个
句柄
。 首先,我们需要了解几个关键的API函数: 1. **FindWindow**: 这个函数用于查找具有...
c#
已知
窗口
句柄
获取窗口标题的方法
在C#编程环境中,通过
已知
的窗口
句柄
来获取窗口标题是一项常用且实用的功能,尤其是在进行自动化测试、用户界面操作或
系统
监控等任务时。本文将详细介绍如何使用C#来实现这一功能,并深入探讨其背后的原理和技术细节...
VB获取窗口
句柄
窗口
句柄
是操作
系统
分配给每个窗口的一个唯一标识符,它是一个整数值,用来区分
系统
中的不同窗口。这个标识符使得程序能够通过
句柄
与特定的窗口进行交互,例如发送消息、改变窗口属性或获取窗口信息。 标题“VB获取...
vb源码--
已知
窗口
句柄
获得其EXE应用程序路径
在VB(Visual Basic)编程中,获取
已知
窗口
句柄
的EXE应用程序路径是一个常见的需求,这主要涉及到Windows API(应用程序接口)的调用和内存处理。窗口
句柄
(HWND)是Windows操作
系统
用来唯一标识一个窗口的对象
句柄
...
枚举
已知
名称
窗体
下所有控件
最近需要进行一个项目,其中部分工作获取某
窗体
下所有控件信息,在网上查找相关资料后自己稍微动手调整了一下
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章