处理MFC应用程序中的“发送到”

时间:2012-10-23 13:07:14

标签: visual-c++ mfc

我正在尝试将窗口浏览器右键单击上下文菜单功能中的“发送到”添加到我的MFC应用程序中。为此,我在m_lpCmdLine中解析了命令行参数InitInstance()以获取文件路径并将其打开。应用程序未运行时就是这种情况。

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

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

任何建议都会非常有用。

谢谢!

1 个答案:

答案 0 :(得分:1)

谢谢,我得到了解决方案!

我需要找到open实例的句柄和send消息以及将在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中的多线程应用程序”的进程间通信章节。