【问题标题】:Target Different Window c#目标不同的窗口c#
【发布时间】:2010-08-11 17:30:44
【问题描述】:

嘿,我一直在谷歌上搜索,我似乎找不到任何关于在 c# 中定位不同窗口的信息,我使用的是 Visual Studio 2010。

我不知道该怎么做,但我很确定可以做到,有谁知道我在哪里可以读到它?

我需要能够针对不同的程序(例如 notpad),并模拟按键。

谢谢。

【问题讨论】:

  • 和谷歌一样,我也不知道你在说什么。
  • 我不太清楚你所说的定位不同的窗口是什么意思? >.>
  • 请详细了解您要执行的操作...
  • 我的意思是一个我不拥有的程序,在 PC 上运行的其他程序。我需要定位它,以便模拟按键。

标签: c# window target


【解决方案1】:

如果您的意思是与不同的窗口进行交互(可能是不同进程的一部分),通常您会获得一个窗口句柄(可以通过多种方式完成),然后您可以发送消息并从这些消息中获取数据到这些窗口把手。

例如,请参阅 SendMessage,您将从 C# 应用程序中调用/调用它。

如果您想在这些窗口中发生某些事件时获得更新,那么您可以使用 Windows Hooks。

【讨论】:

  • 是的,我的意思是在 PC 上运行其他东西,我只需要定位它。
  • @Crazyd22:根据我上面的回答。如果您想要更具体的答案,则需要更具体地说明您想对该窗口执行的操作。
  • 基本上,当他们单击一个按钮时,我希望它以另一个窗口为目标(例如记事本),并在其中写入一些文本(模拟按键)。
  • 是的,所以您想使用 SendMessage 并查看消息 WM_SETFOCUS 和 WM_KEYDOWN 或 SendKeys。在此处查看我的答案和问题中的示例代码:stackoverflow.com/questions/2604898/net-sendkeys-to-calculator/…
【解决方案2】:

我假设您使用的是 WinForms(同样适用于 WPF,但代码略有不同)。

在你的项目中

Form1
Form2
Form3

在 Form1 类的顶部,定义以下代码:

Form2 frm2;
Form3 frm3;

假设 Form1 是您的启动对象,您为“显示 Form2”和“显示 Form3”添加按钮

在他们各自的代码隐藏中添加这样的代码

frm2 = new Form2();
frm2.Show();

frm3 = new Form3();
frm3.Show();

同样的概念也适用于 WPF。如果您尝试使用应用程序外部的窗口进行操作,SendMessage Windows API 可能是您需要研究的。

【讨论】:

  • 我的意思是一个我不拥有的程序,在 PC 上运行的其他程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多