我一直在尝试使用tomazy的FutureWindows基础架构(请参阅Delphi GUI Testing and Modal Forms的答案或https://github.com/tomazy/DelphiUtils处的工具主页),但想知道它是否以及如何与标准的Windows文件打开对话框?它们似乎不是从TControl继承而来的,FutureWindows的基础设施似乎假设它(除非我误解了它)。
我想要做的只是在OpenFileDialog中选择一个文件,该文件在我的测试中通过命令以模态方式打开,但还没有弄清楚如何执行此操作。
答案 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/
欢迎可能更好的解决方案,但这对我来说似乎至少现在还不错。 感谢您的评论到目前为止!