如何在C++中将自定义项目添加到系统菜单?

2023-11-22

我需要枚举所有正在运行的应用程序。特别是所有顶部窗户。对于每个窗口,我需要将自定义项目添加到该窗口的系统菜单中。

我怎样才能在 C++ 中实现这一点?

Update.

我非常乐意为 Windows、MacOS 和 Ubuntu 提供解决方案(不过,我不确定 MacOS 和 Ubuntu 是否有“系统菜单”之类的东西)。


对于 Windows,获取顶级窗口的另一种方法(除了 EnumWindows,它使用回调)是获取桌面的第一个子窗口,然后检索其所有同级窗口:

HWND wnd = GetWindow(GetDesktopWindow(), GW_CHILD);
while (wnd) {
    // handle 'wnd' here
    // ...
    wnd = GetNextWindow(wnd, GW_HWNDNEXT);
}

至于获得system菜单,使用GetSystemMenu函数,第二个参数为 FALSE。这GetMenu其他答案中提到的返回normal窗口菜单。

但请注意,虽然将自定义菜单项添加到外部进程的窗口很容易,但响应该项目的选择却有点棘手。您要么必须向进程注入一些代码才能对窗口进行子类化,要么安装一个全局挂钩(可能是一个WH_GETMESSAGE or WH_CBT类型)来监控WM_SYSCOMMAND消息。

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

如何在C++中将自定义项目添加到系统菜单? 的相关文章

  • 使用 Html Agility Pack 获取 html 页面上的所有 div id

    如何使用 Html Agility Pack 获取 html 页面上的所有 div id 我正在尝试获取所有 id 并将它们放入一个集合中 p p div class myclass1 div div div div div div div
  • 全局变量不好

    好吧 读完这篇文章和一些示例后 我仍然不清楚全局变量的含义 那么你的类中的私有变量是全局的吗 http www c2 com cgi wiki GlobalVariablesAreBad http www c2 com cgi wiki G
  • 处理器关联组 C#

    我使用的是 72 核的 Windows Server 2016 我看到有两组处理器 我的 net 应用程序将使用一个或其他组 我需要能够强制我的应用程序使用我选择的组 我看到下面的代码示例 但我无法使其工作 我可能传递了错误的变量 我希望应
  • 使用 C 的另一个结构内的灵活长度结构数组

    你好 我正在尝试使用 C 来实现一个简单的结构 2 个盒子 每个盒子包含不同数量的颗粒 main 中传递的粒子的确切数量 我写了以下代码 typedef struct Particle float x float y float vx fl
  • 如何配置 Ninject 来注入 NodaTime IClock

    在我的 NinjectConfigurator 中我有 container Bind
  • 二叉树和快速排序?

    我有一个家庭作业 内容如下 别生气 担心 我是not请你帮我做作业 编写一个程序 通过使用二分查找的快速排序方法对一组数字进行排序 树 推荐的实现是使用递归算法 这是什么意思 到目前为止 这是我的解释 正如我在下面解释的那样 我认为两者都有
  • 如何反序列化 XML 文档

    如何反序列化此 XML 文档
  • 有关shared_ptr的竞态条件示例

    为什么没有竞争条件代码片段 https godbolt org z nEYPYqdqK below include
  • 图片框、双击和单击事件

    我有一个奇怪的问题 我有一个图片框双击事件以及单击事件 问题是即使我双击该控件 也会引发单击事件 如果我禁用单击事件 则双击事件正在工作 这个问题已经在这里讨论过 https stackoverflow com questions 1830
  • R 包与 Rcpp 的链接错误:“未定义符号:LAPACKE_dgels”

    我正在创建一个 R 包 lapacker 以使用 R API 头文件 R ext Lapack h 为 R 提供和使用的内部 LAPACK 库 仅具有双精度和双复数 提供 C 接口 源代码 https github com ypan1988
  • 为什么 xcode IDE 认为 `friend` 是保留字

    我一直在开发一个个人项目 并在我创建的新类中包含以下代码 property readonly getter isFriend BOOL friend 它似乎没有任何问题 当我构建它时 它可以编译得很好 但是当我们在xcode IDE看起来像
  • 仅使用一个 #include 表达式一次包含多个头文件?

    是否有任何表达式可以使语法一次包含多个标头 而无需为每个新文件编写 include 表达式 例如 include
  • 将两个垂直滚动条相互绑定

    我在控件中有两个 TextBox 并且它们都有两个 VerticalScrollBar 我想在它们之间绑定 VerticalScrollBars 如果一个向上 第二个也会向上等等 如果可以的话我该怎么做 Thanks 不是真正的绑定 但它有
  • 我想找到 C# 代码中所有后面没有括号的 if 语句。通过正则表达式

    我想找到所有if声明和for后面没有大括号的语句 当你在一个文件中写入一行时if声明您大多不会将其括在大括号中 所以我想找到所有这些if and for声明 请帮忙 就像我想捕捉这个声明 if childNode Name B return
  • 现代编译器的 C++ 中“memset”功能的状态

    Context 不久前 我偶然发现了 Alexandrescu 在 2001 年发表的 DDJ 文章 http www ddj com cpp 184403799 http www ddj com cpp 184403799 它是关于比较将
  • 如何在C++中列出Python模块的所有函数名称?

    我有一个 C 程序 我想导入一个 Python 模块并列出该模块中的所有函数名称 我该怎么做 我使用以下代码从模块中获取字典 PyDictObject pDict PyDictObject PyModule GetDict pModule
  • 向客户端发送状态码 500 时页面未呈现

    我有一个页面 通用处理程序 我想在该页面上向客户端返回状态代码 500 以指示出现问题 我这样做 Response StatusCode 500 Response StatusDescription Internal Server Erro
  • 使用属性和性能

    我正在优化我的代码 我注意到使用属性 甚至自动属性 对执行时间有深远的影响 请参阅下面的示例 Test public void GetterVsField PropertyTest propertyTest new PropertyTest
  • 为什么在一行中使用这个 C++ 函数两次会导致编译错误?

    我在尝试在 Visual C 2010 中实现智能相等测试宏类型模板函数时遇到了一些麻烦 该函数与VS 中关于模板函数默认参数的错误 https stackoverflow com questions 10343177 why do i g
  • C# 使用 .Equals() 比较两个 double

    我使用 ReShaper 当我用 比较两个双精度值时 它建议我应该使用 Math 具有公差的 ABS 方法 看 https www jetbrains com help resharper 2016 2 CompareOfFloatsByE

随机推荐

  • 散点图“最佳拟合”线的算法

    我正在使用 MSChart 控件用 C 编写一个小型应用程序来绘制 X 和 Y 数据点集的散点图 其中一些可能相当大 数百个数据点 想问是否有一个 标准 算法来绘制跨点的最佳拟合线 我正在考虑将 X 数据点划分为预定义数量的组 例如 10
  • C++程序崩溃时会自动释放内存吗?

    我在 Google C 编码标准中读到 Google 不使用异常 如果不使用异常 当程序发生错误时如何释放内存 例如 f 调用 g 如果 g 中出现错误 我应该释放 g 中分配的所有内存 然后对 f 调用异常 一旦 f 捕获异常 f 将释放
  • 随机化 Java 中读取的文本文件

    我正在尝试用 Java 读取一个文本文件 基本上是一组问题 有四个选择和一个答案 结构如下 question option a option b option c option d answer 我这样读起来没有问题 public clas
  • Maven 插件在构建过程中执行多次

    我有一个具有多个重叠配置文件的 Maven 项目 我想在每次构建开始时显示活动配置文件 所以我将以下内容放入pom xml
  • CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触摸视图

    我在 Android 中遇到以下错误 CalledFromWrongThreadException 仅 创建的原始线程 视图层次结构可以触摸其视图 当我尝试更新 Activity 中的 Textview 时 似乎会发生这种情况 更新 Tex
  • ResultSet getFetchSize() 似乎不起作用?

    我遇到了问题getFetchSize 功能 我只需要知道 SQL 查询是否返回零行 我尝试过这个简单的声明 if rs getFetchSize 0 System out println HEADLINE where rs是属于Result
  • 动态添加和删除表行 - Android

    我正在尝试从 TableLayout 中动态添加和删除行 布局在 xml 文件中定义 我能够成功删除一行 但是当我调用相应的 addView 命令时什么也没有发生 table TableLayout findViewById R id ta
  • 将 MySql 日期时间戳转换为 JavaScript 日期格式

    有谁知道我如何获取MySQLdatetime数据类型值 例如YYYY MM DD HH MM SS并解析它或将其转换为在 JavaScript 中工作Date 函数 例如 Date YYYY MM DD HH MM SS 谢谢你 这里给出的
  • php - ftp_get - 警告:ftp_get():打开 BINARY 模式数据连接

    我正在尝试编写一个从 FTP 服务器下载文件的脚本 它们都相当大 每个接近 2GB 该脚本开始运行 但最终因上述错误而终止 与大小有关吗 有没有解决的办法 这是代码
  • Docker RUN 不会保留文件

    我有一个 Docker 问题 它不持久通过 RUN 启动命令 这是我的 Dockerfile FROM jenkins latest RUN echo foo gt var jenkins home toto ls alh var jenk
  • Tomcat NioEndpoint - 运行套接字处理器时出错

    在Spring Boot生产应用中 偶尔会抛出以下异常 o a t u n NioEndpoint Error running socket processor java util NoSuchElementException No val
  • 如何为重叠的 x 轴标签替换新行?

    当在 x 轴上绘制长文本因子时 ggplot 的效果并不好 我想换一条新线 以便更清晰 因此下图中的红色标记标签应该向下一行 我在 中找到了这个问题的答案在这里评论但无法工作 代码是 scale x discrete labels func
  • 在Java中实现阻塞函数调用

    在 Java 中实现阻塞函数调用的推荐 最佳方法是什么 稍后可以通过另一个线程的调用来解除阻塞 基本上我想在一个对象上有两个方法 其中第一个调用会阻塞任何调用线程 直到另一个线程运行第二个方法 public class Blocker An
  • javascript 的 Promise、事件循环和作业队列

    考虑以下代码 function foo console log foo new Promise function resolve reject setTimeout function resolve RESOLVING 5000 then
  • OSMdroid 添加自定义图标到 ItemizedOverlay

    我正在使用 ItemizedIconOverlay 类 当前正在地图上显示事件以及具有相同默认图标的用户位置 如何更改每个叠加层的图标集 是否有类似于 google maps 示例的内容 drawable getResources getD
  • Keras:类型错误:无法使用 KerasClassifier pickle _thread.lock 对象

    import pandas as pd import numpy as np import matplotlib pyplot as plt dataset pd read csv Churn Modelling csv X dataset
  • 在选择框中重新填充日期

    我在 Rails 中创建了一个 date select 它有 3 个选择框 一个代表年份 一个代表月份 一个代表日期 2 月 31 日在他们身上是相当令人困惑的 我希望能够只让选择框包含有效日期 我的意思是 当您选择二月时 31 日 30
  • 重建/获取 PHP 函数的源代码

    我可以通过编程方式通过函数名称获取函数的源代码吗 Like function blah a b return a b echo getFunctionCode blah 是否可以 是否有任何 php 自描述函数可以重构函数 类代码 我的意思
  • 如何禁用 Android Studio 3.0 的即时运行

    进行一些更改后 我收到错误 会话 app 安装 APK 时出错 据一些人说 这是因为 Instant Run 在最新的Stable Android Studio 3 0上 在构建 执行 部署我没有任何 即时运行 选项 即使在设置搜索中进行了
  • 如何在C++中将自定义项目添加到系统菜单?

    我需要枚举所有正在运行的应用程序 特别是所有顶部窗户 对于每个窗口 我需要将自定义项目添加到该窗口的系统菜单中 我怎样才能在 C 中实现这一点 Update 我非常乐意为 Windows MacOS 和 Ubuntu 提供解决方案 不过 我