문제

이것은 이것이 좋은 실천이 아니라는 것을 알고 있지만, 여전히 내가 구현하고 싶은 것입니다.

하나의 인스턴스 만 실행하려는 WPF Windows 응용 프로그램이 있습니다.사용자가 프로그램을 다시 시작하려고하면 프로그램 상자가 프로그램이 이미 실행되고 있음을 알리는 메시지가 표시됩니다.이 검사는 app.xaml.cs에서 수행됩니다.

지금까지 그렇게 좋습니다.모든 것이 예상대로 작동합니다.

이 기능을 확장하여 초점을 맞추고 다른 Windows 및 응용 프로그램을 통해 사용자 데스크톱 앞에 프로그램의 메인 윈도우를 가져 오십시오.나는 수많은 접근법을 시도했지만 일할 수 없습니다.이것은 응용 프로그램이 이미 실행 중인지 테스트하는 app.xaml.cs에서도 발생해야합니다.

WPF 에서이 작업을 수행 할 수 없습니다.나는 Pinvokes와 다른 물건을 시도했지만, 아무것도 나를 위해 일하는 것 같습니다.

에 관해서는

nicki

도움이 되었습니까?

해결책 2

솔루션을 찾았습니다.

VisualBasic에 대한 참조를 추가하면 Interactive.appActivate에 액세스 할 수 있습니다. 이는 이미 구현 된 프로세서 ID가있는 프로세스를 활성화 할 수 있습니다.

이 페이지는 저에게 솔루션을주었습니다 C # / 나 APPACTIVATE

다음과 같은 방법으로 실행중인 프로세스를 확인합니다

Process currentProcess = Process.GetCurrentProcess();
        var runningProcess = (from process in Process.GetProcesses()
                              where
                                process.Id != currentProcess.Id &&
                                process.ProcessName.Equals(
                                  currentProcess.ProcessName,
                                  StringComparison.Ordinal)
                              select process).FirstOrDefault();
        if (runningProcess != null)
        {
            Microsoft.VisualBasic.Interaction.AppActivate(runningProcess.Id);
            return;
        }
.

다른 팁

활성화하려고 시도 했습니까?

Application.Current.MainWindow.Activate();
.

물론 당신이 그것을 원한다면 다음과 같은 것보다 맨 위에 머물러 있습니다 :

Application.Current.MainWindow.Topmost = true;
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top