在c#中使用win32 API操作简单的Windows计算器?

Bre*_*ien 2 c# windows api winapi

好吧,我已尽力查看代码示例并在网上发布有关如何执行此操作的帖子,但是我几个月来一直无法使用Windows API与另一个已经完成的程序进行交互.运行.我不是最伟大的程序员,其中一些东西超出了我.

我能做的最多的是找到计算器进程及其句柄,并使用它与SetWindowText来更改标题.我真正想要学习的是让我的程序使用windows user32(我认为这必须是正确的库)通过实际按下软件计算器上的数字键按钮来输入一些数字来进行简单的计算.

我真的没有使用这个程序,这只是我试图达到的目标,以学习如何使用Windows API超过我的初学者水平,特别是在C#中.如果没有人有这方面的代码,或者即使你有,我也非常感谢网上的书籍或资源的一些建议,我应该阅读以了解如何做到这一点.

Ray*_*hen 8

既然你说你正在使用C#,你应该使用System.Windows.Automation命名空间,它的全部目的是让你通过自动化控制其他程序.

你没有详细说明你想要什么,但这是一个在计算器中推"7"的程序.

using System.Windows.Automation;

class Program
{
 public static void Main()
 {
  var calcWindow = AutomationElement.RootElement.FindFirst(
   TreeScope.Children,
   new PropertyCondition(AutomationElement.NameProperty, "Calculator"));
  if (calcWindow == null) return;

  var sevenButton = calcWindow.FindFirst(TreeScope.Descendants,
   new PropertyCondition(AutomationElement.NameProperty, "7"));

  var invokePattern = sevenButton.GetCurrentPattern(InvokePattern.Pattern)
                     as InvokePattern;
  invokePattern.Invoke();
 }
}
Run Code Online (Sandbox Code Playgroud)