社区
进程/线程/DLL
帖子详情
如何获取其它程序弹出的对话框,将其关闭
myrou
2006-04-06 11:40:42
现有一程序,将会调用多个DLL,在DLL调用中,有可能会弹出对话框提示窗口,因此程序为后台自动运行,应如何才能捕获弹出的提示窗口,将其关闭或者触发“确定”单击事件?
...全文
342
7
打赏
收藏
如何获取其它程序弹出的对话框,将其关闭
现有一程序,将会调用多个DLL,在DLL调用中,有可能会弹出对话框提示窗口,因此程序为后台自动运行,应如何才能捕获弹出的提示窗口,将其关闭或者触发“确定”单击事件?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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查找窗口
VC++如何
弹出
对话框
Dialog
这是作何自己编写的VC++如何
弹出
对话框
的代码,希望能帮助VC++的初学者。
mfc
对话框
程序
退出
弹出
确认
对话框
mfc
对话框
程序
退出
弹出
确认
对话框
,最简单的范例,没有多余代码,就是相应了ON_WM_CLOSE()消息
倒计时1分钟
对话框
自动
关闭
自己编写的定时器小
程序
,执行后出现
对话框
,显示文字“1分钟倒计时后,你的电脑将自动删除硬盘上的一切资料,然后关机!\n现在开始倒计时:还有%d秒……”,文字可以自己修改,实际并未加入恶意
程序
,搞怪的。倒计时1分钟后,
对话框
自动
关闭
,
程序
结束。对计时器感兴趣的朋友可以参考下我的代码。编译环境:VS2010,语言:C++/MFC。
动态
弹出
、
关闭
对话框
.rar
如何动态地
弹出
、
关闭
对话框
,这个代码提供了很好的一个思路,从中可以得到很大的启发。对于VC初学者来说,这是个相当困难的,研究这个代码对初学者来说有很大的帮助。
用Delphi编写的消息
对话框
的自动
关闭
用Delphi编写的消息
对话框
(包括信息提示
对话框
、警告提示
对话框
、出错
对话框
)的自动
关闭
,不用手动点击确定或取消来
关闭
。
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章