创建一个';关闭';关闭应用程序的窗口 我对C++编程比较新,目前使用Visual Studio 2012 API。我的操作系统是64位Windows 7。我想写一个C++程序,它显示一个消息框或窗口,用简单的关闭消息,例如“关闭……”或类似的东西,当我关闭一个特定的应用程序。我希望这个窗口会在应用程序退出期间出现,然后关闭

创建一个';关闭';关闭应用程序的窗口 我对C++编程比较新,目前使用Visual Studio 2012 API。我的操作系统是64位Windows 7。我想写一个C++程序,它显示一个消息框或窗口,用简单的关闭消息,例如“关闭……”或类似的东西,当我关闭一个特定的应用程序。我希望这个窗口会在应用程序退出期间出现,然后关闭,c++,winapi,C++,Winapi,是否可以创建一个句柄,当运行中的应用程序突然关闭时,该句柄将检索其退出时间?如果是这样的话,我如何在显示消息框的语句中使用这个退出时间 我希望得到建设性的批评,因为我不熟悉这种语言。衷心感谢您提供的任何建议。如果请求,我将显示所有源代码 我不认为这是正确的方法,但无论如何,下面是我一直在玩的代码片段,作为更大的VS Win32应用程序项目的一部分: LPTSTR lpchText(_T("Shutting down....")); LPFILETIME lpExitTime = 0; /

是否可以创建一个句柄,当运行中的应用程序突然关闭时,该句柄将检索其退出时间?如果是这样的话,我如何在显示消息框的语句中使用这个退出时间

我希望得到建设性的批评,因为我不熟悉这种语言。衷心感谢您提供的任何建议。如果请求,我将显示所有源代码

我不认为这是正确的方法,但无论如何,下面是我一直在玩的代码片段,作为更大的VS Win32应用程序项目的一部分:

LPTSTR  lpchText(_T("Shutting down...."));
   LPFILETIME lpExitTime = 0; //Initialise
   TCHAR Buffer[_MAX_PATH];
   DWORD size = _MAX_PATH;
   LPCTSTR lpStr(_T("C:\Program Files\Common Files\ExampleApp.exe")); // Path to executable app.



   AssocQueryString(    ASSOCF_OPEN_BYEXENAME,
                        ASSOCSTR_EXECUTABLE,
                        lpStr,
                        NULL,
                        Buffer,
                        &size
                        );

   GetProcessTimes(
                        AssocQueryString,
                        NULL,
                        lpExitTime,
                        NULL,
                        NULL
                 );

   while(lpExitTime){


                        MessageBoxEx(
                        _In_opt_  hWnd,
                        _In_opt_  lpchText,
                        _In_opt_  lpCaption,
                        _In_opt_  MB_ICONEXCLAMATION
                        ,0
                        ); 

                   };
  return TRUE; 

    enter code here

我猜关闭应用程序是一个漫长的操作,否则一个正常的应用程序将关闭得如此之快,用户将没有机会真正看到窗口

但当然有可能,在元代码中,这是步骤

  • 附加到正在运行的进程。您可以从可执行文件的名称枚举正在运行的进程,以找到正确的进程
  • 一旦拥有流程的句柄,就可以附加到流程消息循环
  • 收听WM_QUIT(假设它是Windows应用程序)消息,然后显示窗口
  • 使用MsgWaitForMultipleObject等待进程句柄,该函数将在进程终止时发出信号
  • 附加到其他进程有一些安全问题,因此它可能不适用于普通用户

    其他需要探索的选项是在powershell脚本中处理它,或者制作一个小的启动程序应用程序,然后启动实际的应用程序


    是否可以通过修改应用程序本身来实现此功能?

    如何检测此外部进程即将关闭?你能控制这个外部过程吗?您似乎在真正了解编码内容之前就已经开始编码了。这通常是一个错误。是的,申请将由我自己关闭!但是我想知道如何通过源代码连接到这个过程??有什么想法吗??我觉得到可执行应用程序的路径是不够的…我需要一个实时连接…我真的不知道你在说什么。不要介意。也许其他人能理解。是的,但我正在使用的应用程序通常需要3-5秒才能完全关闭……不,应用程序不能修改。我只是想通过消息框提醒潜在用户应用程序正在关闭。。。但我认为你的步骤将帮助我实现这一目标…谢谢