社区
进程/线程/DLL
帖子详情
如何获取其它程序弹出的对话框,将其关闭
myrou
2006-04-06 11:40:42
现有一程序,将会调用多个DLL,在DLL调用中,有可能会弹出对话框提示窗口,因此程序为后台自动运行,应如何才能捕获弹出的提示窗口,将其关闭或者触发“确定”单击事件?
...全文
367
7
打赏
收藏
如何获取其它程序弹出的对话框,将其关闭
现有一程序,将会调用多个DLL,在DLL调用中,有可能会弹出对话框提示窗口,因此程序为后台自动运行,应如何才能捕获弹出的提示窗口,将其关闭或者触发“确定”单击事件?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
coolge2005
2006-04-06
打赏
举报
回复
这样就可以用商业的控件了!!
myrou
2006-04-06
打赏
举报
回复
好,试试,谢谢
dirdirdir3
2006-04-06
打赏
举报
回复
hook了messageboxa,不让其弹出来就可以了。
huaboy408
2006-04-06
打赏
举报
回复
FindWindow查找窗口
FindWindowEx查找窗口内控件
baqiao1211
2006-04-06
打赏
举报
回复
hwnd=findwindow(...);
PostMessage(hwnd,WM_CLOSe,0,0);
Steven7
2006-04-06
打赏
举报
回复
获取对话框的title,直接close,或者进入获取其中的按钮,然后发click消息
具体技术细节参考我的经验总结:
6、对系统中其他窗口的操作
(1) SetFocus();//Dlg类中,窗口得到焦点
CenterWindow();//Dlg类中,窗口居中
CWnd* pPrevWnd = CWnd::FindWindow(NULL,"CashFiesta"); //定位到某个窗口
char strWin[80];
pPrevWnd->GetWindowText(strWin,60);//得到窗口标题
pPrevWnd->MessageBox (strWin);//显示得到的窗口标题
if (strcmp(strWin,"CashFiesta")==0)//如果窗口标题是 CashFiesta 则 //这个语句有问题改用下面一个
if (pPrevWnd!=NULL)//如果确实有窗口标题是 CashFiesta的,则
pPrevWnd->MoveWindow(747,757,280,80,TRUE);//移动窗口到x=747,y=757, 宽度=280,高度=80,重绘
pPrevWnd->SendMessage(WM_CLOSE);//关闭窗口
if (pPrevWnd->IsIconic())//如果窗口已经最小化
pPrevWnd->ShowWindow(SW_RESTORE);//显示窗口,恢复
/* 依次得到所有窗口
CWnd* pPrevWnd = CWnd::FindWindow(NULL,NULL);
while (pPrevWnd)
{
pPrevWnd = pPrevWnd->GetWindow(GW_HWNDNEXT);
}
*/
(2) CWnd* pPrevWndL = CWnd::FindWindow(NULL,"CashFiesta Login");
HWND handMain=::FindWindowEx(NULL,NULL,NULL,_T("CashFiesta Login"));
这两个语句都是找到窗口 "CashFiesta Login",可以共存在一个代码段中,只是返回值的类型不同,便于不同应用,
FindWindowEx也可以用于查找窗口中的控件,例如:
HWND hwnd1=::FindWindowEx(handMain,NULL,_T("EditBar"),NULL);//查找定位到窗口 "CashFiesta Login"中的第一个EditBar控件(实际没有EditBar,只是用来说明如何取一个控件内部的控件)
HWND hwnd2=::FindWindowEx(hwnd1,NULL,_T("Edit"),NULL);//查找定位到窗口 "CashFiesta Login"中的第一个EditBar控件中的EDIT控件
7、向另外的程序窗口中的控件发消息
HWND handMain=::FindWindowEx(NULL,NULL,NULL,_T("CashFiesta Login"));//CashFiesta Login是其他程序的窗口标题
if(handMain )//如果有那样的一个窗口打开
{
HWND hwndEdit=::FindWindowEx(handMain,NULL,_T("Edit"),NULL);
HWND hwndButton=::FindWindowEx(handMain,NULL,_T("Button"),_T("OK"));
if (hwndEdit)
{
char sz[255];
strcpy(sz,"StevenMzq");
::SendMessage(hwnd2,WM_SETTEXT,255,(long)sz);//向Edit控件中加入字符串 StevenMzq
::SendMessage(hwnd2,WM_GETTEXT,255,(long)sz);//将Edit控件中的内容存入字符串 sz
}
if (hwndButton)
{
::SendMessage(handMain,WM_COMMAND,1,(long)hwndButton);//模拟向button击键--重要!!
上面语句有时并不能实现模拟向button击键,用下面两行语句
int nButtonID=::GetDlgCtrlID(hwndButton);//由 Button的句柄得到其ID
::SendMessage(handMain,WM_COMMAND,nButtonID,0);//模拟向button击键
char sz[255];
strcpy(sz,"StevenMzq");
::SendMessage(hwnd2,WM_SETTEXT,255,(long)sz);//将Button控件的标题改为字符串 StevenMzq
::SendMessage(hwnd2,WM_GETTEXT,255,(long)sz);//将Button控件的标题存入字符串 sz
}
oyljerry
2006-04-06
打赏
举报
回复
或FindWindow查找窗口
java
弹出
对话框
_Java在Swing中如何实现
弹出
一个
对话框
的效果?
在Java
程序
中,开发者通常使用JOptionPane来创建简单的
对话框
。然而,当需要用户输入多个字段,如用户名和密码时,JOptionPane的默认功能可能无法满足需求。本文探讨如何在UserFrame构造方法中自定义一个
对话框
,包含两个输入框,分别用于输入用户名和密码,并在用户输入后返回这两个字符串。问题在于当前代码中,
对话框
弹出
后并未暂停执行,导致未
获取
到用户输入就继续执行。解决方法是使用Swing的modal
对话框
,确保在
对话框
关闭
前,
程序
不会继续执行后续代码。
DataGridView鼠标经过Cell时
弹出
对话框
该博客介绍了如何在Windows Forms应用
程序
中,当鼠标移动到DataGridView单元格上时,
弹出
一个
对话框
展示详细信息。通过HitTest方法
获取
单元格位置,并在特定条件下显示HourScheduleViewForm窗体,模拟Tooltip效果。代码中还包括了窗体
关闭
和位置设置的逻辑,以及防止多个窗体
弹出
的处理。 HourScheduleViewForm的初始化参数包括开始时间、结束时间等,提供了一种增强的用户交互体验。
支付宝小
程序
弹出
密码输入框(使用支付宝官方组件)
本文介绍了在支付宝小
程序
中如何结合Modal
对话框
和form、input组件创建密码输入弹框。详细讲述了通过axml、acss和js文件的代码实现过程,包括用户点击按钮
弹出
密码输入框、
获取
密码值、
关闭
弹框的事件处理以及调用my.request发送请求到后端的逻辑。
桌面窗体应用
程序
,FormClosing事件
本文详细介绍了如何在C#中通过自定义窗体
关闭
事件处理逻辑来实现用户确认机制,通过使用MessageBox来
弹出
对话框
获取
用户输入,确保了
程序
在
关闭
前得到确认,同时解释了如何在事件处理中取消或终止
关闭
过程。
MFC笔记13.11.15
本文深入探讨了在Windows应用
程序
中如何
获取
控件大小、向指定
对话框
发送消息及响应、启动和
关闭
程序
、以及如何
弹出
菜单栏的各项技术细节。涵盖了从基本操作到复杂交互的全面指导。
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章