AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi ShellExecute() mit Parameter für Adobe klappt nicht
Thema durchsuchen
Ansicht
Themen-Optionen

ShellExecute() mit Parameter für Adobe klappt nicht

Ein Thema von juergen · begonnen am 1. Nov 2009 · letzter Beitrag vom 1. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#1

ShellExecute() mit Parameter für Adobe klappt nicht

  Alt 1. Nov 2009, 15:41
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 (Adobe-Parameter).
(ü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.

Nachfolgend eine meiner vielen Varianten:
(ohne /A hatte ich auch schon probiert)
Delphi-Quellcode:
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;
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)

Erkennt hier jemand das Problem?

Vielen Dank schon mal vorab!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ShellExecute() mit Parameter für Adobe klappt nicht

  Alt 1. Nov 2009, 15:43
Und wenn du statt die Datei den Reader aufrufst und die datei als Parameter?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: ShellExecute() mit Parameter für Adobe klappt nicht

  Alt 1. Nov 2009, 16:04
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: ShellExecute() mit Parameter für Adobe klappt nicht

  Alt 1. Nov 2009, 17:46
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: ShellExecute() mit Parameter für Adobe klappt nicht

  Alt 1. Nov 2009, 19:10
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!
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...
Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: ShellExecute() mit Parameter für Adobe klappt nicht

  Alt 1. Nov 2009, 19:13
Wie wäre es so?
ShellExecute(0,'open','C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe','/A "search=sql" "D:\Test.pdf"',nil,SW_SHOW);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: ShellExecute() mit Parameter für Adobe klappt nicht

  Alt 1. Nov 2009, 21:05
@DeddyH,

ich hätte geschworen dass ich es genauso probiert hatte.
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!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#8

Re: ShellExecute() mit Parameter für Adobe klappt nicht

  Alt 1. Nov 2009, 21:24
Zitat von juergen:
Werde wohl wegen den verschiedenen Versionen die Registry dann auslesen müssen.
Der 9er ist hier zu finden: HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\9.0\InstallPath => (Standard-Wert)
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 von juergen:

Leider findet der Adobe Reader auch nur Suchergebnisse, wenn diese exakt mit dem Suchparameter übereinstimmen...
Z.B. SQL wird gefunden, SQ aber nicht.
Vielleicht gehts mit einer WildCard z. B. SQ*
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: ShellExecute() mit Parameter für Adobe klappt nicht

  Alt 1. Nov 2009, 21:26
@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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#10

Re: ShellExecute() mit Parameter für Adobe klappt nicht

  Alt 1. Nov 2009, 21:39
Zitat von SirThornberry:
@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.
Wenn dann aber ein alternativer PDF-Reader mit .pdf verknüpft ist, werden die Parameter höchst wahrscheinlich nicht mehr funktionieren, das Programm öffnet sich aber trotzdem und ShellExecute gibt dann keinen Fehler-Code zurück sondern meint es wäre alles ok.

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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz