(如何)我可以将FutureWindows与标准文件打开对话框一起使用吗?

时间:2012-02-23 11:09:50

标签: delphi user-interface dunit

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

我想要做的只是在OpenFileDialog中选择一个文件,该文件在我的测试中通过命令以模态方式打开,但还没有弄清楚如何执行此操作。

2 个答案:

答案 0 :(得分:4)

使用Spy++之类的工具来查找窗口类名称。例如,在我的Windows 7计算机上,系统文件打开对话框的窗口类名称为#32770 (Dialog)

答案 1 :(得分: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/

欢迎可能更好的解决方案,但这对我来说似乎至少现在还不错。 感谢您的评论到目前为止!