AGB  ·  Datenschutz  ·  Impressum  







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

ShellExecute und OpenDialog -> Problem

Ein Thema von Mazel · begonnen am 3. Jul 2007 · letzter Beitrag vom 4. Jul 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

ShellExecute und OpenDialog -> Problem

  Alt 3. Jul 2007, 17:49
Hallo,

mir ist dieses Problem nicht aufgefallen, aber heute wurde es von einen DP User gefunden. Folgendes: In einem Menü (MainMenu) kann man in die readme.txt einsichten. Doch wenn vorher das OpenDialog geöffnet und eine Datei angenommen wurde, dann kann ich die readme.txt, die ich über ShellExecute öffnen, nicht mehr öffnen.
Delphi-Quellcode:
{--[MMuReadClick]--------------------------------------------------------------} 

procedure TMain.MMuReadClick(Sender: TObject);
begin
if Sender = MMuRead then
  begin
   if OpenDia.Execute then
    begin
      ...
    end;
  end
else if Sender = MMuCopy then
  begin
    ...
  end
else if Sender = MMuExit then Close
else if Sender = MMuInfo then Info.ShowModal
// else ShellExecute(Application.Handle, 'OPEN', 'readme.txt', nil, nil, SW_NORMAL);
else ShellExecute(Application.Handle, nil, 'readme.txt', '', '', SW_NORMAL);
end;
Beide Varianten funktionen zunächst ohne Probleme, doch wie schon erwähnt, geht das nicht mehr wenn das OpenDialog geöffnet ist und eine Datei ausgewählt wurde. Ich nehme an das ShellExecute irgend ein Fehler erzeugt, doch welchen?

Hat jemand einen Rat?

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#2

Re: ShellExecute und OpenDialog -> Problem

  Alt 3. Jul 2007, 17:53
shellexecute ist doch eine fkt und liefert nen statuscode zurück, werte den doch mal aus. auf luckies seite müsste ein artikel zu den codes sein. und auf dsdt.info auch.

//Edit
http://www.dsdt.info/tipps/?id=422
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: ShellExecute und OpenDialog -> Problem

  Alt 3. Jul 2007, 17:58
Der Opendialog ändert das aktuelle Directory der Anwedung. Und da du "readme.txt" ohne Pfadangabe aufrufst ist es nicht 100%ig gesagt das die Datei gefunden werden kann.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#4

Re: ShellExecute und OpenDialog -> Problem

  Alt 3. Jul 2007, 18:00
Ok, Fehlermeldung ist: Datei nicht gefunden.
Nun aber warum ändert das OpenDialog den Pfad der Anwendung? Wenn man das weis ist das ja jetzt kein großes Problem mehr. Trotzdem ist das verwirrend.

Danke euch beiden.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: ShellExecute und OpenDialog -> Problem

  Alt 3. Jul 2007, 18:03
Zitat von Mazel:
Nun aber warum ändert das OpenDialog den Pfad der Anwendung?
Das macht er natürlich so nicht direkt. Er ändert lediglich den Arbeitspfad. Beim Nutzen von relativen Pfaden wird nicht aufs Anwendungsverzeichnis, sondern aufs Arbeitsverzeichnis zugegriffen, daher kann die Datei nicht gefunden werden.

Heißt das überhaupt "Arbeitspfad"?
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#6

Re: ShellExecute und OpenDialog -> Problem

  Alt 3. Jul 2007, 18:13
Danke dir Matze für die Info. In Zukunft weis ich bescheid, dass ich gleich aufpasse, wenn ich mit dem OpenDialog arbeite.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: ShellExecute und OpenDialog -> Problem

  Alt 3. Jul 2007, 19:37
Ich würde gernerell für dynamische Angaben "ExtractFilePath(ParamStr(0){oder auch Application.ExeName})" nehmen.
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: ShellExecute und OpenDialog -> Problem

  Alt 3. Jul 2007, 19:38
Wobei ParamStr(0) ohne die Unit Forms auskommt
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 Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: ShellExecute und OpenDialog -> Problem

  Alt 3. Jul 2007, 19:46
Zitat von xZise:
Ich würde gernerell für relative Angaben "ExtractFilePath(ParamStr(0){oder auch Application.ExeName})" nehmen.
Für absolute Pfade meinst du wohl. Denn relativ ist das nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: ShellExecute und OpenDialog -> Problem

  Alt 3. Jul 2007, 20:11
Ich denke, er meinte das als Basis für einen relativen Pfad
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
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 20:49 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