从 C# 关闭最小化/图标化进程

2023-12-13

这是我的问题:我需要从 C# 程序关闭一个已经运行的进程。 问题是该进程现在作为图标运行(最小化到任务栏),除非用户至少打开它一次(这在无人值守的计算机上永远不会发生),否则它永远不会 有一个主窗口。

我的另一个要求是应用程序是closed not killed。我需要它将它的内存缓冲区写入磁盘 - 杀死它会导致数据丢失。

到目前为止,这是我尝试过的:

        foreach (Process proc in Process.GetProcesses())
        {
            if (proc.ProcessName.ToLower().StartsWith("myapp"))
            {
                if (proc.MainWindowHandle.ToInt32() != 0)
                {
                    proc.CloseMainWindow();
                    proc.Close();
                    //proc.Kill();  <--- not good!
                }
            }
        }

我已经添加了if条款,发现后主窗口句柄 == 0当窗口最小化时。删除if没有帮助。既没有关闭主窗口()也不Close()工作。这Kill()确实如此,但如上所述 - 这不是我需要的。

任何想法都会被接受,包括使用神秘的 Win32 API 函数:)


这应该有效:

[DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr FindWindow(string className, string windowName);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

private const int WM_CLOSE = 0x10;
private const int WM_QUIT = 0x12;

public void SearchAndDestroy(string windowName) 
{
    IntPtr hWnd = FindWindow(null, windowName);
    if (hWnd == IntPtr.Zero)
        throw new Exception("Couldn't find window!");
    SendMessage(hWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
}

由于有些窗口不响应WM_CLOSE, WM_QUIT可能必须改为发送。这些声明应该适用于 32 位和 64 位。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 C# 关闭最小化/图标化进程 的相关文章

随机推荐

  • Windows 8 / Metro UI 中文本框下的自动完成框

    我想使用 C XAML 在 Windows 8 UI Metro UI 应用程序中的文本框中实现自动完成 目前 当软 触摸键盘显示时 它会遮挡自动完成框 但是 在文本框焦点上 Windows 8 会自动向上滚动整个视图并确保文本框处于焦点位
  • 删除项目后 hasMany 关联列表中为空

    有域对象 class Book List
  • BoxAndWhiskerChart JFreeChart 的绘图方向

    我有一个问题JFreeChart 可以改吗PlotOrientation of a BoxAndWhiskerChart水平 我有一个直方图 我想添加一个BoxAndWhiskerChart以下 我需要它水平 这样我就可以使用相同的轴刻度
  • 如何使用参数化接口?

    我正在努力理解界面 起初 它们看起来很简单 但是一旦我开始使用参数化接口 我就无法让各个部分就位 我有这个界面 interface my if parameter H WIDTH 64 parameter L WIDTH 8 logic H
  • VSTS 嵌套变量

    我正在尝试实现一个级联变量 当设置一个设计时变量时 它会级联到其他变量 这可能吗 我尝试过使用点表示法 尝试过不使用点表示法 并且尝试在任务中执行此操作 我也尝试过这个任务插件 但我的代理使用的是 2 0 并且任务无法运行 变量工具箱任务
  • 从代码隐藏文件中检查 CheckBoxField

    看来 CheckBoxField 不接受 ID 属性 因此我无法直接调用代码隐藏文件中的组件
  • Web 应用程序如何向 iOS 设备发送推送通知? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在开发一个网络应用程序 当有新内容时 如何向 iOS 用户发送推送通知 更具体地说 为了让 Web 应用程序向移动设备 例如 iPhone 发送推送通知 移动设备必须已注册才
  • 使用多处理时 Python 实例变量未更新

    我在更新变量方面遇到了一个不寻常的问题 我构建了一个简单的类对象来帮助我进行一些网络嗅探 我想要创建一个并行进程 它允许我运行一些网络测试并捕获使用 python 生成的流量 这样我就可以扩展程序来完成令人惊奇的事情 我正在使用 scapy
  • 如何使用外部 api 访问令牌而不将其暴露给用户?

    很抱歉 如果这可能是一个微不足道的问题 但我想确定一下 但无法在网上找到明确的答案 我正在编写一个使用 Mapbox 的小应用程序 并且我正在使用反应地图GL为了它 他们需要客户端的访问令牌 因此他们建议使用环境变量 我的问题是 是否可以简
  • 围绕轮廓对象生成颜色直方图

    嘿 OpenCV Emgu 大师们 我有一张正在为其生成轮廓的图像 请参见下文 我正在尝试生成基于颜色直方图的图像搜索空间修剪以查找 如何使蒙版仅围绕突出的物体轮廓并遮挡其余部分 所以我有一个由两部分组成的问题 如何 反转 轮廓外的图像 漫
  • 如何使用 Python 创建一个流式传输在线广播的 Discord 机器人

    正如标题所提到的 我该怎么做呢 到目前为止 我花了几个小时试图找到答案 但由于这不是一个受欢迎的请求 因此没有任何相关内容 我发现的大部分内容只是使用 youtube dl 下载 yt 音频并播放它 编辑 更新以使用FFmpegPCM音频流
  • 从文件中解析逗号分隔的 JSON

    我正在读取一个包含用逗号分隔的 JSON 的文件 例如 JSON JSON JSON 我确定它们是用逗号分隔的 但不确定它们是用换行符分隔的 该 JSON 可能全部位于一行 但可以肯定的是它们是用逗号分隔的 我还没有收到该数据 我想知道如何
  • 当数组包含日期时,从 Firestore 中删除数组项不起作用

    我花了几天时间研究这个问题 包括各种答案 例如 Firebase Firestore 从文档数组中追加 删除项目以及我之前的问题 从 Firestore 中删除数组项但无法弄清楚如何真正使其发挥作用 事实证明 问题在于对象中存在日期属性 如
  • WPF - ItemTemplate 未按预期运行

    我有一个UserControl我用它来显示列表UIElement是 该控制由一个单一的ItemsControl与它的ItemPanelTemplate切换为水平StackPanel its ItemsSource绑定到一个Dependenc
  • 插入表变量 CTE

    如何将 cte 的结果插入到表变量中 像这样的东西吗 DECLARE myData TABLE Title nvarchar 350 NOT NULL Id int NOT NULL INSERT INTO myData with CTE
  • 在所有窗口之上运行 hta

    我有一个 HTML 应用程序 我想保留在所有窗口的顶部 也就是说 如果打开 切换到另一个窗口 我希望这个窗口覆盖它 JavaScript 解决方案在 Windows 7 IE9 模式下不起作用 不确定是什么阻碍了它 也无法更改 而 VBSc
  • 没有表的映射关联的 Hibernate 标准投影

    我有 2 张桌子说 表1和表2 现在 Table1 有 3 列 即 t1 t2 t3 Table2 有 2 列 t4 和t5 我必须通过联接从两个表中获取数据 但注释或 xml 中的两个表之间没有映射关联 现在的主要问题是我必须使用休眠投影
  • 在 Visual Studio 2017 .NET Core 项目中支持 Roslyn 分析器(.ruleset)

    如何在 Visual Studio 2017 NET Core 项目中添加对 Roslyn 分析器 ruleset 的支持 在 project json 中 它是通过使用配置的buildOptions buildOptions additi
  • Varchar 或 Text 数据类型,字符串长度最多为数千个字符

    我有一个小型社交网站 包含帖子和评论 我决定让用户使用他们想要的任意数量的字符创建帖子 我认为存储此类内容的最佳数据类型是Text 但对于评论 大多数情况下用户只写一行或几行文字 这就是为什么我认为我必须将注释字符串长度限制为最大 3000
  • 从 C# 关闭最小化/图标化进程

    这是我的问题 我需要从 C 程序关闭一个已经运行的进程 问题是该进程现在作为图标运行 最小化到任务栏 除非用户至少打开它一次 这在无人值守的计算机上永远不会发生 否则它永远不会 有一个主窗口 我的另一个要求是应用程序是closed not