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