【问题标题】:execute program while window handled mfc在窗口处理 mfc 时执行程序
【发布时间】:2013-03-12 10:27:02
【问题描述】:

我想让程序在句柄可用时工作。我正在考虑在初始化时设置计时器......并将所有程序源插入其中,但如果我在while循环中处理程序时丢失了句柄,它不会让我立即关闭对话框。

BOOL WaitProcessDlg::OnInitDialog()
{
   CDialogEx::OnInitDialog();
   SetTimer(IDC_PROGRESS1, 0, NULL);
   return TRUE;
}

void WaitProcessDlg::OnTimer(UINT nIDEvent)
{
   if(::FindWindow(NULL, str)){
   tempHWND = ::FindWindow(NULL, str);
      while(tempHWND){
----------------------->>>>>>>>>>>> A LOT OF CODING <<<<<<<<<<<<<<<<----------------------
      }
   EndDialog( 0 );
   KillTimer(IDC_PROGRESS1);
    }

  CDialog::OnTimer(nIDEvent);
}

所以我的问题是当外部应用程序的句柄可能丢失时关闭对话框的最佳方法是什么,也许是插入线程或有任何其他方法可以做到这一点?

【问题讨论】:

  • 你的问题不是很清楚——你能展示一些代码和你看到的问题的一些例子吗?
  • 我编辑了我的问题。
  • 什么程序的句柄?它是一些外部应用程序吗?
  • 是的,外部应用的句柄。
  • 有什么想法吗?

标签: c++ mfc dialog


【解决方案1】:

听起来你需要一个 windows 挂钩。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644959(v=vs.85).aspx#whgetmessagehook

使用 WH_GETMESSAGE 您可以看到其他应用程序窗口正在处理的窗口事件,然后您可以等待 WM_CLOSE 出现,然后终止您的对话框。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    相关资源
    最近更新 更多