0

我正在尝试将窗口资源管理器右键单击上下文菜单功能对“发送到”的支持添加到我的 MFC 应用程序中。为此,我解析了命令行参数m_lpCmdLineInitInstance()获取文件路径并打开它。这是应用程序未运行时的情况。

但是如果应用程序已经在运行。然后在这种情况下,我不想创建一个新实例。

将这些命令行选项传递给现有实例需要什么。

任何建议都会非常有帮助。

谢谢!

4

1 回答 1

1

谢谢我得到了解决方案!

我需要找到打开实例的句柄和发送消息以及将在 CMainFrame 类中处理的数据。

CWnd*  pCWnd;
if(pCWnd = CWnd::FindWindow(_T("MyApplication"), NULL))
{
    if(m_lpCmdLine != '\0')
    {
        COPYDATASTRUCT cds;
        memset(&cds, 0, sizeof(cds));

        cds.dwData = MY_ACTION;
        cds.cbData = strlen(m_lpCmdLine) + 1;
        cds.lpData = (LPVOID) (LPCTSTR)m_lpCmdLine;

        pCWnd->SendMessage(WM_COPYDATA,(WPARAM)NULL, (LPARAM)&cds);
    }
}

现在在,

MainFrame::OnCopyData()
{
}

我们可以得到这个值。

更详细的说明,请阅读“Win32 中的多线程应用”的进程间通信章节。

于 2012-10-25T07:09:01.830 回答