AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ärger mit Shellexecute

Ein Thema von Delbor · begonnen am 29. Mai 2022 · letzter Beitrag vom 4. Jun 2022
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#1

AW: Ärger mit Shellexecute

  Alt 1. Jun 2022, 20:27
Bei einem externen Programm mußt du das richtige Fenster finden und dort kannst du den Parant auf etwas in deinem Programm (Form/Panel/...) setzen.



Vom Acrobat-Reader gibt es noch eine ActiveX-Komponente, die man in sein Programm einbinden kann.

Aber offiziell wird sie nicht mehr für "fremde" Programme entwickelt, sondern nur für die Einfondung in die bekanntestens Browser. (sagt der Hersteller)
Und außerdem ändern die Arschlöcher andauern das Verhalten, was dann im eigenen Programm keinen Spaß macht und unsere Kunden nervt.

Daher nutzen wir aktuell die Komponente von DevExpress, um PDFs im Programm anzuzeigen. (die kann nicht alles und ist auch etwas langsamer, aber daran wird weiter gearbeitet)
Diese Komponente ist nun im Programm und bleibt somit immer gleich. Versuch mal einem Nutzer deines Programms zu erklären, dass es nicht deine Schuld ist, wenn es ein Update bei Acrobat gab und es in "deinem" Programm dann nicht mehr so geht, wie es soll.


Selbst Schuld, dass Acrobat nun immer mehr an Bedeutung verliert, dazumal inzwischen alle großen Browser selber was für PDF mitbringen.
Im Prinzip kann man somit nun auch im Delphi z.B. den TWebBrowser nutzen und darin dann die PDF anzeigen und sei es, indem man selbst eine Version von z.B. Bei Google suchenPDF.js mitbringt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 1. Jun 2022 um 20:31 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Ärger mit Shellexecute

  Alt 4. Jun 2022, 14:37
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 = '.pdfthen
      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
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz