获取任务栏句柄

2024-02-15

是否有 WinAPI 函数来检索任务栏的句柄?

目的是确定任务栏停靠设置(ABE_LEFT、ABE_RIGHT、ABE_BOTTOM、ABE_TOP)。功能SHAppBarMessage需要任务栏句柄来检索对接信息。除非有另一种方法可以确定任务栏停靠设置而不需要手柄?

我知道这种方法可以正常工作,但我不确定它是否适用于所有 Windows 版本:

HWND taskBar = FindWindow("Shell_TrayWnd", NULL);

That appears to be a documentation bug. You don't need to provide a window handle in the APPBARDATA https://msdn.microsoft.com/en-us/library/windows/desktop/bb773184.aspx structure for the ABM_GETTASKBARPOS https://msdn.microsoft.com/en-us/library/windows/desktop/bb787949.aspx when calling SHAppBarMessage https://msdn.microsoft.com/en-us/library/windows/desktop/bb762108.aspx1).

以下代码正确返回任务栏的位置(在 Windows 10 x64 上测试):

#include <shellapi.h>
#pragma comment(lib, "Shell32.lib")
#include <stdexcept>

RECT GetTaskbarPos() {
    APPBARDATA abd = { 0 };
    abd.cbSize = sizeof( abd );
    if ( !::SHAppBarMessage( ABM_GETTASKBARPOS, &abd ) ) {
        throw std::runtime_error( "SHAppBarMessage failed." );
    }
    return abd.rc;
}

更新:问题实际上是在询问对接枚举值。这也被返回:

#include <shellapi.h>
#pragma comment(lib, "Shell32.lib")
#include <stdexcept>

UINT GetTaskbarDockingEdge() {
    APPBARDATA abd = { 0 };
    abd.cbSize = sizeof( abd );
    if ( !::SHAppBarMessage( ABM_GETTASKBARPOS, &abd ) ) {
        throw std::runtime_error( "SHAppBarMessage failed." );
    }
    return abd.uEdge;
}

1) It would be awkward if you needed the well hidden window handle of the taskbar to send this message. If you had the window handle already, you could simply call GetWindowRect https://msdn.microsoft.com/en-us/library/windows/desktop/ms633519.aspx instead.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取任务栏句柄 的相关文章

随机推荐

  • 挂起互操作 COM 对象的问题

    我有一个应用程序 它使用 COM 互操作来创建一个电子表格 该电子表格在客户端计算机上的 Excel 中打开 但是 如果我查看任务管理器 当用户关闭 Excel 时 EXCEL exe 进程并不总是结束 如果我保存工作簿并以编程方式关闭 E
  • 使用 Netty 的异步 HTTP 客户端

    我是 Netty 新手 仍在努力寻找自己的方法 我正在寻找创建一个异步工作的 http 客户端 http的netty例子只展示了如何等待IO操作 并没有展示如何使用添加监听器 所以最近几天我一直在努力解决这个问题 我正在尝试创建一个请求类
  • jQgrid 工具栏搜索 - 从任何列动态删除搜索框

    我正在使用 jqgrid 版本 4 4 4 现在我面临一个与工具栏搜索相关的问题 正如我在标题中提到的 我想从任何列中删除工具栏搜索的搜索框 动态地 在渲染网格期间或之后 我用谷歌搜索 但没有找到关于我的这个问题的任何相关解决方案 我用了s
  • 列表中 dict 对象的元素顺序

    我从 HOSTS 获得以下列表 HOSTNAME H1 H2 H3 SW VERSION 7 2 2 5 2 2 6 2 2 OSPF NEIGHBOR 10 1 1 1 10 1 1 2 10 1 1 3 我将它们转换为字典对象列表 如下
  • PayPal REST 订阅 API 未在订单摘要中显示价格

    我正在沙箱环境中测试用于订阅的 PayPal REST API 并注意到 当转到创建协议后返回的批准 URL 时 页面左侧的订单摘要窗格下没有显示价格 显示描述 但没有价格 税等 计划 ID 将传递给创建协议的调用 其中包含我希望作为用户在
  • 是否有 FAT FS 驱动程序希望引导扇区的字节 508 和 509 为零?

    在实施的同时我自己的引导扇区加载程序从 2012 年开始 https hg ulukai org ecm ldosboot rev 17884e6352e6 l1 255我确保将偏移量 508 和 509 处的字节清零 这些是标准 512
  • android 中是否有与 iphone 中相同的默认谷歌地图标记?

    我在我的 android 应用程序中使用谷歌地图 我想表示用户的当前位置默认谷歌地图标记类似于 iphone 中的地图标记 目前我使用 png 图像来表示当前位置 但需要将其替换为默认地图标记 如果 Android 中存在 如果有人知道 请
  • 如何在 Groovy 中检查该对象是列表、集合还是数组?

    问题就像标题一样简单 如何在 Groovy 中检查该对象是列表 集合还是数组 但找不到简单的方法来检查它 有任何想法吗 A List is a Collection 因此检查并不相互排斥 def foo boolean isCollecti
  • 在 silverlight 中使用自动完成框?

    我当前正在 Telerik 的 radgrid 控件中显示数据 我想在名为 Name 的列上添加一个自动文本框 我怎样才能做到这一点 我的 radgrid 仅显示数据 我希望每当用户输入文本框时都会弹出一个名称列表 就像在 stackove
  • 如何在WPF中制作反射效果? (来自代码)

    我需要在 WPF 中有一些镜像对象 我有一个包含一些内容的画布 我需要 50 个视觉克隆 如果我修改源上的某些内容 则应该在这些克隆中更新它 我知道通过将 VisualBrush 的 Visual 绑定到元素在 XAML 中很容易做到 但似
  • 如何在 Spock 集成测试中启动 Spring Boot 应用

    运行集成测试的最佳方法是什么 例如 IntegrationTest http docs spring io spring boot docs 1 1 0 BUILD SNAPSHOT api org springframework boot
  • 理解晦涩难懂的 JavaScript 代码

    我在以下位置找到了这段代码HTML 页面的部分 这是一位同事制作的 但他不再在这里工作了 function window PhotoSwipe document addEventListener DOMContentLoaded funct
  • 如何使用 actix-web 高效地提供文件

    In Actix 网络 可以通过在处理程序中返回来提供文件 HttpResponse Ok streaming file 但在这儿 file必须实施Stream
  • 在 Linux 上安装 Eclipse - 未设置 GtkWindow 屏幕

    我安装的是32位Linux版本面向 Java EE 开发人员的 Eclipse http www eclipse org downloads packages eclipse ide java ee developers indigosr1
  • SqlDataReader 性能列表 或List

    我一直在尝试尽可能快地从 SQL 服务器读取数据的方法 并且发现了一个有趣的发现 如果我将数据读入List
  • ACCESS 2010 SQL — 在 SELECT TOP 子查询字段上使用 WHERE IN

    我希望这个查询能够告诉我 2013 年支出前 10 名的公司在 2012 年的支出情况 SELECT Company Sum SPENDING FROM Data WHERE Company IN SELECT TOP 10 Company
  • 使用 PHP 5.4 中的 session 和 codeigniter 上传进度条

    参考这个教程 使用 php 跟踪上传进度 http www sitepoint com tracking upload progress with php and javascript 我想让它在 Codeigniter 中工作 我还没有开
  • 我的路线返回一个空白视图(当我查看源代码时没有 html)

    I am 全新到 Ruby on Rails 我一直在尝试设置一个简单的默认路由并使其工作 当我尝试运行我的应用程序时 我得到一个空白结果 如果我查看源代码 那里什么也没有 这是相关文件 不确定我是否遗漏了一些有用的文件 应用程序 配置 r
  • 通过“int”、“least”和“fast”非固定宽度类型 C/C++ 允许编译器优化

    显然 当大小很重要时 应该使用固定宽度的整数类型 然而 我读到 Insomniac Games 风格指南 当大小不重要时 int 应该是循环计数器 函数参数 返回代码 等的首选 给出的理由是固定宽度类型可以排除某些编译器优化 现在 我想区分
  • 获取任务栏句柄

    是否有 WinAPI 函数来检索任务栏的句柄 目的是确定任务栏停靠设置 ABE LEFT ABE RIGHT ABE BOTTOM ABE TOP 功能SHAppBarMessage需要任务栏句柄来检索对接信息 除非有另一种方法可以确定任务