app.xaml.cs에서 WPF Windows 응용 프로그램을 집중하는 방법
문제
이것은 이것이 좋은 실천이 아니라는 것을 알고 있지만, 여전히 내가 구현하고 싶은 것입니다.
하나의 인스턴스 만 실행하려는 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;
. 제휴하지 않습니다 StackOverflow