Hi zusammen
Mein dringlichstes 'Problem', nämlich die Anzeige eines fremden Programmws in meinem, habe ich nun 'gelöst'. Bei MausDown in meinem TAlexOpenfileFrame:
Delphi-Quellcode:
if Button =(mbLeft) then
begin
LSelectItem := PNameRec(AnItem.Data)^.RealName;
ext := ExtractFileExt(LSelectItem);
if ext = '.pdf' then
begin
ShellExecAndWait('F:\Externer Programmordner\Ashampoo\Ashampoo PDF Free\Ashampoo PDF.exe', LSelectItem, SW_Normal );
end;
end;
und
Delphi-Quellcode:
procedure TAlexOpenfileFrame.ShellExecAndWait(dateiname, Parameter: string; ShowHide: Integer); // benötigt ShellAPI in Uses
var executeInfo: TShellExecuteInfo;
dw: DWORD;
begin
FillChar(executeInfo, SizeOf(executeInfo), 0);
with executeInfo do
begin
cbSize := SizeOf(executeInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
executeInfo.lpVerb := 'open';
executeInfo.lpParameters := PChar(Parameter);
lpFile := PChar(dateiname);
nShow := ShowHide;
end;
if ShellExecuteEx(@executeInfo) then dw := executeInfo.HProcess
else
begin
ShowMessage('Fehler: ' + SysErrorMessage(GetLastError));
exit;
end;
while WaitForSingleObject(executeInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(dw);
end;
Der Code stammt bis auf meine Komponenten von
hier, bzw
hier.
Na ja, so ähnlich zumindest. Ich bin so frei und erspare mir den Versuch des Abgleichs mit all den in diesem Forum gefundenen wohl mehreren dutzend Codeschnipsel.
Das vorerst wichtigste: Ich kann abwechselnd mit beiden Programmen arbeiten.
Gruss
Delbor