![]() |
ShellExecute() mit Parameter für Adobe klappt nicht
Hallo zusammen,
per Doppelklick auf ein Listbox.Item öffne ich die ausgewählte Datei mit Adobe (Listbox.Item=Dateiname; in einer Stringlist ist dann der komplette Pfad+Dateiname) Soweit kein Problem. Nun möchte ich Adobe noch einen Parameter übergeben ( ![]() (über "search" soll Adobe mit dem Suchfenster geöffnet werden und alle gefundenen Wörter angemakert haben...) Eine Parameterübergabe bietet ShellExecute ja an. Ich bekomme es aber leider nicht hin und ich weiß nicht warum. :gruebel: Nachfolgend eine meiner vielen Varianten: (ohne /A hatte ich auch schon probiert)
Delphi-Quellcode:
Adobe öffnet die ausgewählte Datei "ganz normal" ohne das Suchfenster, bzw. auch ohne Markerung der gefundenen Wörter...(als ob der Parameter gar nicht erkannt wird)
var
my_h: THandle; Searchstring: string; begin Searchstring := Edit2.Text; my_h := ShellExecute(0, 'open', PChar('"' + (Listbox_Form.My_StringList_PfadUndDatei[gi_helpindex]) + '"'), PChar('/A search="' + (Searchstring) + '"'), nil, SW_SHOWNORMAL); if my_h <= 32 then ShowMessage(SysErrorMessage(my_h)); end; Erkennt hier jemand das Problem? Vielen Dank schon mal vorab! |
Re: ShellExecute() mit Parameter für Adobe klappt nicht
Und wenn du statt die Datei den Reader aufrufst und die datei als Parameter?
|
Re: ShellExecute() mit Parameter für Adobe klappt nicht
Da dein dritter Parameter vermutlich kein ausführbares Programm ist werden die Parameter ignoriert. Ist auch logisch denn dein dritter Parameter ist ja bereits der Parameter für das dazu gehörige ausführbare Programm.
|
Re: ShellExecute() mit Parameter für Adobe klappt nicht
Könnte mit 3 Gründe vorstellen:
1, Acrobat 9? Menu "Bearbeiten\Voreinstellungen" -> Bereich "Suchen", Checkbox "Suchen nach Markierungen von externen Markierungsservern aktivieren" 2, Diese Funktion wird nicht beim Reader unterstützt 3, Es schlägt einer der üblichen Acrobat-Fehler zu so das dieses Feature nicht mehr funktioniert. |
Re: ShellExecute() mit Parameter für Adobe klappt nicht
Hallo zusammen,
danke schon mal für die Antworten! Ich habe inzw. einiges weiter probiert. Fakt ist, wenn ich eine PDF-Datei über eine Verknüpfung mit dem Parameter starte, funktioniert es! :wall: z.B.: "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" /A "search=sql" "D:\Test.pdf" Jetzt habe ich mit ShellExecute() und seinen ganzen Parametern schon einiges probiert. Leider ohne Erfolg. Ich habe Markus sein Vorschlag aus Post #2 probiert, Jens sein Vorschlag aus Post #3 hoffentlich richtig verstanden (lt. OH -> ...If lpFile specifies a document file, lpParameters should be NULL...) Ich habe es so verstanden, dass ich den 4. Parameter (lpParameters) von ShellExecute() nicht verwenden kann, da in meinem 3. Parameter lpFile dann "D:\Test.PDF" steht. Den notwendigen Startparameter /A "search=mein_Suchstring" bekomme ich mit ShellExecute einfach nicht übergeben, so dass der Adobe-Reader das PDF-File auch richtig öffnen würde. Hat hier noch jemand einen Vorschlag? Resignierende Grüße... |
Re: ShellExecute() mit Parameter für Adobe klappt nicht
Wie wäre es so?
Delphi-Quellcode:
ShellExecute(0,'open','C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe','/A "search=sql" "D:\Test.pdf"',nil,SW_SHOW);
|
Re: ShellExecute() mit Parameter für Adobe klappt nicht
@DeddyH,
ich hätte geschworen dass ich es genauso probiert hatte. :mrgreen: :thumb: Vielen Dank, das war's auf jeden Fall und somit hatte Markus im Post 2 es schon richtig dargestellt, nur ich hatte es dann wohl falsch umgesetzt. Was mich etwas stört ist die direkte Pfadangabe vom Reader. Werde wohl wegen den verschiedenen Versionen die Registry dann auslesen müssen. Edit: Leider findet der Adobe Reader auch nur Suchergebnisse, wenn diese exakt mit dem Suchparameter übereinstimmen... Z.B. SQL wird gefunden, SQ aber nicht. Nochmals Danke und einen schönen Sonntag Abend noch! |
Re: ShellExecute() mit Parameter für Adobe klappt nicht
Zitat:
Ich denke mal das sich ältere und neuere Versionen ebefalls unter HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\ eintragen. Einfach alle Unterschlüssel auslesen und die neuste Version verwenden. Zitat:
|
Re: ShellExecute() mit Parameter für Adobe klappt nicht
@Andreas: ich denke die Registrypfade fest rein zu knoten ist der falsche weg. Besser empfände ich es aufzulösen mit welchem Programm die Endung .pdf geöffnet wird.
|
Re: ShellExecute() mit Parameter für Adobe klappt nicht
Zitat:
Ich würde den oben geschriebenen Schlüssel verwenden, ist kein Adobe Reader installiert, versuche ich es mit der Zuordnung unter HKEY_CLASSES_ROOT und lasse die Parameter weg, finde ich in Classes auch nichts, gebe ich eine entsprechende Meldung aus oder lasse den User sein PDF-Programm selbst auswählen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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