gpt4 book ai didi

c# - 使用 C# 仅关闭谷歌浏览器隐身窗口

转载 作者:行者123 更新时间:2023-11-30 15:36:05 25 4
gpt4 key购买 nike

我想创建一个小程序来关闭谷歌隐身窗口。

我有杀死所有 chrome 窗口的代码,但我不确定如何只隔离隐身窗口

现有代码:

        Process[] proc = Process.GetProcessesByName("MyApp");
foreach (Process prs in proc)
{
prs.Kill();
}

最佳答案

我试了一下,但没有完全成功。我能够确定哪些窗口是隐身的,然后从技术上终止该进程。

但是,似乎必须终止 chrome 可执行文件才能关闭实际窗口,不幸的是,这会关闭所有 chrome 窗口。

您可能能够获得类似 SendKeys 的东西来使用 Windows 句柄模拟 Alt-F4,或者如果我没记错的话,.Net 4.5 有一些您可以尝试的额外关闭例程。

尽管如此,这里的代码可以确定哪些窗口是 chrome 窗口,哪些是隐身窗口。然后他们“杀死”,但它不会关闭窗口,只会终止浏览(Aw,Snap!正如 Chrome 所说的那样)。

        [DllImport("user32.dll")]
static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);

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

[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);

public const int WM_SYSCOMMAND = 0x0112;
public const int SC_CLOSE = 0xF060;

private void button1_Click(object sender, EventArgs e)
{
var proc = Process.GetProcesses().OrderBy(x => x.ProcessName);

foreach (Process prs in proc)
if (prs.ProcessName == "chrome" && WmiTest(prs.Id))
{
prs.Kill();

//To test SendKeys, not working, but gives you the idea
//SetForegroundWindow(prs.Handle);
//SendKeys.Send("%({F4})");
}
}

private bool WmiTest(int processId)
{
using (ManagementObjectSearcher mos = new ManagementObjectSearcher(string.Format("SELECT CommandLine FROM Win32_Process WHERE ProcessId = {0}", processId)))
foreach (ManagementObject mo in mos.Get())
if (mo["CommandLine"].ToString().Contains("--disable-databases"))
return true;
return false;
}

关于c# - 使用 C# 仅关闭谷歌浏览器隐身窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14132142/

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