【问题标题】:Is there anyway to identify that an MFC application is starting by PC rebooting or by user click on application shortcut?是否可以通过 PC 重新启动或用户单击应用程序快捷方式来确定 MFC 应用程序正在启动?
【发布时间】:2019-06-27 06:15:01
【问题描述】:

我有一个 MFC 应用程序。此应用程序在 PC 重新启动时运行,显然是通过用户单击应用程序图标来运行的。当用户单击应用程序图标时,应用程序将启动这是正常情况。但如果应用程序从 PC 重新启动运行,我想最小化应用程序系统托盘。系统已经实现,但我不知道如何检测应用程序是由 PC 启动还是由用户单击启动。有没有办法在 MFC 应用程序中检测这些场景?

每一个帮助都是非常可观的。谢谢。

/////////////////////////////////////// ////////////////////////////

更新: 您好@michael-chourdakis 先生,非常感谢您的宝贵建议。我正在下面更新我的解决方案。有人可能会从中得到帮助。

命令行参数值已设置为 "autorun" 并在注册表中使用我的应用程序名称注册了此值,如下所示:

CString strFilePath = ApplicationFilePath + _T(" ") + _T("--autorun");

下面是从MFC应用InitInstance获取命令行参数的过程:

CString strAutoRun = _T("");

if(AfxGetApp()->m_lpCmdLine != NULL && AfxGetApp()->m_lpCmdLine[0] == _T('\0'))
{
     strAutoRun = AfxGetApp()->m_lpCmdLine;
}

if(strAutoRun.CompareNoCase(_T("--autorun")) == 0)
{
    // Application start from PC Rebooting....  
}

【问题讨论】:

标签: c++ windows mfc


【解决方案1】:

在注册应用程序以在登录时运行时(通过注册表、资源管理器启动或您可能使用过的任何其他方法),传递命令行参数以指示以这种方式启动。

在应用启动时,检查是否使用了该参数。

您可能希望传递一个极值,以免有人意外以该模式启动您的应用,例如 CLSID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2012-05-09
    • 2020-05-09
    相关资源
    最近更新 更多