通过 API 关闭软件窗口

通过 API 关闭软件窗口

我正在使用第三方软件,该软件在合并 HEX 文件时具有内部功能 HPT(Hex-Post-Treatment)。我无法分辨是哪个软件等等,但是,希望我能解释一下。该软件调用外部批处理文件,该文件又调用外部 .EXE。因此,软件将控制权传递给外部。我正在使用 API 和 C# 与 Visual Studio 与软件通信,获取日志路径并读出日志文件。

软件正在记录,我正在 .EXE 中读取。首先,我在 .EXE 中创建了一个新线程,因为这可以加快软件的性能。现在,在成功完成软件处理后,我必须关闭软件中打开的用于合并的小部件,以便软件完成记录并附加关键信息。我需要“完整”的日志文件,即从日志文件中读取附加的信息。所以我需要在我的外部完成之前关闭小部件。

并且,当我的.EXE 中的代码完成后而我没有关闭小部件时,软件就会抛出错误并且无法完成或保存数据库中的新合并。

有人可以帮忙吗?

窗口图像

答案1

更新

我可以处理窗口并向其发送消息。

IntPtr windowPtr = FindWindowByCaption(IntPtr.Zero, "从 CBs 合并修订"); SendMessage(windowPtr, WM_LBUTTONDOWN, IntPtr.Zero, IntPtr.Zero);

窗口关闭了,但是软件并没有做出任何反应,就像手动单击了此窗口中的“确定”按钮一样。

然后找到包含按钮的窗口并向其发送消息:

发送消息(窗口,WM_LBUTTONDOWN,IntPtr.Zero,IntPtr.Zero);发送消息(窗口,WM_LBUTTONUP,IntPtr.Zero,IntPtr.Zero);

窗口再次关闭,但未提供正确的结果。结果是日志文件已更新。

我认为,可能存在安全障碍,因为首先,窗口(合并小部件)包含 >250 个窗口,spy++ 无法识别这些窗口。

问候。

相关内容