与 Windows 应用程序的 GUI 元素交互

Interact with GUI Elements of a Windows Application

首先,我要感谢 SCIDvsPC 项目所做的工作。我知道基本的 SCID 已经停产很多年了,开发人员在扩展它和为国际象棋领域贡献自己的一份力量方面做得很好。我们大学的第六学期有一个小项目要做。我们决定启动一个基于各种过滤器并实现自我学习和机器学习的国际象棋下一步移动分析器项目。

过去两个月我一直在研究这个项目的想法。实际上我们需要导入几个定义在一些过滤器上的游戏,并从生成的 PGN 文件中读取和分析。例如,如果用户选择根据 2000-2500 的评级范围预测下一个最佳着法,我们的程序应该只导出和分析具有该范围内的对手的 PGN 文件。我知道该项目可以完成所有这些工作,但我对如何将其自动化感到困惑。我的意思是我必须手动输入动作然后单击 'Generate PGN' 但是如何让我的程序执行此操作即从用户那里获取输入(如前 3 个动作),使项目 运行 这些动作(我必须手动执行的操作)然后生成 PGN 文件并将其保存在文件夹中。

我在网上浏览过关于与 Windows 中的 GUI 元素交互的信息(我们在使用 Linux 时也没有问题)并且开始了解 Microsoft UI 自动化、Python、Java 和 C# 软件以及类似 COM 的东西。该软件是否支持 COM 或其中的任何一种,或者您是否已经开发了一些类似的功能?你能指导我吗?

如果要求对此进行概括,我想做的是与 GUI 元素交互,无论是任何应用程序。以记事本为例。假设我想打开一个文件,找到并替换一个特定的词。现在,我知道如何手动执行此操作,但是当我有超过数千个文件时,我需要某种程序来为我执行此操作。在我的案例中,某些特定程序(如 SCID)是否具有一些预构建的功能(阅读有关 COM 的信息)来处理此问题?这属于哪个编程语言领域?使用 Linux 对我有更多帮助吗?

Take Notepad as an example. Suppose I want to open a file on it, find and replace a particular word. Now, I know how to do this manually but when I have over thousands of file I need some kind of program to do this for me. Do some specific programs like SCID in my case has some feature (read bit about COM) pre-built to handle this?

  • 你的情况听起来很具体,所以我怀疑你是否能找到一个 pre-existing 程序来为你做这件事。意思是:你必须自己编码。

In which programming language domain does this come into?

  • 好吧,这可能可以用很多很多不同的编程语言来完成。一个简单的 shell 脚本就可以实现您给出的记事本示例。

Is using Linux help me more?

  • 不,您的目标似乎可以通过一个简单的 shell 脚本实现,无论您是在 Windows、macOS 还是 Linux 发行版中编写它。

@SB87 给了你一些有用的提示,我想扩展他的答案。

  • 对不起,我不认为你知道你在说什么。强化学习(比 self-learning 更好的术语)和机器学习不适合大学项目。这是博士或研究阶段,在考虑类似的事情之前考虑让自己进入大学。

  • UI 自动化是可能的,但容易出错且速度慢。如果你想这样做,你会写一个控制台程序。您提到了一些关于用户输入的内容,您的意思是要对用户 mouse-keyboard 输入应用机器学习吗?这是行不通的。国际象棋的机器学习需要成百上千的训练集。

我认为你应该淡化项目并专注于你可以实现的目标。