Hallo,
in einem Projekt (MMC-SnapIn) wollte ich einen TTaskDialog verwenden und war etwas verwundert, dass ich bei TTaskDialog.Execute immer false zurückbekomme.
Nach einer Debug-Session bin ich darauf gestoßen, dass GetProcAddress(ComCtl32DLL, 'TaskDialogIndirect') fehlschlägt.
Die Ursache dafür ist, dass Delphi sich die Commctl32.dll mit
GetModuleHandle holt, und die MMC.exe laut Process Explorer zwei verschiedene Versionen der commctl32.dll geladen hat:
C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.16299.492_none_d02c a6ed5f31dad7\comctl32.dll und C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.16299.492_none_5d760 a37a7e0e2b6\comctl32.dll
Die
MSDN schreibt ja auch deutlich "If lpModuleName does not include a path and there is more than one loaded module with the same base name and extension, you cannot predict which module
handle will be returned."
Hat jemand eine Idee, wie ich das trotzdem zum Laufen bekommen kann? Idealerweise ohne die komplette
VCL auseinanderzurupfen.