问题标签 [sendinput]
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.
c# - 使用 SendInput 发送文本时如何阻止用户输入
我正在使用 SendInput(在 C# 中,使用 pinvoke)将文本发送到另一个应用程序。如何阻止用户输入,以便在 SendInput 完成发送文本后添加用户在 SendInput 工作时可能键入的任何文本?目前,如果用户在将文本发送到目标应用程序时键入,则最终结果可能会不一致。谢谢。
c# - 在 DirectInput 应用程序中使用 SendInput API 模拟键盘
我正在尝试为自定义游戏控制器应用程序模拟键盘命令。因为我需要在 DirectInput 环境中模拟命令,所以大多数常用方法都不起作用。我知道使用钩子可以 100% 工作,但我正试图找到一个更简单的实现。
我做了很多搜索,发现通过使用带有 Scancodes 而不是虚拟键的 SendInput API 应该可以工作,但它的行为似乎就像键是“粘着”的。我已经发送了 KEYDOWN 和 KEYUP 事件,但是当我尝试在 DirectInput 环境中发送消息时,游戏就像按键被按住一样。
例如,如果我模拟“W”键按下并将该键映射到第一人称射击游戏中的“向前移动”动作,一旦我进入游戏,下面的函数将导致角色向前移动。然而,只要发出一次命令,它就会无限期地向前移动角色。
这是我正在调用的 SendInput 函数的代码片段(在 C# 中):
我不确定这种方法是否是一个失败的原因,或者我是否只是缺少一些愚蠢的东西。如果我不必使用钩子,我讨厌过度复杂化我的代码,但这对我来说也是一个新领域。
任何人都可以提供任何帮助,我们将不胜感激。
谢谢!
c# - C# - Windows 服务中的 SendInput() 不起作用但返回 1 - Win03
这是一个有点不寻常的问题。我目前正在努力实现 Office 应用程序的自动化。基本上问题是,当我通过 RDP 执行我的应用程序时,我的应用程序能够与 Office 应用程序正确交互,但是如果我将应用程序设置为从 Windows 服务生成,则无法使用 SendInput() 发送击键。操作系统是 Win03 标准。
当从 Windows 服务生成应用程序时,我可以通过 pinvoke 读取窗口标题、通过互操作实现自动化等,但即使调用返回 1,SendInput() 消息似乎也消失了。我正在尝试此时要做的是向对话框发送一个转义键。
我尝试将击键作为虚拟键和扫描码发送。
有什么想法或提示吗?提前致谢!
(顺便说一句:我确实意识到 MSFT 不支持/批准这种自动化。)
编辑: 以防万一其他人有这个问题,这有效:
c# - 将 KeyEventArgs 转换为 KEYDBINPUT 结构
我正在开发一个网络系统(在 C# 中),在一台计算机上,我通过低级挂钩接收键盘输入,然后将输入传输到必须注入的另一台计算机。
该挂钩在 KeyEventArgs 类中提供键盘输入。要将其注入目标计算机,我需要使用带有 SendInput 的 KEYBDINPUT 结构。
KeyEventArgs.KeyCode 或 KeyValue 与 KEYBDINPUT.wVk 和 wScan 之间似乎并不容易匹配。我还尝试了 MapVirtualKey 的一些组合。
或者,我可以在源计算机上将 KeyEventArgs 转换为 Windows 键消息(WM_KEYUP/DOWN 与 wParam 和 lParam),但我面临类似的困难。
这里的任何人都可以帮助解决这两种情况吗?
c# - Win32 和 Win64 机器中的 SendInput 键
我在 xp 32bits 下使用 sendInput() 使用 web 服务来推送当前焦点窗口的 F5。现在在 Vista win64 下我不能得到这个结果。一些文章指出使用 4 位或 8 位的 uint 问题,但这并不能解决 vista 下使用差分编译和 FieldOffset(4) 或 (8) 的问题。其他人则谈到使用此 SendInput() 方法的 Vista 屏幕和窗口之间不再有交互。有人可以指出在win32和win64机器上推动F5的解决方案。谢谢。
}
c# - 使用 SendInput 模拟 XButton 输入
我使用 SendInput 来模拟鼠标输入,到目前为止我可以成功地模拟左键、右键和中键。但是,我似乎无法正确模拟 xButtons。我正在定义一个输入结构如下:
MouseButton 定义如下,我相信这就是问题所在。
winapi - 使用 SendInput 模拟拖放操作
SendInput 可以用来模拟拖放操作吗?
我有一个应用程序,它接受某种格式的文件,但不是从命令行拖放到它上面,我想将它与一个文件相关联。我想我会创建一个小工具来查找窗口并模拟文件的拖放 - 这可能吗?我需要使用SendInput
还是可能SendMessage
?参数是什么?
c# - 使用 SendInput 时,如何判断接收窗口何时接收并处理了消息?
我正在使用Input Simulator库来模拟使用 C# 的另一个应用程序的输入,这使用了 SendInput API 调用。有谁知道是否有一种方法可以监视外部应用程序的 Windows 消息队列以查看这些消息是否已被处理?
例如,假设我想将单词“Hello”的击键发送到记事本,但我不希望我的应用程序在记事本接收并处理输入并且单词“Hello”出现在记事本窗口中之前继续. 一旦按键消息不再在记事本的消息队列中,我们就会知道这已经发生了,但我不知道如何找到它。
我正在使用 .NET SendKeys 类并使用 SendWait,但这似乎不稳定并导致外部应用程序偶尔冻结,因此经过数周的尝试修复后,我正在寻找一种新方法。
非常感谢
keystroke - SendInput 不适用于游戏
我正在使用以下标准 GenerateKey 代码:
我调用这个函数来模拟箭头键(上、下、左、右)。但是,这适用于普通的资源管理器窗口和小型 Flash 游戏。但是,当我在《极品飞车》或《Roadrash》之类的游戏上尝试它时,它不起作用.. 这种行为有什么可能的原因吗?
c# - 在 C# 中将键盘和鼠标事件发送到 DirectX 应用程序?
我需要将全局击键和鼠标事件发送到另一个使用 DirectX 的应用程序。(除了窗口本身没有控件/句柄)
例如,我需要按住 X 键 2 秒钟然后松开它...
我需要在坐标 x:600 和 y:350 上按下右键,移动鼠标向下 100 像素,然后释放右键单击。
我还需要一次按下 2 个或更多键,例如 X 和 Y,并在 2 秒后停止 X,再在 2 秒后停止 Y。
所以基本上我需要完全控制输入系统......
如果我可以在最大化或在后台控制应用程序,那也是理想的。(可选)
对于持怀疑态度的人... 老师为我们学校的绘画制作了 DirectX 应用程序。我被要求制作一个在其上绘制样本的应用程序,例如火车或花之类的……我将阅读图像并使用输入来设置颜色并单击画布……