【问题标题】:Are actions on active window through c# possible?是否可以通过 c# 对活动窗口进行操作?
【发布时间】:2015-02-16 01:43:42
【问题描述】:

我想编写一些代码,可以自动在活动窗口上执行操作。 例如,如果我想在插入新 DOK 时弹出的窗口中按下忽略按钮。

我想到了一个代码,一旦特定(已知)窗口弹出,它会按几个 TAB,然后按 Enter。

我可以实现这样的代码吗?最好在 C# 中使用。

【问题讨论】:

  • 谷歌“c# ui 自动化”。

标签: c# windows automation


【解决方案1】:

我想了几个答案来回答你的问题,因为不清楚你在问什么。这些主题之一可能是研究领域:

如果您想在某个应用程序中按下活动窗口的键,而不是您正在运行的应用程序,您可能会阅读有关提升权限、进程间通信以及通过 Windows 函数调用访问键盘的信息。除了使 Windows 向其发送各种消息外,您通常不能对其他应用程序执行任何操作。思考:如果您的应用程序不是活动窗口,您将如何指示何时按下按键?

如果活动窗口是您的应用程序中的一个窗口,那么从长远来看,找到适合 C# 面向对象模型的解决方案会更好。如果您希望某些代码有时为某些窗口运行(当一个窗口处于活动状态时),您可以通过将代码放入一个公共超类并让您的窗口类继承它来共享代码。以这种方式看待它会很有启发性,但您可能必须找到一个稍微不同的解决方案,因为听起来您的窗口应该继承 Window 的 Window 类(在 C# 中只能有一个父类)。您可以查找“类继承”,也许还有“接口”。

另一个不那么面向对象的共享代码解决方案是将其放入静态函数中,并根据需要在活动窗口的代码中调用此函数。但理想情况下,应该是活动窗口类中的代码来操作窗口。您可以将其放入一个函数中,然后从应用程序中具有活动窗口的“this”引用的任何位置调用该函数。

【讨论】:

  • 您好,感谢您的回答 - 事实上,我想在我正在运行的应用程序之外的应用程序中按下活动窗口的键。所以我明白这很复杂?无论如何要这样做?
  • 您好,很抱歉延迟回复。嗯,它是一台计算机;这是可以做到的,尽管时间投资可能令人望而却步。但我真的不知道该怎么做,这就是为什么我仅限于建议研究主题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多