Qualcuno sa come vedere se la finestra di Excel di un progetto VSTO è attiva/attiva?VSTO: Application Focus
Sto cercando un equivalente di System.Windows.Window.IsActive
.
Qualcuno sa come vedere se la finestra di Excel di un progetto VSTO è attiva/attiva?VSTO: Application Focus
Sto cercando un equivalente di System.Windows.Window.IsActive
.
Sono stato frustrato anche da questo. Stai usando una finestra di dialogo nell'app VSTO? Se è così, quello che ho fatto è aggiungere un evento per la chiusura di un Windows Form/Dialog per attivare l'applicazione di Office nel modo seguente (esempio con Word, quindi ci possono essere differenze di Excel):
//... VSTO Startup Event
WindowsForm form = new WindowsForm();
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
form.Show();
void form_FormClosed(object sender, FormClosedEventArgs e)
{
this.Application.Activate();
this.Application.ActiveWindow.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateNormal;
}
I hanno trovato questa linea sta sempre/restituisce true:
this.ActiveWindow.Active()
Ma questo funziona meglio (variabile bool globale "AppActive" per tenere traccia della finestra attiva):
//... VSTO Startup Event
this.Application.WindowDeactivate += new Microsoft.Office.Interop.Word.ApplicationEvents4_WindowDeactivateEventHandler(Application_WindowDeactivate);
this.Application.WindowActivate += new Microsoft.Office.Interop.Word.ApplicationEvents4_WindowActivateEventHandler(Application_WindowActivate);
void Application_WindowActivate(Microsoft.Office.Interop.Word.Document Doc, Microsoft.Office.Interop.Word.Window Wn)
{
AppActive = true;
}
void Application_WindowDeactivate(Microsoft.Office.Interop.Word.Document Doc, Microsoft.Office.Interop.Word.Window Wn)
{
AppActive = false;
}
this.ActiveWindow.Activate()
è il metodo che attiva la finestra.
this.ActiveWindow.Active
è la proprietà che indica lo stato della finestra.
bella soluzione Mike, ottimo lavoro. Sento però che la proprietà ActiveWindow.Active DOVREBBE sempre restituire true, altrimenti non è la finestra attiva è? –