비활성 인 경우 맨 위의 창을 얻는 방법 :이 확인을 작동 What is the correct way to create a single-instance application?는 모달과 내가 같은 시스템에 여러 번 그래서 난이 스레드에서 솔루션을 사용하는 내 응용 프로그램을 실행하는 사용자를 방지 할
을하지만 모달 창이 열릴 때 내 응용 프로그램을 표시하는 데 문제가 있습니다 (예 : view.ShowDialog();
). 이것은 시나리오입니다.
- 사용자가 내 응용 프로그램을 실행하고 모달 창을 엽니 다.
- 그런 다음 그는 응용 프로그램을 다시 실행하려고 시도합니다. 응용 프로그램의이 두 번째 인스턴스의 시작 절차에있는 코드는 다른 응용 프로그램을 실행 중임을 확인하고 WM_SHOWME 메시지를 표시하여 자체적으로 표시합니다. 그런 다음 응용 프로그램의 두 번째 인스턴스가 종료됩니다.
- 첫 번째 응용 프로그램은 How to handle WndProc messages in WPF?의 솔루션을 사용하여 WM_SHOWME 메시지를받습니다. 이제 최상위 창을 맨 앞으로 가져와야하며 이것이 내 질문입니다. 최상위 창이 모달이고 활성화되지 않은 경우 어떻게하면 응용 프로그램의 최상위 창을 얻을 수 있습니까? Refer to active Window in WPF?에서 해결책을 시도했지만, 물론 내 윈도우가 활성화되어 있지 않아 작동하지 않습니다.
PS - 응용 프로그램이 실행 중이고 모달 창이 열리 며 작업 표시 줄의 아이콘 위로 마우스를 가져 가면 주 창과 모달 창이라는 두 개의 창을 볼 수 있습니다. 메인 윈도우를 클릭 할 수 있습니다. (모달 윈도우가 위에 있기 때문에 비활성화되어 있습니다) 모달 윈도우도 클릭 할 수 있습니다. 내 솔루션은 메인 윈도우를 클릭하는 것처럼 작동하지만, 최상위 윈도우를 활성화 할 수 있기를 원합니다.이 경우에는 모달입니다.
그럼, 최상위 모달 창 (또는 모달 창이 표시되지 않은 경우 주 창)을 앞으로 가져 오는 방법에 대한 아이디어는 무엇입니까? 응용 프로그램주고 기계의 단일 인스턴스를 만들 수
흠, 메인 윈도우와 모달 윈도우 (대화 상자) 아이콘을 모두 보여주는 작업 표시 줄은 의도적입니까? 이 대화 상자는 주 창에서 소유하지 않은 것 같습니다. 대화 상자를 주 창에서 소유하게 만들면 대화 상자가 주 창에 절대 적용되지 않습니다. 또한 메인 윈도우를 앞으로 가져 가면 모달 윈도우도 앞쪽으로 가져옵니다. (모덜 윈도우의 [Owner property] (https://msdn.microsoft.com/en-us/library/system.windows.window.owner (v = vs.110) .aspx)를 확인하십시오. 메인 윈도우로) – elgonzo
@elgonzo - 당신이 맞습니다, 소유자 속성을 설정하는 것을 잊었습니다, 고마워요! 대답으로 의견을 게시하면 동의 할 것입니다. – sventevit
끝났습니다 ... :) – elgonzo