问题标签 [registerhotkey]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
10869 浏览

c# - 更改其他进程的键盘布局

我正在用 C# 编写一个在后台运行的程序,它允许用户使用热键在活动窗口中切换键盘布局。(Windows 仅支持CTRL+SHIFTALT+ SHIFT

我正在使用 RegisterHotKey 来捕捉热键,它工作正常。

问题是我找不到任何 API 来更改焦点窗口的键盘布局。

ActivateKeyboardLayout 和 LoadKeyboardLayout 只能更改调用线程的键盘布局。

有谁知道如何更改不同线程的键盘布局(语言栏的方式)?

0 投票
7 回答
35451 浏览

delphi - 找出哪个进程注册了全局热键?(Windows API)

据我所知,Windows 没有提供 API 函数来判断哪个应用程序注册了全局热键(通过 RegisterHotkey)。如果RegisterHotkey返回false,我只能发现一个热键被注册,而不是谁“拥有”热键。

在没有直接API的情况下,能有迂回的方式吗?Windows 维护与每个注册的热键关联的句柄——这有点让人抓狂,应该没有办法获得这些信息。

可能不起作用的示例:发送(模拟)注册的热键,然后拦截 Windows 将发送给注册它的进程的热键消息。首先,我认为拦截消息不会泄露目标窗口句柄。其次,即使有可能,这样做也是一件坏事,因为发送热键会触发各种程序的各种潜在有害活动。

这并不重要,但我经常看到对此类功能的请求,并且我自己也是注册热键的应用程序的受害者,甚至没有在 UI 或文档的任何地方公开它。

(在Delphi工作,只是WinAPI的学徒,请善待。)

0 投票
1 回答
11416 浏览

c# - RegisterHotKeys 和全局键盘挂钩?

什么是RegisterHotKeys全局键盘挂钩,它们是如何工作的?

我想制作一个键来专注于我的应用程序的表单(当它最小化时),然后专注于一个文本框,所以从我读过的内容来看,我需要使用该RegisterHotKeys功能(这是满足我需求的更好解决方案),但我找不到我可以如何或在哪里选择我自己的键(只有一个键 - ESC),然后命令它专注于我的表单,然后是文本框。

0 投票
3 回答
893 浏览

c# - 如何以编程方式检测代码是否在共享 DLL 或 exe 中运行?

A 有一个 C# 类,它简化了全局热键的处理。此类使用 Win32-API 函数RegisterHotKey()来注册热键。

根据 MSDN,此函数在从应用程序调用时需要一个范围为 0x0000 到 0xBFFF 的 ID 值,从共享 DLL 调用时需要一个在 0xC000 到 0xFFFF 范围内的 ID 值。GlobalAddAtom()如果在 DLL 中运行,可用于获取 ID。

为了对类的用户隐藏这种区别,类本身应该决定在注册热键时要使用哪个 ID 范围。好吧,要做到这一点,该类必须能够检测其代码是在应用程序中运行还是在共享 DLL 中运行。

但是如何做到这一点?执行此操作的最佳 C#/.NET 方法是什么?

0 投票
4 回答
11559 浏览

c++ - 带有 WIN32 API 的全局热键?

我已经能够像这样设置本地热键

如何将热键设置为全局?即使我的窗口被隐藏,我也希望它在那里。

0 投票
1 回答
2657 浏览

c++ - 如何在我的 Win32 应用程序中捕获 CTRL + CTRL 按键?

我将如何捕获用户按Ctrl两次 ( Ctrl+ Ctrl) 全局。我希望能够隐藏我的应用程序窗口,然后在用户使用CtrlCtrl类似于 Google 快速搜索框的按键调用它时使其可见。用户可能将焦点放在不同的窗口上。我看过RegisterHotKey,但这似乎是为了MODIFIERS + character key除非我弄错了。

0 投票
3 回答
710 浏览

delphi - 编译所有项目热键

我在一个项目组中有两个项目共享相同的单元(大部分)。我使用这两个项目来测试我写的东西。

问题:当我更改两个项目都使用的单元并运行当前项目时,另一个使用该单元中的旧代码(因为它没有编译)。

我知道编译所有项目的唯一可能性是通过系统菜单(项目->构建所有项目)。

目前,当其中一个项目运行(使用 delphi 调试器)时,另一个项目的可执行文件被执行,但未编译。

如何使用热键编译两个项目(如Shift+F9用于一个项目)?

0 投票
1 回答
331 浏览

c - 自定义全局热键

我正在尝试为我的应用程序获取用户定义的全局热键。这是我的应用程序代码,

用户.rc

函数.cpp

主文件

此代码运行良好,仅当用户选择单个键并且当他选择多个组合键(如 CTRL + F8)时不起作用。

0 投票
2 回答
1590 浏览

c# - 即使 RegisterHotKey 返回 true,全局热键也不起作用

我需要一个处理全局热键的 activeX:Shift+B

当我从 IE 调用此 ActiveX 时,下面的代码应该执行此操作。

我看到结果RegisterHotKey为真,这意味着热键已经注册好。

但我没有看到任何消息到达 ThreadPreprocessMessage 方法。为什么?

0 投票
1 回答
7922 浏览

c# - 使用 RegisterHotKey 注册多个热键

我找到了这段小代码来注册一个热键:

它工作得很好,但我的问题是我想使用两个不同的快捷方式。我知道第二个参数是 id,所以我想我可以创建一个不同的 id 并在 WndProc 函数中添加一个新的 if 语句,但我不确定我将如何去做。

简而言之,我将如何创建第二个快捷方式?

谢谢,