使用 post/sendmessage 进行鼠标点击不起作用[重复]

2023-11-30

可能的重复:
如何在C#中模拟鼠标点击?

我努力了

Window = FindWindow(null, "untitled - Paint");
PostMessage(WindowToFind, WM_MOUSEMOVE, 0, location); 
PostMessage(WindowToFind, WM_LBUTTONDOWN, ((int)Keys.LButton), location);

位置是100 * 0x10000 + 100 for 100x100等等我怀疑这是错误的。我尝试过交换((int)Keys.LButton) with 0,没有用。我尝试把thread.sleep之间lbuttondown and lbuttonup(好吧,postmessage 应该等待而不thread.sleep但无论如何)我用0x0200用于鼠标移动和0x0202对于左按钮常量。

不知道为什么它根本不起作用。


这是正确的。The PostMessage and SendMessage函数从来没有打算合成鼠标(或键盘)事件. They might有时会为此而努力,但这不是您应该依赖的东西,因为大多数时候他们不会工作。

相反,您应该使用SendInput功能正确合成鼠标事件。与其他 Win32 API 函数一样,您需要 P/Invoke 才能从 C# 调用它。这个定义可以从文档中手动生成,或者很容易找到互联网上的其他地方。唯一棘手的部分是您需要声明适当的结构以及函数本身。

The mouse_event功能除了以下还存在SendInput作为合成鼠标事件的一种方式,但正如链接文档所表明的那样,该函数已被废弃,以支持SendInput。你应该总是更喜欢使用SendInput在新的应用中。

唯一的问题是您似乎试图将这些鼠标事件发送到不同的应用。这会带来一些问题,因为SendInput只需将事件注入键盘/鼠标流。处理它们的应用程序将是具有前台窗口的应用程序。因此,您需要首先将焦点设置到另一个窗口,并确保不会与 UIPI 发生冲突。

不过,您拥有的代码在另一个层面上相对脆弱:一旦您使用不同的名称保存文档,绘图窗口就会更改其名称。这假设 Windows 9 不会将 Paint 重命名为其他名称 - 以前也发生过这种情况,该应用程序曾经被称为“Paintbrush”。希望这只是您想要完成的事情的一个示例。无论哪种方式,我可能建议您研究更强大的自动化方法(例如,微软用户界面自动化框架)而不是盲目注入输入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 post/sendmessage 进行鼠标点击不起作用[重复] 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • iPhone 崩溃并显示“无回溯”

    我的 iPhone 应用程序最近被 App Store 拒绝 因为它在启动时崩溃 但是 我无法重现此崩溃 该应用程序在模拟器和具有 Apple 测试过的相同硬件和软件的设备 运行 iOS 4 的 iPhone 3 1 上都能完美运行 他们发
  • 如何在VB.net中运行应用程序时打印行号

    我想在 VB net 应用程序中打印出带有行号的调试消息 我就是这样做的 Dim st As StackTrace Dim sf As StackFramee st New StackTrace New StackFrame True sf
  • GTK 窗口捕获:VPython (OpenGL) 应用程序

    阅读了文档后VPython and GTK 线程 在我看来 可以在 gtk GUI 中嵌入 VPython 图形 我知道这是可能的Windows 上的 wx但我在 Linux 上使用 PyGTK 现在 我已经成功地取得了部分进展 我可以嵌入
  • 在node.js 中为所有传入的http 请求提供index.html

    我有一个像这样的节点服务器 var express require express var fs require fs var path require path var root fs realpathSync var app expre
  • 无法使用 Android BluetoothProfile 连接到蓝牙 Health Device Fora

    我想通过 Android BluetoothPROfile 连接到 Fora 温度计并获取读数 以下是我的方法 在 OnCreate 中我写了这段代码 if mBluetoothAdapter getProfileProxy this mB
  • 使用 Json.net 序列化时如何根据类型更改属性名称?

    我有一个类型的属性object我必须根据它的类型更改名称 应该非常类似于 XmlElement PropertyName typeof PropertyType XML 的属性 例如 我有一个房产public object Item get
  • 延迟加载变量错误

    我正在编写一个涉及核心数据的程序 我为我创建了一个类变量context and entity并将我的代码写成这样 class PersistencyManager var context NSManagedObjectContext let
  • 无法使用 Node.js 将大块数据填充到 mongodb

    我被要求导入从全市许多站点收集的大量天气数据 每个站点有 1 台计算机 每个计算机有一个文件夹 每 5 分钟同步到一台中央服务器 每天都会创建一个新文件 所以 基本上结构是这样的 一个txt文件的格式为csv文件 其中第一行为字段 其余为数
  • PATH_TRANSLATED 中的redirect:// 是什么?

    我有一个 htaccess通过请求的规则 类别 类别 slug to 类别 php 然而 当我检查 SERVER超级全局 我得到这个条目 Array PATH TRANSLATED gt redirect 那是什么 我从未见过重定向 bef
  • allow_tags=True 不会在 django admin 中渲染
    标签

    我想在 django admin 的 list display 中显示一个表单 但我遇到了这个问题 当我定义这样的东西时 class MyModelAdmin admin ModelAdmin list display foo pagar
  • 识别并填充列表框

    这对我来说是一个谜 填充列表框的语法是什么 但首先 如何识别列表框 我在很多论坛上读到 ListBox1 Additem 但是他们怎么知道它是 ListBox1 这是默认名称ListBox当您将其添加到表单时进行控制 VB 和 VBA 自动
  • CUDA 上的块间屏障

    我想在 CUDA 上实现块间屏障 但遇到了严重的问题 我不明白为什么它不起作用 include
  • PHP Guzzle 5:无法处理包含端口号的 URL

    我正在使用最新版本的guzzle from composer json guzzlehttp guzzle 5 from composer lock name guzzlehttp guzzle version 5 2 0 当我尝试使用包含
  • Javafx如何在webview中显示自定义字体?

    该网页使用了我的电脑上未安装的自定义字体 在这种情况下 WebView似乎使用操作系统的默认字体 但我有字体文件 xx ttf 如何将字体嵌入到我的应用程序中并告诉 WebView 使用它来识别页面上的字体 加载字体 Font loadFo
  • Pandas 将列拆分为多级

    我有一个像这样的数据框 df pd DataFrame pd DataFrame 1 2 3 4 5 6 7 8 9 10 11 12 columns X a Y b X b Y a X a Y b X b Y a 0 1 2 3 4 1
  • 如何在linux终端中再次打开进程?

    我从我的家用电脑上使用 putty 通过 ssh 连接到远程服务器 然后运行了一个需要几个小时才能完成的 python 程序 并且在运行时会打印一些内容 现在过了一会儿 我的互联网断开了 我不得不关闭并重新打开 putty 和 ssh 如果
  • phpmailer 无法从表单发送附件

    搜索 stackoverflow 后我没有得到任何问题的答案 问题是我有一个带有上传按钮的表单 因此当用户提交文件时 该文件将立即通过电子邮件发送给我 我使用 phpmailer 但我只收到消息而不是消息 附件 知道问题出在哪里吗 PS 我
  • Swift 3 - 为什么我的导航栏没有显示?

    我有一个简单的应用程序来测试 REST API 的推送通知 我想在应用程序中显示导航栏 但它不起作用 在我的 AppDelegate 中 我有以下代码 func application application UIApplication d
  • 合并两个列表python

    我有两个清单 a 1 2 3 4 5 6 b 7 8 我想将它合并到 c 1 2 3 7 4 5 6 8 I used zip a b 但结果似乎不正确 有人可以帮忙吗 zip 只会将元组和整数配对 您还需要连接元组和新项目 c aa bb
  • 使用 post/sendmessage 进行鼠标点击不起作用[重复]

    这个问题在这里已经有答案了 可能的重复 如何在C 中模拟鼠标点击 我努力了 Window FindWindow null untitled Paint PostMessage WindowToFind WM MOUSEMOVE 0 loca