AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ShellExecute funxt nach OpenDialog nicht
Thema durchsuchen
Ansicht
Themen-Optionen

ShellExecute funxt nach OpenDialog nicht

Ein Thema von PAX · begonnen am 15. Jul 2005 · letzter Beitrag vom 15. Jul 2005
Antwort Antwort
Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#1

ShellExecute funxt nach OpenDialog nicht

  Alt 15. Jul 2005, 07:01
seid gegrüßt!

ich hab eine applikation und eine hilfe geschrieben. die hilfe liegt als chm-datei vor. über ein menüsystemeintrag starte ich die hilfdatei durch shellexecute

Delphi-Quellcode:
procedure TForm1.Wiegeheichvor1Click(Sender: TObject);
begin
  ShellExecute(Handle,nil,PChar('Hilfe.chm'),
   nil,nil,SW_SHOW);
end;
nachdem ich aber den opendialog im programm genutzt habe, kann ich die hilfe nicht mehr starten. der befehl wird zwar abgearbeitet, aber er startet die hilfe nicht.
woran liegt das?
wie kann ichs besser machen?
beste grüße


PAX
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: ShellExecute funxt nach OpenDialog nicht

  Alt 15. Jul 2005, 07:17
Der "OpenDialog" verändert wahrscheinlich dein Arbeitsverzeichnis.
Mache es so:
PChar(ExtractFileDir(Application.ExeName)+'Hilfe.chm') [Nachtrag]
Wieder mal blind geschrieben, da ich mein Delphi noch nicht gestartet habe.
1. Ggf. brauchst du eine lokale Variable für den Ergebnisstring
2. Ggf. must du ExtractFilePath und nicht ExtractFileDir nehmen (bin mir nicht sicher)
Volker
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: ShellExecute funxt nach OpenDialog nicht

  Alt 15. Jul 2005, 07:41
Hi,

Du kannst in den Options auch die Option ofNoChangeDir einstellen, sodass das Arbeitsverzeichnis nicht geändert wird, falls Du den Dialog aufrufst. So könntest Du Deinen ursprünglichen Code beibehalten.
Ich rate Dir jedoch, den Code von Flocke zu verwenden, der genaugenommen so aussehen muss (@Flocke: ExtractFileDir gibt kein \ am Ende des Pfades zurück, also doch ExtractFilePath ).
PChar(ExtractFilePath(Application.ExeName) + 'Hilfe.chm') mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#4

Re: ShellExecute funxt nach OpenDialog nicht

  Alt 15. Jul 2005, 08:37
Unds ich würde vorschlagen *auf jeden Fall* den Kompletten Pfad zu nehmen. Niemals relative Pfade verwenden! (Außer du hast vor n Russisch-Roulette-Prog zu schreiben. ) Das Arbeitsverzeichnis kann nämlich auch n anderes Prog verändern und dann hast du n nicht identifizierbaren Bug.

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#5

Re: ShellExecute funxt nach OpenDialog nicht

  Alt 15. Jul 2005, 09:40
Code:
HINSTANCE ShellExecute(

    HWND hwnd,   // handle to parent window
    LPCTSTR lpOperation,   // pointer to string that specifies operation to perform
    LPCTSTR lpFile,   // pointer to filename or folder name string
    LPCTSTR lpParameters,   // pointer to string that specifies executable-file parameters
    LPCTSTR lpDirectory,   // pointer to string that specifies default directory
    INT nShowCmd    // whether file is shown when opened
   );
also da gibt es auch 'ne Möglichkeit ein default-directory anzugebn. Versuche sonst mal als vorletzten Parameter dein aktuelles Verzeichnis zu nehmen...
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: ShellExecute funxt nach OpenDialog nicht

  Alt 15. Jul 2005, 09:55
Flocke und mirage228 haben schon die vollkommen korrekte Lösung gegeben. Alles weiter wäre für mich nur Frickelei.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#7

Re: ShellExecute funxt nach OpenDialog nicht

  Alt 15. Jul 2005, 10:31
ich weiß garnicht, wie ich euch danken kann...

ich stand unter zeitdruck und ihr habt mir geholfen, es doch noch vernünftig fertig zu bekommen...

vielen dank, für eure kompetente hilfe.
einen angenehmen tag wünsch ich euch!

viva los tioz!



PAX
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  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 10:03 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