2012-10-23 15 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中的應用程序」的進程間通信章節。

相關問題