5

我一直在尝试使用 tomazy 的 FutureWindows 基础架构(请参阅他在Delphi GUI Testing and Modal Forms上的回答或https://github.com/tomazy/DelphiUtils上的工具主页),但想知道是否以及如何可以它可以与标准的 Windows 文件打开对话框一起使用吗?它们似乎不是从 TControl 继承的,FutureWindows infra 似乎假设了它(除非我误解了它)。

我想做的基本上只是在 OpenFileDialog 中选择一个文件,该文件由我的测试中的命令以模态方式打开,但还没有弄清楚如何做到这一点。

4

2 回答 2

4

使用Spy++之类的工具找出窗口类名称是什么。例如,在我的 Windows 7 机器上,系统文件打开对话框的窗口类名称是#32770 (Dialog).

于 2012-02-23T11:45:39.687 回答
3

我目前的解决方案如下:

TFutureWindows.Expect(MESSAGE_BOX_WINDOW_CLASS)
  .ExecProc(
    procedure (const AWindow: IWindow)
    var
      DlgHandle: HWND;
      FileName: string;
    begin
      FileName := ExpandFileName('myFileToUse.txt');
      DlgHandle := AWindow.GetHandle;
      Windows.SetDlgItemText(DlgHandle, 1148, PChar(FileName));
    end
    )
  .ExecSendKey(VK_RETURN);

所以基本上使用 Windows API 发送消息。这些想法(和 ID 1148)是从这里找到的:http: //social.msdn.microsoft.com/forums/en-US/winforms/thread/62d5db14-5497-4ceb-8af0-d7f81732e937/

欢迎可能的更好的解决方案,但这至少对我来说似乎已经足够了。感谢您迄今为止的评论!

于 2012-02-24T09:08:50.260 回答