Domanda

So che questo potrebbe non essere buone pratiche, ma è ancora qualcosa che vorrei implementare.

Ho un'applicazione Windows WPF che voglio solo eseguire un'istanza di.Se l'utente tenta di avviare nuovamente il programma, un messaggio MessageBox mostrerà lo spiegare che il programma è già in esecuzione.Questo controllo viene eseguito in app.XAML.CS.

finora così buono.Tutto funziona come previsto.

Vorrei espandere questa funzionalità per dare messa a fuoco e portare il Mainwindow del programma alla parte anteriore del desktop degli utenti, su altre finestre e applicazioni.Ho provato numerosi approcci, ma non posso farlo funzionare.Questo dovrebbe accadere anche in app.xaml.cs dove test se l'applicazione è già in esecuzione.

Non è possibile farlo in WPF?Ho provato Pinvokes e altre cose, ma nulla sembra funzionare per me.

Cordiali saluti

nicki

È stato utile?

Soluzione 2

Ho trovato una soluzione.

Aggiunta di un riferimento a Visualbasic dà accesso a Interactive.Appactivate, che può attivare qualsiasi processo assegnato un processo di processo, che avevo già implementato.

Questa pagina mi ha dato la soluzione Appactivate in c #

.

Controllo per il processo di esecuzione nel modo seguente

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;
        }
.

Altri suggerimenti

Hai provato a attivarlo?

Application.Current.MainWindow.Activate();
.

ovviamente se ti piace rimanere in cima a tutti i tempi di:

Application.Current.MainWindow.Topmost = true;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top