2012-10-23 14 views
0

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

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

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

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

谢谢!

+0

看看http://www.codeproject.com/Articles/3126/Single-Instance-Application – PhilMY

回答

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中的应用程序”的进程间通信章节。

相关问题