jjzjj

SendInput

全部标签

C# 虚拟鼠标和键盘按键(三)【SendInput】

1.概述在前面两篇“C#虚拟键盘按键(一)【SendKeys】”和“C#虚拟键盘按键(二)【keybd_event】”文章中,我们讲了虚拟键盘按键的方法,它们只能虚拟键盘的按键操作,不能虚拟鼠标。本文介绍的WindowAPI的SendInput函数,不仅能虚拟键盘,而且还能虚拟鼠标,同时微软用它取代了我们第二文章中说的keybd_event方法,所以相对来说功能更加丰富和先进,并且我们也能更多地了解一些键盘和鼠标的结构体和一些Window消息。2.说明2.1下面代码需要用到的引用是:usingSystem;usingSystem.Runtime.InteropServices;usingSys

c++ - SendInput 让系统休眠

我试图弄清楚SendInput函数的正确用法,以便我可以直接操纵屏幕上的光标,因此为了进行基本测试以了解其工作原理,我制作了这个应该将光标移动10的短片段右边的像素。理论上。#include#includeintmain(){INPUTjoyInput;joyInput.type=INPUT_MOUSE;joyInput.mi.dx=10;joyInput.mi.dwFlags=MOUSEEVENTF_MOVE;SendInput(1,&joyInput,sizeof(INPUT));return0;}但是,在实践中,SendInput函数要么让我的计算机进入休眠状态,要么至少关闭我的

c++ - SendInput 不适用于 Print Screen 键

我正在为各种模拟器制作前端并触发它们的各种功能,例如保存/加载状态、保存屏幕截图,但具有统一的界面。FS-UAE烦人地使用“PrintScreen”作为其屏幕截图键,我想避免用户不得不更改模拟器的默认热键设置。除了“PrintScreen”键外,我已经成功地用SendInput模拟了我想要的任何按键。我在使用虚拟键码方面没有任何运气,我认为这不适用于全屏应用程序。因此,该部分代码被注释掉了。(编辑:更好的解释——虚拟键代码被DirectInput软件忽略)使用扫描码,我几乎可以按任何键。PrintScreen似乎是个异常(exception)。这是我用于扫描代码的引用;https://

c# - 通过 user32.dll 中的 SendInput 发送 key

我正在使用thisboard作为演示目的的键盘。总之,长话短说,除极少数情况外,一切正常。我用SendInput发送击键函数位于user32.dll中。所以我的程序看起来像:staticvoidMain(string[]args){Console.Write("Pressenteranonthenextsecontthekeycombinationshift+endwillbesend");Console.Read();Thread.Sleep(1000);SendKeyDown(KeyCode.SHIFT);SendKeyPress(KeyCode.END);SendKeyUp(Ke

c# - 通过 user32.dll 中的 SendInput 发送 key

我正在使用thisboard作为演示目的的键盘。总之,长话短说,除极少数情况外,一切正常。我用SendInput发送击键函数位于user32.dll中。所以我的程序看起来像:staticvoidMain(string[]args){Console.Write("Pressenteranonthenextsecontthekeycombinationshift+endwillbesend");Console.Read();Thread.Sleep(1000);SendKeyDown(KeyCode.SHIFT);SendKeyPress(KeyCode.END);SendKeyUp(Ke

C++ 使用 SetCursorPos 在窗口中移动鼠标

我创建了一个类似于wiimote的设备,我想将它用作windows(8.1)中的鼠标。该设备通过tcp连接到我的windows计算机上的c++win32程序,并发送鼠标光标应该移动的位置。我正在使用SetCursorPos函数来设置位置,这对于控制大多数程序非常有用。但是当我尝试控制例如任务管理器时,光标不再移动。当我从任务管理器切换回其他程序时,它又可以工作了。我也尝试使用SendInput函数,结果相同。这就是我的代码使用SendInput的样子:INPUTInput={0};Input.type=INPUT_MOUSE;Input.mi.dx=(LONG)posX;Input.m

C++ 使用 SetCursorPos 在窗口中移动鼠标

我创建了一个类似于wiimote的设备,我想将它用作windows(8.1)中的鼠标。该设备通过tcp连接到我的windows计算机上的c++win32程序,并发送鼠标光标应该移动的位置。我正在使用SetCursorPos函数来设置位置,这对于控制大多数程序非常有用。但是当我尝试控制例如任务管理器时,光标不再移动。当我从任务管理器切换回其他程序时,它又可以工作了。我也尝试使用SendInput函数,结果相同。这就是我的代码使用SendInput的样子:INPUTInput={0};Input.type=INPUT_MOUSE;Input.mi.dx=(LONG)posX;Input.m

c++ - SendInput() 不等于在 C++ 键盘上手动按键?

我想编写一个C++代码来模拟按下键盘键“A”://Setupagenerickeyboardevent.ip.type=INPUT_KEYBOARD;ip.ki.wScan=0;//hardwarescancodeforkeyip.ki.time=0;ip.ki.dwExtraInfo=0;//Pressthe"..."keyip.ki.wVk=code;//virtual-keycodeforthe"a"keyip.ki.dwFlags=0;//0forkeypressSendInput(1,&ip,sizeof(INPUT));//Releasethe"..."keyip.ki.d

c++ - SendInput() 不是 "sending"正确的移位字符吗?

voidWriteChar(charc){INPUTinput={0};input.type=INPUT_KEYBOARD;input.ki.wVk=VkKeyScanEx(c,GetKeyboardLayout(0));SendInput(1,&input,sizeof(INPUT));}VkKeyScanEx为'/'和'?'(相同的键)返回不同的键码,但是如果您尝试使用此方法写入包含'?'的消息,它只会写入'/'。我不知道发生了什么。';'也会发生同样的事情和“:”。键码和扫码部分看不懂。大多数字符都有一个虚拟键码,但是我找不到类似的问号。它们必须存在,但没有列出?

c++ - 当我使用 SendInput 发送鼠标光标位置时屏幕变黑

我正在使用SendInput()发送鼠标的相对位置。首先我会告诉你我在做什么。我用手指移动鼠标。因此,首先我在640x480图像中跟踪我的手指,并获得图像中以像素为单位的绝对位置。然后我将该位置发送到以下方法,以使用发送输入生成相对鼠标位置命令。当手指移动到左边界(xlim1)或右边界(xlim2)时,光标会继续水平滚动到左侧或右侧,具体取决于哪个限制。问题是当我运行代码时,就在光标开始移动时,屏幕变黑了。当我评论elseif(cx>=prevX&&cx>xlim2){....}部分时,它就起作用了。向右水平滚动。注释部分启用向左水平滚动)。如果这是我们第一次捕获手指,则boolfir