Zitat von
Luckie:
PS: Installier dir gefälligst mal wieder Delphi.
Dann sollen die eins bringen, bei dem ich nicht das .NET 1.1 samt
SDK brauche.
Dann gern.
Mal als Reaktion auf diesen
Beitrag: Wie schon erwähnt, ist der Registrywert und Vista ein REG_EXPAND_SZ. Es sind also zwei Schritte erforderlich: zum einen muss der Typ mit kontrolliert werden, und nach dem Auslesen des Pfades müssen evtl. vorhandene Umgebungsvariablen à la "%system%" umgewandelt werden. Die Funktion in der angepassten
Unit aus den Tutorials sieht also so aus:
Delphi-Quellcode:
function GetOCXPath(
var Path:
string): Boolean;
const
HHPathRegKey = '
CLSID\{adb880a6-d8ff-11cf-9377-00aa003b7a11}\InprocServer32';
var
rgHandle : HKEY;
lpType, cbData : dword;
pBuffer :
array[0..MAX_PATH]
of char;
begin
Result := false;
lpType := REG_NONE;
if(RegOpenKeyEx(HKEY_CLASSES_ROOT,HHPathRegKey,0,KEY_QUERY_VALUE,
rgHandle) = ERROR_SUCCESS)
then
try
lpType := REG_NONE;
cbData := 0;
if (RegQueryValueEx(rgHandle,
nil,
nil, @lpType,
nil, @cbData) = ERROR_SUCCESS)
and
((lpType = REG_SZ)
or (lpType = REG_EXPAND_SZ))
and // <-- Typ
(cbData > 1)
then
begin
if RegQueryValueEx(rgHandle,
nil,
nil, @lpType,
@pBuffer, @cbData) = ERROR_SUCCESS
then
begin
Path :=
string(pBuffer);
Path := ExpandEnvStr(Path);
// <-- Umgebungsvariable
// (Funktion in "MSysUtils.pas")
Result := (Path <> '
')
and (fileexists(Path));
end;
end;
finally
RegCloseKey(rgHandle);
end;
end;
Voilà.