gpt4 book ai didi

c# - 将外部应用程序移动到屏幕前面

转载 作者:太空狗 更新时间:2023-10-30 01:24:28 25 4
gpt4 key购买 nike

我正在运行的应用程序需要调用一个单独的应用程序来进行一些扫描。我通过启动新的 System.Diagnostics.Process 来调用其他应用程序。一旦我得到那个过程,我就调用一个方法来为那个应用程序提供焦点。我尝试了两种不同的方法来为该外部应用程序提供焦点,但都没有用。有人可以帮忙吗?

代码如下:

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, uint windowStyle);

[DllImport("user32.dll")]
private static extern bool SetWindowPos(IntPtr hWnd,
IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);

[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);

private static void GiveSpecifiedAppTheFocus(int processID)
{
try
{
Process p = Process.GetProcessById(processID);

ShowWindow(p.MainWindowHandle, 1);
SetWindowPos(p.MainWindowHandle, new IntPtr(-1), 0, 0, 0, 0, 3);

//SetForegroundWindow(p.MainWindowHandle);
}
catch
{
throw;
}
}

第一种情况使用ShowWindowSetWindowPos 方法,另一种方法使用SetForegroundWindow 方法。两者都行不通...

是我使用了错误的方法,还是我使用的代码有错误?谢谢大家!

最佳答案

使用 SetWindowPos,但当您不想让窗口位于最顶层时,再次调用它,将第二个参数设置为 -2 (HWND_NOTOPMOST) 而不是 -1(HWND_TOPMOST)

关于c# - 将外部应用程序移动到屏幕前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235263/

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