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

标签 c# windows api winapi

好吧,我已尽力查看代码示例并在网络上发布有关如何执行此操作的帖子,但在几个月内我无法使用 Windows API 与其他人交互取得任何进展已经在运行的程序。我不是最伟大的程序员,其中一些东西超出了我的范围。

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

我并没有真正使用这个程序,这只是我试图达到的一个目标,即学习如何使用 Windows API,超过我在 C# 中的初级水平。如果没有人知道这方面的代码,或者即使您知道,我也非常感谢您为我应该阅读以了解如何执行此操作的书籍或网络资源提供一些建议。

最佳答案

既然您说您使用的是 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();
 }
}

关于c# - 在 C# 中使用 win32 API 操作简单的 Windows 计算器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14108742/

相关文章:

c# - 我的模型中缺少帐户、ManagerViewModel 文件夹和 ApplicationUser.cs 类

c# - 如何通过WebBrowser控件C#避免下载json文件

c# - Console.WriteLine 到 Response.Write?

Windows 批处理 : Split String to individual characters to variables

java - 如何使用 WEKA API 学习贝叶斯网络(结构+参数)?

c# - 如何在C#中反序列化key包含 "."的json?

java - Runtime.getruntime 中无法打开 notepad.exe 的问题是什么

windows - 在 Windows 中 merge 为 gitk 中的 diff 工具

json - 发现很难在 delphi 中处理 JSON

android - Google Cloud Vision在android studio中产生重复文件