我正在尝试将窗口浏览器右键单击上下文菜单功能中的“发送到”添加到我的MFC应用程序中。为此,我在m_lpCmdLine
中解析了命令行参数InitInstance()
以获取文件路径并将其打开。应用程序未运行时就是这种情况。
但是在应用程序已经运行的情况下。然后在这种情况下我不想创建一个新实例。
将这些命令行选项传递给现有实例需要什么。
任何建议都会非常有用。
谢谢!
答案 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中的多线程应用程序”的进程间通信章节。