问题标签 [sendkeys]

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 回答
683 浏览

vb.net - Vb.net 发送键和目标

与 vb.net 一起使用Sendkeys时,是否可以判断发送Sendkeys之间的目标是否已更改?

谢谢您的帮助!

0 投票
2 回答
1346 浏览

vbscript - vbscript 发送键

我有一个需要运行的进程,它只能通过快捷键 CTRL+ALT+RIGHT SHIFT 运行

为了让用户更容易,我想创建一个桌面快捷方式以单击以运行此快捷方式。

我认为可以做到这一点的方式是通过 vbs 脚本 sendkey。

我在我的研究中说不能指定右移键是对的吗?

我知道 CTRL 和 ALT 有 ^% ,通用移位有 + ,但这不适用于右移。

我有办法做到这一点吗?

0 投票
1 回答
368 浏览

c# - 如何指定复合字符,如 CTRL + E?

我将文本文件的内容回显到窗口中。我可以指定解密 \b 为 {BS},\t 为 {TAB},\n 为 {ENTER} 等。

  1. 我在哪里可以找到 C# 转义字符及其关联的打字机字符串的完整列表,即 \b 是 C# 转义序列,而 {BS} 是打字机字符串?
  2. 我需要一个包含复合打字机字符串的列表,例如 Shift+F1 等。

谢谢。

0 投票
2 回答
1918 浏览

c# - C# 向 DataGridViewCell 发送击键

我的 DataGridView 中有一个DateTimePicker单元格。我希望能够在单击按钮时进入编辑模式并删除日历。我能够毫无困难地完成第一部分,但第二部分不起作用。如果我有一个独立的 DateTimePicker,则 SendKeys 调用会按预期工作。

从调试来看,我认为问题在于击键被发送到 DGV,而不是我试图编辑的特定单元格。我认为的原因是我已经将代码用于记录网格 KeyPress 和 KeyDown 事件接收到的键。他们记录了我在网格周围的箭头和 SendKeys 发送的键,但不是我通过输入编辑单元格时的那些。

0 投票
1 回答
2822 浏览

c++ - 如何使用 c++ (keybd_event) 发送 unicode 密钥

我的朋友正在学习挪威语,我想制作一个全球热键程序,它可以发送诸如

我的问题是 keybd_event 函数不允许我发送这些键,我似乎仅限于虚拟键代码是否有另一个我可以使用的函数或一些技巧来发送它们?

0 投票
1 回答
1113 浏览

macos - 桌面与 MacBook 上的 CGEventCreateKeyboardEvent

奥拉人,

再一次,我想从使用 SO 的人们共享的知识库中汲取灵感。

我为 OSX 编写了一个将关键事件发送到应用程序的小应用程序。我的目标是 OSX 10.5.x 和更新版本。但是,当我为 10.6.x 构建时也存在问题。一切正常,除非我只发送修饰键;Alt、Command、Control 和 Shift。

问题在于,在两台 MacBook 上,一旦测试人员使用鼠标移动光标或触摸触摸板,修改键的事件似乎就被清除了。

在安装了 XCode 的桌面上,一切正常。就像它应该的那样。在两个不同的 MacBook 上,会出现问题。桌面有一个标准的 101 键键盘和一个多键鼠标。
当鼠标连接到 MacBook 时,会使用带有滚轮的两键鼠标。但是,当没有连接外围设备并使用触摸板时,就会出现问题。

我期望发生的是修改键事件被发送到目标应用程序,用户使用鼠标/触摸板移动光标,按下鼠标/触摸板上的按钮和/或使用修饰键按下事件按下键盘上的键'积极的'。然后,当它们完成时,将发送修改键的键向上事件。

这是我发送按键事件的方式,本示例中的 Shift 键:

我已使用所有三个标志来创建事件源(kCGEventSourceStatePrivate、kCGEventSourceStateCombinedSessionState 和 kCGEventSourceStateHIDSystemState)。

我尝试使用事件源以及 null 作为第一个参数来创建键盘事件。

我已经尝试过在事件中使用和不使用适当的标志。

我尝试了发布活动的各种组合;kCGHIDEventTap、kCGSessionEventTap 和 kCGAnnotatedSessionEventTap。

为了完整起见,以下是我为 Shift 键发送向上事件的方式:

当测试人员触发修改键按下事件时,他们可以看到光标按预期变化。这让我知道目标应用程序正在处理事件。但是,一旦他们触摸鼠标或触摸板,光标就会变回标准光标,并且鼠标事件会被处理,就好像没有修改键事件处于活动状态一样。

我想知道我发送事件的方式是否有问题。我还想知道是否有另一种方法可以发送正在运行的修饰键事件。

抱歉,如果我说得太多了。我的借口是我只睡了几个小时。:P

谢谢

-isdi-

0 投票
5 回答
1849 浏览

c# - FindWindow 不返回 IntPtr.Zero,尽管窗口已经关闭

我正在尝试从我的 C# 程序控制 Java 应用程序。在程序开始输入数据之前,它会检查是否有任何可通过的数据输入窗口,并尝试关闭它们。

检查窗口是否存在的代码是:

直到现在,我只是在一个while循环中使用了这个方法(向窗口发送Alt+F4),直到没有打开的输入窗口离开。

不久前,Java 应用程序得到了更新,这种方法不再有效。出于某种原因,WindowExists 一直返回 true,即使在数据输入窗口关闭之后也是如此。仅当输入窗口至少存在一次时才会发生这种情况。

我什至尝试将 Thread.Sleep() 添加到循环中,以确保这不是由 Java 应用程序中的一些延迟引起的,但它不起作用。

有时简单地调用 WindowExists 会使输入窗口崩溃。

代码没有问题,因为之前已经运行过,而且在其他程序中仍然可以运行,所以肯定是Java程序中的更新有问题。

是否有任何替代/更可靠的方法来检查窗口是否存在?将发送 Alt+F4 更改为“关闭窗口事件”可能也值得一试,但我不知道如何将此事件发送到另一个程序的窗口。

我是新手,所以请保持简单的答案。

提前致谢。

0 投票
1 回答
513 浏览

c# - Vista中的C#发送键

我正在使用 C# 编写一个宏程序,该程序使用 SendKeys.Send(Wait) 并在 Windows XP 中运行良好。

大多数人都知道在 Vista(32 位)或更高版本中使用 sendkeys 会导致问题,但我的似乎有点奇怪:

使用时:SendKeys.Send("B"); - 它什么也没做。

当使用 SendKeys.SendWait("B"); - 它在停止之前发送了大约 10 个 B。

有谁知道现在该做什么,因为这并没有留下很多其他选择。

提前致谢!

0 投票
1 回答
456 浏览

c# - 将击键发送到 Windows 中的 Java 应用程序

我正在从 C# 应用程序中运行 Java 应用程序。我的目标是使用 C# 代码自动填充 Java 应用程序中的几个输入框。

我假设 java 应用程序使用 Swing 作为其 UI。我试过使用 SendMessage 和 WM_KEYDOWN 但没有任何反应。由于是swing应用,输入没有句柄,所以我使用的是整个窗口的句柄。

知道如何做到这一点吗?

谢谢!

0 投票
2 回答
6374 浏览

winapi - C++ WINAPI:如何使用 SendMessage/PostMessage WM_KEYDOWN lparam

作为低于 VB/VBS 的业余爱好者(C++ WINAPI 对我有经验的人来说是一场噩梦),我不知道如何在 C++ 中为简单的 KEYDOWN 消息构建长 lParam,并且可能花了更多时间寻找体面的解释比值得,有人能够准确地描述如何去做吗?

似乎其他论坛上几乎所有对这个问题的回答都是“为什么”或“改用 SendInput”,而没有真正回答这个问题;我猜它太简单了,人们无法解释。无论如何,这是来自 msdn 的描述,非常感谢一个体面的解释或链接,如果可能的话,还有一个工作示例:

重复计数、扫描码、扩展键标志、上下文代码、前一个键状态标志和转换状态标志,如图所示……

0-15 当前消息的重复计数。该值是由于用户按住键而自动重复击键的次数。如果击键时间足够长,则会发送多条消息。但是,重复计数不是累积的。16-23 扫码。该值取决于 OEM。

24 指示该键是否为扩展键,例如出现在增强型 101 或 102 键键盘上的右手 ALT 和 CTRL 键。如果是扩展键,则值为 1;否则为0。 25-28 保留;不使用

29 上下文代码。如果 ALT 键在按下时按下,则值为 1;如果 WM_SYSKEYDOWN 消息发布到活动窗口,则为 0,因为没有窗口具有键盘焦点。

30 前一个键状态。如果在发送消息之前 key 处于 down 状态,则值为 1,如果 key 处于 up 状态,则值为 0。

31 过渡状态。对于 WM_SYSKEYDOWN 消息,该值始终为 0。