2012-10-23 4 views
0

Windows 탐색기에서 "보내기"에 대한 지원을 추가하려면 마우스 오른쪽 단추로 상황에 맞는 메뉴 기능을 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에서 다중 스레드 응용 프로그램"의 프로세스 간 통신 장을 참조하십시오.

관련 문제