当窗体初始化时,TShellTreeView组件在Vcl.Shell.ShellCtrls单元中的TWinControl.DefaultHandler()组件在应用程序启动时会导致Win64平台上的访问冲突。
要复制这个bug:
TShellTreeView组件放到表单上。或者,将这个最小的项目源代码粘贴到一个名为“ShellTreeViewTest.dpr”的文件中,然后使用Delphi打开项目:程序ShellTreeViewTest;使用Vcl.Forms、Vcl.Controls、Vcl.Shell.ShellCtrls;var表单: TForm;begin Application.Initialize;Application.CreateForm(TForm,Form);with TShellTreeView.Create(Form) do父:=窗体;Application.Run;end.
然后
我用德尔菲11.1亚历山大。
只有在项目选项/链接选项卡中启用“支持高熵64位地址空间布局随机化(ASLR)”时,访问冲突才会引发
。
发布于 2022-10-24 14:40:24
AV是由TCustomShellTreeView.FImages: Integer;字段引起的:它由SHGetFileInfo()调用初始化,但该函数返回DWORD_PTR。用FImages: Integer代替FImages: DWORD_PTR解决了这一问题。
我认为TCustomShellComboBox.FImages也应该改变。
https://stackoverflow.com/questions/74182825
复制相似问题