gpt4 book ai didi

c# - 使正在运行的进程成为事件窗口

转载 作者:太空狗 更新时间:2023-10-30 00:08:22 24 4
gpt4 key购买 nike

我有三个 Microsoft Access 数据库。我希望能够以编程方式在这些之间切换。我有一个 void 方法,它接受一个名为 dbName(我的数据库名称)的字符串参数。

public void SwitchDatabase(string dbName)
{

}

我知道我的 Access 数据库的 MainWindowTitle 是什么,并且每个数据库都有不同的 MainWindowTitle,因此我可以创建 Process 类的数组并使它与 System.Diagnostics.Process.GetProcesses() 相等。然后,我可以循环运行我的进程,直到找到 ProcessName 为 MSACCESS 且 MainWindowTitle 正确的进程,如下所示:

Process[] processList = Process.GetProcesses();

foreach (Process theProcess in processList)
{
string processName = theProcess.ProcessName;
string mainWindowTitle = theProcess.MainWindowTitle;
}

找到它后,我就可以获取进程 ID,现在我想让这个进程成为我的事件窗口。我该怎么做?

最佳答案

Eric 的回答对我不起作用。我找到了更好的解决方案 here on SO与 SetForegroundWindow。首先我想知道,为什么它一次有效,而下一次却无效。然后我从列表中排除了当前进程。所以,这是我的最终版本:

static void BringWindowToFront()
{
var currentProcess = Process.GetCurrentProcess();
var processes = Process.GetProcessesByName(currentProcess.ProcessName);
var process = processes.FirstOrDefault(p => p.Id!=currentProcess.Id);
if (process == null) return;

SetForegroundWindow(process.MainWindowHandle);
}

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

关于c# - 使正在运行的进程成为事件窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9310194/

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