获取控制台句柄

2024-01-02

如何获取外部应用程序的控制台句柄?

我有一个程序作为控制台运行。我有一个第二个程序将调用 GetConsoleScreenBufferInfo,但为此我需要第一个程序的控制台句柄。给定第一个程序的 HWND 是否有可能我可以获得它的控制台句柄?


如果您只有 HWND,请致电获取窗口线程进程ID http://msdn.microsoft.com/en-us/library/ms633522(VS.85).aspx从给定的 HWND 获取 PID。之后,致电连接控制台 http://msdn.microsoft.com/en-us/library/ms681952(v=VS.85).aspx将您的调用进程附加到给定进程的控制台,然后调用获取标准句柄 http://msdn.microsoft.com/en-us/library/ms683231(VS.85).aspx获取新连接的控制台的 STDOUT 句柄。您现在可以致电获取控制台屏幕缓冲区信息 http://msdn.microsoft.com/en-us/library/ms683171(v=VS.85).aspx使用该手柄。

请记住进行清理,通过调用 FreeConsole 释放控制台的句柄。

Edit:这是与该帖子相关的一些 C++ 代码

#include <sstream>
#include <windows.h>

// ...
// assuming hwnd contains the HWND to your target window    

if (IsWindow(hwnd))
{
    DWORD process_id = 0;
    GetWindowThreadProcessId(hwnd, &process_id);
    if (AttachConsole(process_id))
    {
        HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
        if (hStdOut != NULL)
        {
            CONSOLE_SCREEN_BUFFER_INFO console_buffer_info = {0};
            if (GetConsoleScreenBufferInfo(hStdOut, &console_buffer_info))
            {
                std::stringstream cursor_coordinates;
                cursor_coordinates << console_buffer_info.dwCursorPosition.X << ", " << console_buffer_info.dwCursorPosition.Y;
                MessageBox(HWND_DESKTOP, cursor_coordinates.str().c_str(), "Cursor Coordinates:", MB_OK);
            }
        }
        else
        {
            // error handling   
        }   
        FreeConsole();   
    }
    else
    {
        // error handling   
    }   
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取控制台句柄 的相关文章

随机推荐

  • 无法读取包名称“:generateDebugBuildConfig”

    我遇到的问题是我的构建无法读取我的包名称 我已经检查了所有内容 看起来不错 但我不知道为什么找不到包裹 它指向的目录AndroidManifest xml是错的 Users tonystark Documents GitHub roboap
  • 我可以将环境变量从 Gitlab .gitlab-ci.yml 传递到 React 应用程序吗?

    我正在尝试使用 gitlab CI 管道动态设置环境变量 我想要实现的是根据我要部署到的阶段 阶段 产品 注入正确的 API 密钥和 URL 在我的 React 应用程序中 我使用访问变量process env REACT APP APPS
  • Spark 中的纱线客户端模式是什么?

    Apache Spark最近更新了版本至0 8 1 其中yarn client模式可用 我的问题是 yarn client 模式的真正含义是什么 在文档中它说 使用yarn client模式 应用程序将在本地启动 就像在本地 Mesos 独
  • 我无法接收有关电池状态变化的广播?

    我遇到了与这篇文章完全相同的问题 电池广播接收器不工作 https stackoverflow com questions 8582539 battery broadcast receiver doesnt work 但似乎没有人回答这个问
  • 当我按下 Android 设备的 home 按钮时,出现异常为“保存状态失败:活动片段已清除索引:-1”

    当我按下 Android 的主页按钮并开始新活动时 我遇到了一些奇怪的问题 我的堆栈跟踪如下 05 13 18 06 21 182 E FragmentManager 5674 Failure saving state active Fra
  • 有没有办法在 Python 中往返转储 YAML 时保持顺序?

    我正在尝试从 YAML 文件加载一些数据并将其放回 services dc01 sw 06 50001 servers ip 10 255 206 12 port 50001 weight 100 ip 10 255 206 13 port
  • 如何在共享托管环境中实现ASP.Net MVC网站的后台处理?

    我正在使用 ASP Net MVC 开发我的第一个 Web 应用程序 我现在的情况是希望有一个后台服务来处理应用程序外部的状态通知 这与 stackoverflow 上的声誉 徽章系统不同 处理这样的事情最好的方法是什么 在像我正在使用的
  • Anylogic 中的时间分布和处理所花费的时间

    我正在研究生产模型 其中原材料的输入按小时计算 我运行该模型 8 小时 1 个班次 所以基本上有 16 小时资源闲置 当我没有使用计划部分并运行模型 8 7 小时 56 小时 时 每个作业的时间测量都很好 但现在当我计划输出时 它也包括空闲
  • 用户没有访问该对象的权限。 Firebase 存储 Android

    我是 firebase 存储的新手 为了学习它 我制作了一个简单的应用程序 其中有一个按钮和一个ImageView 当我点击按钮时 会出现一张图片 from drawable 显示在 ImageView 上 我还编写了在Firebase上上
  • 部署 Gen2 Cloud Function 时出现权限被拒绝错误

    我们根据给定的需求开发了云功能 并使用第一代进行了初步验证 一切顺利 但需要进行的修改很少 因此需要额外的处理时间 因此我们必须切换到 gen2 以下是 gcloud 函数部署命令 gcloud functions deploy gen2
  • ServiceStack Swagger UI 和 API 版本号

    有没有办法将版本号输入到 swagger UI 中 那么我们可以让开发者知道每个部署是什么版本吗 这在最新版本的 ServiceStack 中是可能的 您只需在 AppHost 中设置 ServiceStack API 版本即可 publi
  • 根据内容将输入拆分为多个输出?

    假设有一个如下所示的文件 xxxx aa whatever yyyy bb whatever zzzz aa whatever 我想将其分成 2 个文件 其中包含 first xxxx aa whatever zzzz aa whateve
  • 如何迭代 getElementByClassName 返回

    我读过几篇关于 GetElementsByClassName 的文章 但我很难理解如何迭代它返回的内容 我正在编写纯 JavaScript 代码 以便当用户滚动时我的导航栏将采用 固定 位置 但是 当发生此更改时 导航栏列表项需要更改格式
  • 如何获取jenkins管道插件作业的工作区(WorkflowRun对象java API)

    在java API中 我可以从Run java对象访问工作空间路径 直到今天 所有对象都是 hudson model AbstractBuild 的实例 hudson model AbstractBuild getWorkspace hud
  • 内存屏障/栅栏的开销

    我目前正在编写 C 代码 并在代码中使用大量内存屏障 栅栏 我知道 MB 告诉编译器和硬件不要重新排序围绕它的写入 读取 但我不知道这个操作对于处理器在运行时有多复杂 我的问题是 这种屏障的运行时开销是多少 我用谷歌没有找到任何有用的答案
  • pymongo:删除重复项(映射减少?)

    我确实有一个包含多个集合的数据库 总共约 1500 万个文档 文档如下所示 简化 Text blabla ID 101 Text Whuppppyyy ID 102 Text Abrakadabraaa ID 103 Text olalal
  • Gorm 一对多搜索

    有以下问题 我有 Bookmaker 和 Users 域类 一个博彩公司有许多用户 class Bookmaker static hasMany users User 并且 User 域类不包含对 Bookmaker 的引用 我的目标是创建
  • 来自 JSON 字符串的打字稿“enum”

    有没有办法让 TypeScript 枚举与 JSON 中的字符串兼容 例如 enum Type NEW OLD interface Thing type Type let thing Thing JSON parse type NEW al
  • Python 3 中 str.translate 的自定义表

    如果我运行这段代码 s translate str maketrans as dfg 1234 qw 我会得到 ValueError string keys in translate table must be of length 1 有没
  • 获取控制台句柄

    如何获取外部应用程序的控制台句柄 我有一个程序作为控制台运行 我有一个第二个程序将调用 GetConsoleScreenBufferInfo 但为此我需要第一个程序的控制台句柄 给定第一个程序的 HWND 是否有可能我可以获得它的控制台句柄