系统托盘访问

2024-01-01

有没有办法(在 C# 中)访问系统托盘? 我不是在谈论制作通知图标。 我想迭代托盘中的项目(我会猜测整个过程,但我不知道如何确定托盘中实际有什么,什么只是一个过程),并且还用我自己的图标来表示这些项目用户界面。


您对 Win32 互操作有何看法?我发现C/Win32 代码 http://skyscraper.fortunecity.com/gigo/311/winprog/shellico.txt这可能对你有用。 (实际上,这看起来是一个有趣的问题,所以我可能会尝试自己解决它,但不是现在)。

神奇的是他获得了系统托盘窗口的句柄:

NotifyWnd = FindWindowEx(SysTray, 0, "TrayNotifyWnd", 0);

然后他在消息泵上设置了一个钩子:

hHook=SetWindowsHookEx(WH_CALLWNDPROC,HOOKPROC(MsgProc),
         hInstance,dwExplorerThreadId);

然后在消息泵钩子回调期间,他获得对有关窗口的一些指针数据的引用:

TWDataT* twd=(TWDataT*)GetWindowLong(NotifyWnd,0);

谜团就在于他的循环:

      pTWIconDataT p=COMCTL32_332(twd->iconsInfo,i);

COMCTL32_332 是用 GetProcAddress 定义的,并指向 Comctl32.dll 的序数 332 - 根据我使用 Dependency Viewer 的检查,那就是DPA_GetPtr http://msdn.microsoft.com/en-us/library/bb775617.aspx,它从动态指针数组中获取数据。我不熟悉幕后发生的事情,但这似乎并非完全不可能。

我自己会尝试一下,但希望这是一个让您开始的好地方。 :)

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

系统托盘访问 的相关文章

  • StackExchange Redis 删除所有以以下开头的键

    我有一个格式的密钥 Error 1 Error 24 Error 32 Using StackExchange Redis 我该怎么办KeyDelete在与格式匹配的所有键上Error 在另一个答案中我看到了 LUA 脚本 EVAL ret
  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • 二叉树和快速排序?

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

    我正在尝试创建一个程序 当某个 wifi 网络在范围内时 该程序会连接到该网络 即使已经连接到另一个 wifi 也是如此 我在用着简单Wifi https github com DigiExam simplewifi 基本上效果很好 除了在
  • 使用c#在mac上启动外部进程

    我成功地使用 System Diagnostics Process Start 在 Windows 上启动我的外部单声道可执行文件 然而在mac上却失败了 我没有收到任何错误 只是什么也没发生 我尝试按以下方式进行操作 System Dia
  • 仅使用一个 #include 表达式一次包含多个头文件?

    是否有任何表达式可以使语法一次包含多个标头 而无需为每个新文件编写 include 表达式 例如 include
  • .Net 支持柯里化泛型吗?

    假设我们有一个嵌套的泛型类 public class A
  • 将 JavaScript 引擎嵌入到 .NET 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 只是想知道是否有人尝试过将任何 js 引擎嵌入并实际集成到 net 环境中 我可以找到并实际使用 经过L
  • 现代编译器的 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
  • 对象变空似乎是 Hangfire 中的反序列化问题

    Hangfire 似乎无法反序列化我的原始版本Scheduler对象及其所有状态 我正在调用其 Execute 方法BackgroundJob Enqueue 如下所示 Scheduler new FileInFileOut FileIn
  • 批量插入,asp.net

    我需要获取与会员相对应的 ID 号列表 在任何给定时间处理的数量可能在 10 到 10 000 之间 我可以毫无问题地收集数据 解析数据并将其加载到 DataTable 或任何内容 C 中 但我想在数据库中执行一些操作 将所有这些数据插入表
  • 括号内声明的对象的范围

    如果我声明一个这样的对象 void main myclass objectA anotherclass true true 0 即 我通过直接调用后者的构造函数来创建一个 objectA 和另一个对象 anotherclass anothe
  • TCP/IP 传输期间套接字数据损坏

    当我通过预连接的 TCP IP 套接字发送数据时 我发现数据已损坏 Example Station1 正在向 Station2 发送数据 我已经在发送之前 在 S1 和接收之后 在 S2 打印了数据 以下是消息 S1 发送的数据是ACKS2
  • 如何检查日期时间是否发生在今天?

    有没有比下面的代码更好的 net 方法来检查 今天 是否发生了 DateTime if newsStory WhenAdded Day DateTime Now Day newsStory WhenAdded Month DateTime
  • 使用属性和性能

    我正在优化我的代码 我注意到使用属性 甚至自动属性 对执行时间有深远的影响 请参阅下面的示例 Test public void GetterVsField PropertyTest propertyTest new PropertyTest
  • C 中的等效 plpgsql 触发器

    我有一个 PostgreSQL 9 0 服务器 并且在某些表上使用继承 因此我必须通过如下触发器模拟外键 CREATE OR REPLACE FUNCTION othertable before update trigger RETURNS
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • 为什么在一行中使用这个 C++ 函数两次会导致编译错误?

    我在尝试在 Visual C 2010 中实现智能相等测试宏类型模板函数时遇到了一些麻烦 该函数与VS 中关于模板函数默认参数的错误 https stackoverflow com questions 10343177 why do i g
  • 在派生类中访问基类变量

    class Program static void Main string args baseClass obj new baseClass obj intF 5 obj intS 4 child obj1 new child Consol

随机推荐

  • 使用 Webpack 构建简单网站

    我第一次尝试让 webpack 工作 并且是在一个简单的网站上进行的 但是无论我尝试什么 它都无法正常工作 我已经坚持了好几个星期了 我认真地尝试了每一条线索 但都无济于事 我只需要一个对 webpack 没有问题的人来查看我的代码并提供有
  • 使用 NumberFormat 将带有货币符号的数值转换回十进制

    我想将以货币符号为前缀的可能的十进制值转换为仅数字值 例如 该值可以是以下任何一个 String s1 32 847 676 65 String s2 3 456 00 String s3 831 209 我希望转换后的结果是这样的 328
  • (*SKIP) 或 (*F) 在正则表达式上如何工作?

    我正在学习正则表达式的高级用法 并注意到许多帖子使用 SKIP or F in it 我发布了一个问题 其想法是匹配没有的行yellow但有blue除非brown存在于蓝色之后 正确的答案是 yellow SKIP F bblue b br
  • 使用 jQuery 双击表格行时打开链接

    我有一个table看起来像这样 table thead tr class tablehead th Test th tr thead tbody tr class tablecell td td tr tbody table 我希望能够双击
  • jQuery + CSS。如何计算innerHTML 的高度和宽度?

    我有一个使用 jQuery 的 Web 项目的典型父子 div 层次结构 子CSS没有高度 这允许它根据innerHTML的高度扩展和收缩 我以编程方式将 HTML 标记填充到子项的 innerHTML 属性中 我想在孩子有标记后将父母的高
  • Android 谷歌地图标记放置

    在我的 Android 应用程序中 我需要将标记放置在地图上的确切位置 我在地图上固定了一个标记 位置为 51 507351 0 127758 伦敦 我使用以下代码来完成这项工作 googleMap addMarker new Marker
  • XSLT 选择具有命名空间的节点

    我正在尝试使用 xslt 从 xml 中获取几个标签的值 我的列表 xml a a
  • 在 SQL Server 2012 中使用 TO_DATE

    我有个问题 当我在 SQL Server 2012 中执行此 SQL 语句时 TO DATE 2011 11 09 00 00 00 YYYY MM DD HH24 MI SS 我收到错误 TO DATE 不是函数集成可识别的名称 解决办法
  • mongodb 等待连接

    我下载了 mongodb 4 4 创建了一个data db我的文件夹里面C 驱动器 然后我从 bin 文件夹运行 mongod 然后打开另一个 cmd 导航到 bin 文件夹 然后输入命令mongo 平常的东西 问题是 即使这样做之后 我仍
  • 在 has_many :through 关系中添加和删除

    从 Rails 关联指南中 他们使用 has many through 演示了多对多关系 如下所示 class Physician lt ActiveRecord Base has many appointments has many pa
  • JSF 2.0 h:ui 内的 inputText:repeat

    我应该如何更改以下示例 在提交 commandButton 后 更改 inputText 中的值不会消失 我明白为什么会发生这种情况 但我不知道如何解决
  • ASP.NET 应用程序中需要定时炸弹

    我们开发了一个定制的 ASP NET 应用程序 供在客户的 Intranet 上使用 看来他们不太可能为此付出代价 所以我们的老板希望我们引入一个定时炸弹 编辑 请仅提供技术答复 这是否是一个好 或合法 想法是 CEOoverflow co
  • .aspx 与 .ashx 主要区别

    aspx 和 ashx 页面之间有什么区别 当我需要处理从代码调用并返回响应的请求时 我现在使用 ashx 但我想要一个更技术性的答案 Page是一个特殊的案件处理者 通用 Web 处理程序 ashx 基于扩展的处理器 是所有没有 UI 且
  • 如何仅显示带有facet的极地ggplot的部分绘图区域?

    假设有一个极坐标数据集要绘制为扇形 library ggplot2 library reshape2 data lt melt matrix rnorm 1000 nrow 20 data type lt 1 2 data Var1 lt
  • 适用于 Android 的商业 IDE+模拟器?

    我是一个 Android 新手 但在过去的几周里 我在 2 台 PC 上安装了 JDK Eclipse Android SDK 两次安装都花了一天的时间进行调整和处理配置问题 并使不同的部分一起发挥作用 通常都是 PITA 在一台电脑上 我
  • 按超出范围的索引分配值到列表[重复]

    这个问题在这里已经有答案了 mylist a apple b ball c cat mylist 6 value print mylist Error IndexError list assignment index out of rang
  • Chainlink-以“bytes32”形式获取 API 时出现问题

    我一直在学习 chainlink API 并尝试修改example https docs chain link docs advanced tutorial 从 Chainlin 的文档中获取byets32来自 API 的值 该示例的原始代
  • C++ 优化矩阵乘法微内核中的 L1 缓存使用

    我的任务是实现一个优化的矩阵乘法微内核 用于计算C A B在 C 中 从以下代码片段开始 我遇到了一些违反直觉的行为 我需要一些帮助来更好地理解正在发生的事情 void mat mul double A double B double C
  • 关于服务和存储库的领域驱动设计问题

    我有两个实体用户和课程 用户可以参加多门课程 这使得关系成为一对多 但一门课程可以由许多学生选修 因此它具有多对多的关系 现在 我需要为用户注册课程 我的用户实体有 public void AddCourse Course course i
  • 系统托盘访问

    有没有办法 在 C 中 访问系统托盘 我不是在谈论制作通知图标 我想迭代托盘中的项目 我会猜测整个过程 但我不知道如何确定托盘中实际有什么 什么只是一个过程 并且还用我自己的图标来表示这些项目用户界面 您对 Win32 互操作有何看法 我发