当窗体初始化时,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
复制相似问题