Zitat von
jbg:
Das wäre die Implementierung der VB GetObject Funktion. Das "APPFX" ist der Dateiname und nicht der Klassenname, da die VB Funktion zwei Parameter hat und der erste den Dateinamen angibt.
Hallo,
Danke für die Antwort, leider funktioniert das noch nicht.
Delphi-Quellcode:
function VBGetObject(const Filename: Widestring; const ClassName: string = ''): IDispatch;
var
ClassID: TCLSID;
Unknown: IUnknown;
begin
if ClassName <> '' then
Result := GetActiveOleObject(ClassName)
else
begin
OleCheck(GetClassFile(PWideChar(Filename), ClassID));
OleCheck(GetActiveObject(ClassID, nil, Unknown));
OleCheck(Unknown.QueryInterface(IDispatch, Result));
end;
end;
Ich habe String und PChar jeweils durch die Wide-Variante ersetzt, dann meckerte Delphi nicht mehr.
Bei GetClassFile steigt er dann aus mit der Meldung "Datei konnte durch Moniker nicht geöffnet werden."
APPFX ist eine exe, vielleicht liegt es daran?
Wenn ich ihm den ganzen Pfad, also "C:\Programme\AppFX\APPFX.exe" serviere, dann kommt die Fehlermeldung "Ungültige Dateierweiterung".
APPFX lief bei meinen Versuchen.
Wie macht VB6 das nur, da funktioniert es ja?
Gruß
Frank