Delphi TFileOpenDialog.ClientGuid

Delphi TFileOpenDialog.ClientGuid,delphi,vcl,Delphi,Vcl,Delphi VCL TFileOpenDialog有一个名为ClientGUID的属性。Embarcadero文件显示: …保存与对话框的持久化状态关联的GUID。坚持 对话框的状态可以包括其位置和 大小 但它只说了这么多。我想知道更多。我的测试表明,对话框的大小和位置确实在应用程序会话之间保持不变,因此它们被存储在某个地方 但是这些信息存储在哪里呢?(我已经在注册表和硬盘上搜索了我一直在测试的GUID,但在任何地方都找不到。) 而且,它只是大小和位置,还是其他属性也存在?(如果它只是大小和位

Delphi VCL TFileOpenDialog有一个名为ClientGUID的属性。Embarcadero文件显示:

…保存与对话框的持久化状态关联的GUID。坚持 对话框的状态可以包括其位置和 大小

但它只说了这么多。我想知道更多。我的测试表明,对话框的大小和位置确实在应用程序会话之间保持不变,因此它们被存储在某个地方

但是这些信息存储在哪里呢?(我已经在注册表和硬盘上搜索了我一直在测试的GUID,但在任何地方都找不到。)


而且,它只是大小和位置,还是其他属性也存在?(如果它只是大小和位置,那么对我来说并不是很有用。)

我也在Experts Exchange上问了这个问题,给出的答案是持久化属性存储在Windows注册表中的这个键中:

HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\CIDSizeMRU

存储在那里的值是二进制的,这解释了为什么初始文本搜索my GUID失败


我的测试表明FileOpenDialog的持久属性包括大小、位置和路径。可能还有更多,但我不知道。

在MS docs中阅读更多关于它的内容,@LURD,但这并不能回答状态存储在何处的问题。它存储在何处并不重要。这是一个私有的实现细节。除了大小和位置之外,您希望存储什么?我不知道期望什么,这就是为什么我要问的原因。MS文档称“对话框的状态可能包括上次访问的文件夹以及对话框的位置和大小等因素”。这是不明确的:“…可以包括…”意味着它可能包括或可能不包括“…因素,如…”只是给出了一些例子。我想知道存储了什么,这样我就可以知道我必须自己做什么,以及我可以留给自动化系统什么。我问它存储在哪里,这样我就可以去那里看看存储了什么。提示,编码的二进制数据是exe的名称。是。如果在执行对话框时提供了ClientGUID,则GUID存储在二进制数据中,否则存储的是EXE名称。有趣!这是否有文档记录,或者您是通过尝试发现的?注册表项来自专家交换用户。剩下的就是反复试验。