gpt4 book ai didi

c# - 以编程方式激活 Outlook

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:02 25 4
gpt4 key购买 nike

我有一个应用程序需要在用户单击按钮时激活 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 窗口?

最佳答案

我想出了一个解决方案;我没有使用任何 WINAPI 调用,而是使用了 Process.Start() .我之前也尝试过,但它导致现有 Outlook 窗口调整大小,这很烦人。秘诀是通过/recycle Outlook 的参数,这指示它重用现有窗口。调用如下所示:

Process.Start( "OUTLOOK.exe", "/recycle" );

关于c# - 以编程方式激活 Outlook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6234550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com