如何使用 C# 隐藏/显示进程?

2024-03-14

在执行我的程序时,我想隐藏/最小化 Microsoft 语音识别应用程序:

替代文本 http://img143.imageshack.us/img143/9380/minimize.png http://img143.imageshack.us/img143/9380/minimize.png

最后我想使用 C# 来展示/最大化!

这个进程不是由我启动的,所以我无法控制进程startInfo。

我尝试使用 user32.dll 方法,例如:

  1. 橱窗展示
  2. 动画窗口
  3. 动画窗口
  4. 设置前景窗口
  5. 设置窗口位置

我和他们所有人都有同样的问题。

我可以隐藏窗口(尽管我必须使用 SW_HIDE 选项调用其中一个方法两次),但是当我使用 SW_SHOW 标志调用该方法时,它根本不显示。

隐藏进程后如何最大化/显示?

提前致谢!

以下是一些代码片段,现在已实现以使用 SetWindowPlacement:

{
    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
    [DllImport("user32.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool SetWindowPlacement(IntPtr hWnd,
       [In] ref WINDOWPLACEMENT lpwndpl);
    [DllImport("user32.dll")]
    public static extern Boolean ShowWindowAsync(IntPtr hWnd, Int32 nCmdShow);
    [DllImport("user32.dll")]
    public static extern Boolean SetForegroundWindow(IntPtr hWnd);        
    [DllImport("user32.dll")]
    public static extern Boolean ShowWindow(IntPtr hWnd, Int32 nCmdShow);
    [DllImport("user32.dll")]
    public static extern Boolean AnimateWindow(IntPtr hWnd, uint dwTime, uint dwFlags);
    [DllImport("dwmapi.dll")]
    public static extern int DwmSetWindowAttribute(IntPtr hwnd, uint dwAttribute, IntPtr pvAttribute, IntPtr lol);
//Definitions For Different Window Placement Constants
const UInt32 SW_HIDE = 0;
const UInt32 SW_SHOWNORMAL = 1;
const UInt32 SW_NORMAL = 1;
const UInt32 SW_SHOWMINIMIZED = 2;
const UInt32 SW_SHOWMAXIMIZED = 3;
const UInt32 SW_MAXIMIZE = 3;
const UInt32 SW_SHOWNOACTIVATE = 4;
const UInt32 SW_SHOW = 5;
const UInt32 SW_MINIMIZE = 6;
const UInt32 SW_SHOWMINNOACTIVE = 7;
const UInt32 SW_SHOWNA = 8;
const UInt32 SW_RESTORE = 9;

public sealed class AnimateWindowFlags
{
    public const int AW_HOR_POSITIVE = 0x00000001;
    public const int AW_HOR_NEGATIVE = 0x00000002;
    public const int AW_VER_POSITIVE = 0x00000004;
    public const int AW_VER_NEGATIVE = 0x00000008;
    public const int AW_CENTER = 0x00000010;
    public const int AW_HIDE = 0x00010000;
    public const int AW_ACTIVATE = 0x00020000;
    public const int AW_SLIDE = 0x00040000;
    public const int AW_BLEND = 0x00080000;
}

public struct WINDOWPLACEMENT
{
    public int length;
    public int flags;
    public int showCmd;
    public System.Drawing.Point ptMinPosition;
    public System.Drawing.Point ptMaxPosition;
    public System.Drawing.Rectangle rcNormalPosition;
}


            //this works

            param = new WINDOWPLACEMENT();
            param.length = Marshal.SizeOf(typeof(WINDOWPLACEMENT));
            param.showCmd = (int)SW_HIDE;
            lol = SetWindowPlacement(theprocess.MainWindowHandle, ref param);


            // this doesn't work

            WINDOWPLACEMENT param = new WINDOWPLACEMENT();
            param.length = Marshal.SizeOf(typeof(WINDOWPLACEMENT));
            param.showCmd = SW_SHOW;
            lol = GetWindowPlacement(theprocess.MainWindowHandle, ref param);

笔记: SAPI API 是否有一个命令来最小化此最小化和最大化此窗口?


正如 Tomas 所说,您应该尝试使用 SW_HIDE 和 SW_SHOW 消息。

您可以通过了解语音识别 winwow 名称然后使用如下内容来做到这一点:

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

如何使用 C# 隐藏/显示进程? 的相关文章

随机推荐

  • 如何管理扩展方法的名称空间?

    您是否为所有扩展方法使用全局的 包罗万象的命名空间 或者是否将扩展方法放在与其扩展的类相同的命名空间中 或者您是否使用其他方法 例如应用程序或特定于库的命名空间 我问是因为我需要延长System Security Principal IId
  • MaterialContainerTransform 转换在返回时不起作用

    我的 MaterialContainerTransform 转换是从源 gt 目标进行的 但反之则不然 我的情况非常标准 我试图提供从 RecyclerView 项目 源片段 到 详细信息 片段 目标片段 的简单转换 RecyclerVie
  • 完全合格的域名是否需要句点?

    我对 FQDN 完全合格域名 感到困惑 FQDN 是否需要以句点结尾 喜欢sun or sun tuc noao edu or sun tuc noao edu 有什么不同 IT 的工作原理 域名 系统 https technet micr
  • Android:IllegalArgumentException:无法找到包含/data/data/的配置根目录

    刚刚进入 Android 的 Glide 图像加载库 使用这里的代码 https github com bumptech glide issues 459 https github com bumptech glide issues 459
  • 有人可以向我解释一下 Flutter 中 Builder 类的作用吗?

    该文档非常混乱和模糊 它是这样说的 建造者类 一个柏拉图式的小部件 它调用闭包来获取其子小部件 这是我的问题 他们所说的 柏拉图式 是什么意思 他们所说的 关闭 是什么意思 这堂课的目的到底是什么 经过长时间在互联网上进行的大量令人费解的研
  • Web 服务请求身份验证

    我们真的被困在这里所以我决定寻求你的帮助 昨天 我被要求帮助使用 Web 服务 获取 WSDL 的 URL 以及要使用的用户凭据 我从未真正与 Web 服务有任何关系 但对它们有一个总体了解并看到了一些示例 我认为它不会那么糟糕 显然我错了
  • 使用 nvcc 编译给出“没有这样的文件或目录”

    我正在尝试在 Ubuntu 上使用 nvcc 编译 CUDA 代码 但是 当我这样做时 我得到以下输出 gt make usr local cuda bin nvcc m64 ptxas options v gencode arch com
  • “main.cpp”在 Qt 项目中的作用

    在Qt项目中我们通常会找到一个project pro文件 该main cpp和几个标题 源和 ui文件 包含为应用程序 项目注入生命和功能的所有资源 如果还有更多的话 按下按钮即可显示 你好 世界 可能存在用于存储数据和配置文件等的目录 我
  • 有人知道我可以嵌入 WPF 窗口或 Windows 窗体中的代码编辑器吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想创建自己的 IDE 但我想要一个代码编辑器 语法高亮 我想将它作为控件嵌入到 WPF 窗口中 Malcolm The 夏普开发IDE
  • 在更新语句中获取最新的行版本/时间戳值 - Sql Server

    我正在使用 rowversion 列来处理乐观并发 并希望在完成更新后获取新的 rowversion 值 以便我的数据层具有最新值 并且可以通过获取并发异常来执行另一次更新 除非记录有已被其他人更新 我只是在更新后进入数据层 但这不是很有效
  • MVVM-light + RIA 服务最佳实践 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使 angular.js 路由长路径

    我正在使用 angular js 制作一个文件浏览器 所以 我会处理一些长网址 eg mydomain folder1 sub1 grand sub1 我只是学习 Angular 并发现 Angular 有 routeProvider 但是
  • Android:表没有名为“变量名称”的列 MySql 数据库错误

    当我尝试在数据库中添加新条目时 出现如下所示的错误 我现在已经搜索了几个小时 但无法发现问题所在 任何输入都会很棒 这里是来自 LogCat 的错误 02 27 23 02 51 451 E SQLiteLog 6777 1 table d
  • 如何在 phpstorm 中使用 phalcon-devtools\ide\phpstorm?

    我正在尝试将 Phalcon 开发人员工具与 phpstorm 集成 有一个视频在这里 http docs phalconphp com en 0 5 0 reference tools html integrating tools wit
  • 从 Visual Studio Code 调试 vue-cli 3 生成的应用程序

    我使用 vue cli 3 0 0 rc 3 生成了一个应用程序 现在我想使用 Visual Studio Code Chrome 调试器 对其进行调试 但是我似乎找不到打开 sourceMaps 的选项 我在 VSCode 中设置了断点
  • 单击按钮后重新绘制 JPanel

    我是 Java Swing 的新手 我有一个奇怪的问题需要刷新我的JPanel 我创建一个静态的JPanel我的框架中的组件 我从一个调用静态方法FileListenner重新粉刷我的JPanel public static void re
  • REST Web 服务版本控制实践

    我正在创建一个新的 Web 服务 并且我已经阅读了 APIgee 的一些电子书 其中建议对 Web 服务进行版本控制 我知道在 URL 与标头中保留版本控制信息之间存在一些 斗争 根据我所阅读和理解的内容 我想在标头中使用版本控制 我的问题
  • 使用 Nancy 返回包含有效 Json 的字符串

    我从另一个服务收到一个包含有效 JSON 的字符串 我只想与 Nancy 转发此字符串 但还将内容类型设置为 application json 这将使我无需在客户端使用 parseJSON data 如果我使用 Response AsJso
  • 你调用的对象是空的

    我使用以下代码来检查之前添加到复选框列表中的数据库表中的值 但在此处收到 对象引用未设置为对象的实例 错误 ListItem currentCheckBox chkbx Items FindByValue rdr MemberID ToSt
  • 如何使用 C# 隐藏/显示进程?

    在执行我的程序时 我想隐藏 最小化 Microsoft 语音识别应用程序 替代文本 http img143 imageshack us img143 9380 minimize png http img143 imageshack us i