问题标签 [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 投票
1 回答
60 浏览

vb.net - 如何检查在VB中按下的键

我正在尝试制作一个需要您选择热键的程序,但您只能从我生成的代码中给出一个字符,因为我也希望能够设置 F9 之类的东西。我在这个网站上经历了一些,这是最接近我想要的。我正在使用 Visual Studio 2013。

这就是我到目前为止所得到的。

提前致谢。

0 投票
1 回答
467 浏览

c# - C# 应用程序中的 Windows 热键

嗨,我正在开发一个 C# Windows 应用程序,该应用程序在应用程序外部使用 CTRL+A 和 CTRL+Z 等组合键(在后台运行)。

我尝试RegisterHotKeys了教程,但我有一个问题。当按下 CTRL+A 时,只会执行我的方法,并且永远不会执行 Windows 默认操作。我想执行第一个 Windows 操作,并且仅在该操作之后执行该键的方法。

例如:

下面的一些代码:

我需要尽快解决。谢谢你!

0 投票
0 回答
55 浏览

.net - 如何对隐藏程序使用的热键进行编程

我再次请求帮助!

我希望能够注册从隐藏表单运行的多个热键。当按下 ALT+UPKEY 时,下面示例程序的热键会切换第二种形式。现在它可以正常运行,但是当我取消注释隐藏程序的代码时,热键不再起作用。任何人都知道我在哪里出错了,或者可能知道如何从隐藏程序中切换第二个表单?与往常一样,提前感谢您的帮助。

0 投票
1 回答
725 浏览

c# - 如何通过asp.net检查应用程序是否安装在我的Windows中?

谁能指导我如何使用asp.net检查应用程序(任何Windows软件)是否安装在Windows客户端机器中。我已经尝试过注册但由于安全问题而无法访问它们。还有其他方法吗?.

0 投票
0 回答
613 浏览

vb.net - 带有 2 个修饰符的 vb.net 热键注册

我正在做一个需要为其注册热键的项目,任何我遇到的问题都试图弄清楚如何向热键注册器添加另一个字母修饰符。例如,CTRL+SHIFT、A+B。截至目前,我正在运行的代码有效,但它只接受一个字母修饰符。谁能告诉我哪里出错了?我希望它就像添加“And”操作符或“+”来将其连接为字符串一样简单。这是我所拥有的一个例子。

就像我说的,到目前为止,这有效,CTRL + SHIFT,A。我想做的是修改它以接受额外的修饰键,如CTRL + SHIFT,A + B。预先感谢您的帮助!

0 投票
1 回答
117 浏览

c# - RegisterHotKey 阻止文本框接收输入

TL;DR - 想要在不干扰其他应用程序读取键盘输入的情况下检测全局热键。RegisterHotKey 会中断常规输入,所以这是不行的。

你好,谢谢你的时间,

我最近一直在摆弄 WPF,试图边走边学,并决定做一个小项目来帮助我更快地学习。

我遇到了这个问题,我想说,这并不是一个完全正确的问题,更像是一个逻辑矛盾。

我一直在做的是注册全局按键。当我的窗口是顶部窗口或突出显示另一个窗口时,请注册 Windows 上的每个按键。我一直在使用 RegisterHotKey 函数,如果我理解正确,它会告诉计算机以不同的方式解释键盘输入。当此应用程序在后台打开时,这使我无法像往常一样使用键盘。

我所做的每一次搜索都是空的,它们都将我引向 RegisterHotKey,这在我的情况下可能不是正确的解决方案。我想阅读全局按键,同时仍保持相同的旧键盘输入。

即使是关于如何做到这一点的轻微建议也将不胜感激。

0 投票
1 回答
13 浏览

function - 是否可以将键更改为 java 中的函数?

在 java 和其他语言中,% 用于模数。有没有办法设置一个符号,比如“~”来表示一个函数,例如阶乘?因此,如果您键入 ~15,它将计算 15!

0 投票
0 回答
905 浏览

c# - 如何在 user32.dll 中禁用系统热键?

如果相关,我正在用 C# 编码。

我正在尝试禁用信息亭应用程序的系统热键。这里使用的代码来自:https ://www.codeproject.com/kb/cs/kiosk_cs.aspx?display=print

此人:如何在单击鼠标左键时禁用 Alt 键、Control 键和 Shift 键的按下/按住似乎已成功使用此方法在 Windows 上禁用Alt + F4 。然而,她没有明确说明她使用的是哪个版本的 Windows,只是说其中一个命令在 W8 中不起作用。

不懂代码的人教程:https ://www.youtube.com/watch?v=qQWqGOaZiFI


我尝试过这个。

RegisterHotKey(this.Handle, int 1, (int)USE_ALT, (int)Keys.F4);

^虽然一直失败。

Marshal.GetLastWin32Error().ToString()

当 ^ 运行时,它返回错误代码"1400"

错误枚举:https ://msdn.microsoft.com/en-us/library/windows/desktop/ms681385(v=vs.85).aspx 。这表明这是“无效窗口句柄”的结果。. 我不知道为什么这是因为“Alt + F4”关闭了当前选定的窗口。我很确定这就是FindWindow(string cls, string wndwText)回报。

我在以下位置添加了“SetLastError = true”

[DllImport("user32.dll", SetLastError = true)] private static extern int RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);

现在,注册“Alt + F4”返回“1409”,这意味着“热键已注册”。这正是重点。它已经注册,对于这个 kiosk 应用程序,我需要暂时禁用它。我对此的研究表明我需要使用 user32.dll 来创建钩子。这正是我正在做或试图做的事情。

我错过了什么吗?

我仍然需要一种可靠的方法来阻止 Alt + F4 以及其他系统热键。但是其他热键:CTRL+W、CTRL+N、CTRL+S、CTRL+A、CTRL+C、CTRL+X、CTRL+V、CTRL+B、CTRL+F 和 CTRL+H 在 Windows 上已成功被阻止10 和 8.1。


有用的信息

  • 值得注意的是,这段代码是在 W8.1 上编译(构建 > 发布)、安装和运行的。Alt + F4被成功阻止......不知何故。但是,其他两个系统热键Alt + TabHome + Up注册失败的原因相同:"1409" - "Hot key is already registered"
  • 在 W10 上以 W8 兼容模式运行不会给我与 W8.1 相同的结果。
  • 我正在管理员模式下运行该应用程序。
  • Alt + F4 只是我要禁用的众多系统热键之一。它不是唯一的。
0 投票
0 回答
105 浏览

custom-controls - 用于插件的 Enterprise Architect 自定义热键

我目前正在开发 Enterprise Architect 插件,我确实需要使用一些自定义热键来满足用户偏好。通过使用本文中的功能,它可以正常工作:https ://community.sparxsystems.com/community-resources/805-triggering-add-in-functionality-with-custom-hotkeys-in-enterprise-architect ,但是有了这个使用自定义热键的方式 Enterprise Architect 经常大量使用处理器的一个核心 -> 如果我删除插件 dll,并从注册表中删除该键,这个问题就会消失,我现在确信自定义热键功能会导致它。

任何人都可以通过提供另一种在企业架构师插件中使用自定义热键的方式来帮助我吗?一直在寻找其他解决方案,但尚未取得任何进展。

塔马斯

编辑...找到解决方案:修改 InvisibleHotKeyForm.cs 和 Hotkey.cs

InvisibleHotKeyForm.cs 修改:删除“worker_DoWork”方法和

. . .

和 Hotkey.cs 修改:

. . .

0 投票
1 回答
3348 浏览

c# - 为什么“受保护的覆盖无效 WndProc(ref Message m)”不起作用

我已经尝试了很长时间了。我已经搜索了好几次,并且阅读了更多关于此的文章和问题,但我似乎无法弄清楚到底出了什么问题。这是一个小程序,我一直在尝试编译以测试生成应用程序使用的热键。

我一直试图弄清楚的测试来源如下:

我一直在使用 C# 4.0 编译 csc.exe。每次我尝试编译这个或类似的代码时,我都会收到这个错误:

Main.csx(37,27): 错误 CS0115: 'Prg.MainClass.WndProc(System.Windows.Forms.Message)': 找不到合适的方法来覆盖

使用 User32.dll 注册热键的每个示例都在其中包含“受保护的覆盖 WndProc”方法,每个人都说它对他们来说工作得很好,但我不明白为什么它不能在生活中工作我的。如果有人可以帮助我解决这个问题,将不胜感激。我使用的是 Windows 7 Professional 64 位,csc.exe 的路径是 C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe

谢谢 :)


编辑


我现在已经编译好了,但是现在的问题是它似乎没有注册和热键,或者至少根本没有拿起 KeyPress。我的代码有错误吗?

我已经尝试了几种不同的解决方案,但它们都没有让热键工作。我什至尝试重写源代码以使用 Application.Run(new MainClass()); 但即使表单获得焦点,它仍然没有检测到 Keypress。


编辑


多亏了 zzxyz 帮助编译它,Antoine 帮助我修复了代码中的错误,问题得以解决。多谢你们。这是编译和工作的代码,适用于任何可能遇到相同问题或只是喜欢通过示例学习的人。再次感谢。