У меня есть приложение, которое должно активировать Outlook (если он запущен), когда пользователь нажимает кнопку. Я пробовал следующее, но это не работает.
Объявлено в окне класса:
[DllImport( "user32.dll" )]
private static extern bool SetForegroundWindow( IntPtr hWnd );
[DllImport( "user32.dll" )]
private static extern bool ShowWindowAsync( IntPtr hWnd, int nCmdShow );
[DllImport( "user32.dll" )]
private static extern bool IsIconic( IntPtr hWnd );
Внутри кнопки Click
Обработчик:
// Check if Outlook is running
var procs = Process.GetProcessesByName( "OUTLOOK" );
if( procs.Length > 0 ) {
// IntPtr hWnd = procs[0].MainWindowHandle; // Always returns zero
IntPtr hWnd = procs[0].Handle;
if( hWnd != IntPtr.Zero ) {
if( IsIconic( hWnd ) ) {
ShowWindowAsync( hWnd, SW_RESTORE );
}
SetForegroundWindow( hWnd );
}
}
Это не работает независимо от того, свернуто ли Outlook в настоящее время на панели задач или свернуто в системный трей или развернуто. Как активировать окно Outlook?