gpt4 book ai didi

c# - 有人如何在 C# 中编写 "macro"?

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:14 24 4
gpt4 key购买 nike

我对 MACROS 有所了解。我不是指 ASSEMBLY 语言类型。我说的是那些你可以用来对另一个程序执行重复操作的程序。我说的是那些你可以用来在你的电脑上记录一系列事件的程序,比如鼠标移动和按钮点击,然后你可以回放它们。其中一些非常精细,只能在您指定的特定应用程序上运行。

我曾经写过一篇。这是一个启动 Excel session 然后使用某种动态数据交换管道来提供 Excel session 脚本命令的程序。它奏效了。

但我想,操作系统级别的东西是完全不同的故事。

如何使用 C# 编写“宏”?

我认为我将采用的方法是使用开发环境附带的 spy 例程来获取正确消息和参数的列表(例如 wm_lbuttondown),然后使用动态数据交换将这些消息发送到应用程序.

所以我有三个问题。

  1. 这是最好的方法吗?
  2. 如何获取已在运行的应用程序的句柄?
  3. 如何向已在运行的应用发送类似用户的消息?

最佳答案

基于以下许多因素,有不同的答案:

  • 是第 3 方还是您自己的申请?
  • 它有自动化接口(interface)吗
  • 应用中使用的 GUI 工具包

如果它是第 3 方应用程序,那么您需要通过 PInvoke 在 Windows API 级别上工作 - 子类化 WinMain proc,捕获和发送输入消息等。该任务有第 3 方库。 C# 显然不是此类任务的正确选择。

如果应用程序具有自动化模型(如 Excel),则可以非常直接地编写与该应用程序交互的程序。

如果您希望使用宏功能增强您自己的应用程序,那么您应该在设计状态时考虑到这一点。如果您从一开始就使用命令模式,那么编写宏录制程序并不难。

您应该提供更多详细信息以获得更好的答案。

哦,我差点忘了回答那三个问题

  1. Is this the best way to do this?

视具体情况而定

  1. How do I get a handle to an app that is already running?

取决于应用。如果是原生 Win 应用程序,您可以通过 WinApi 轻松获取进程 ID 和窗口句柄。

  1. How do I send user-like messages to an app that is already running?

这又取决于应用程序类型。对于 native win 应用程序,您可以通过 WinAPI 轻松发送 WM_XXX 消息

关于c# - 有人如何在 C# 中编写 "macro"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/456717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com