AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit shellexecute und Pfad

Ein Thema von R2009 · begonnen am 31. Okt 2010 · letzter Beitrag vom 31. Okt 2010
Antwort Antwort
Seite 1 von 2  1 2      
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#1

Problem mit shellexecute und Pfad

  Alt 31. Okt 2010, 07:32
Hi DP'ler,

ich muss eine Anwendung, aus meinem Programm heraus, starten. Das versuche ich mit shellexecute.
Problem: die zugehörigen ini Dateien usw befinden sich in dem Programmfolder.
Ich habe versucht den Pfad zu übergeben. Das funktioniert jedoch nicht. Das Programm wird nicht einmal gestartet.

Delphi-Quellcode:
var dbpath:string;i:integer;
begin
  caption:=get_language_item('GER','form_searcher','sg_header_1');
  bn1.caption:=get_language_item('GER','form_searcher','sg_header_1');
  dbpath:=extractfilepath(application.ExeName)+'LCRset2\');
  i:=ShellExecute(Application.Handle, 'open', 'LCRset2\LCRset2.exe',nil,pchar(dbpath), SW_SHOW);
starte ich das, wie unten, wird das Programm geöffnet aber er findet seine Ini Dateien nicht. Ist auch ganz klar, woher soll er wissen wo sie liegen.

  i:=ShellExecute(Application.Handle, 'open', 'LCRset2\LCRset2.exe',nil,nilSW_SHOW);

Kann mir jemand helfen?
Grüsse
rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.

Geändert von R2009 (31. Okt 2010 um 07:35 Uhr)
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#2

AW: Problem mit shellexecute und Pfad

  Alt 31. Okt 2010, 08:24
Delphi-Quellcode:
  dbpath := extractfilepath(application.ExeName);
  i := ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2\LCRset2.exe'), nil, nil, SW_SHOW);
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Problem mit shellexecute und Pfad

  Alt 31. Okt 2010, 08:44
Was Andreas sagen will: Nutze möglchst absolute (vollständige) und keine relativen Pfadangaben.

oder dbpath := extractfilepath(ParamStr(0)); (isses Selbe)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Problem mit shellexecute und Pfad

  Alt 31. Okt 2010, 09:26
Hallo,
danke für eure Antworten. Das ist mir schon klar. Das ist aber auch nicht mein Problem.

Delphi-Quellcode:
  dbpath:=extractfilepath(application.ExeName);
  i:=ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2\LCRset2.exe'),nil,nil, SW_SHOW);

So läuft das, das Programm meckert nur dass es seine Ini Dateien nicht findet! Mein Problem ist, dass ich dem Programm den Pfad mitgeben muss in dem es seine Dateien findet.

Delphi-Quellcode:
  dbpath:=extractfilepath(application.ExeName);
  i:=ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2\LCRset2.exe'),nil,Pchar(dbpath + 'LCRset2', SW_SHOW);
In dieser Version läuft überhaupt nichts mehr.

Also mein Programm läuft unter:
...searcher\
das aufzurufende Programm liegt unter:
...searcher\LCRset2\LCRset2.exe

shellexecute muss das Programm LCRset2.exe im seinem Verzeichnis ausführen.


Grüsse
Rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.

Geändert von R2009 (31. Okt 2010 um 09:29 Uhr)
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#5

AW: Problem mit shellexecute und Pfad

  Alt 31. Okt 2010, 09:44
Welchen Wert gibt ShellExecute zurück? Die Angabe des WorkingDir (5ter Parameter) ist normalerweise nicht notwendig.

http://msdn.microsoft.com/de-de/libr...=VS.85%29.aspx (Siehe return value etwa in der Mitte der Seite).
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Problem mit shellexecute und Pfad

  Alt 31. Okt 2010, 09:47
Hi,
gibt 2 zurück. Kann ich aus der MSN Site leider nicht nachvollziehen.

Grüsse
Rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#7

AW: Problem mit shellexecute und Pfad

  Alt 31. Okt 2010, 09:50
Also bitte ein bisschen Eigeninitiative: ShellApi.pas öffnen und schauen welche Konstante den Wert 2 hat...

http://www.delphi-treff.de/tipps/son...-shellexecute/

2 = Datei nicht gefunden
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

AW: Problem mit shellexecute und Pfad

  Alt 31. Okt 2010, 09:54
Moin...
Zitat:
So läuft das, das Programm meckert nur dass es seine Ini Dateien nicht findet!
...ist ein Programmierfehler des Programmes.

versuch mal:
Delphi-Quellcode:
dbpath:=extractfilepath(application.ExeName;
i:=ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2\LCRset2.exe'),nil,Pchar(dbpath + 'LCRset2'), SW_SHOW);
... da fehlte in der Pfadangabe eine Klammer.
Ansonsten als Notlösung vorher das CurrentDirectory auf den Pfad mit der LCRset2.exe setzen.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Problem mit shellexecute und Pfad

  Alt 31. Okt 2010, 10:01
Hi,

das funktioniert mit shellexecute nicht!
Habe eine andere Lösung:

Delphi-Quellcode:
procedure ShellExecAndWait(dateiname: string; dir: string; Parameter: string); // 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);
         executeInfo.lpDirectory:= PChar(dir);
         lpFile := PChar(dateiname);
         nShow := SW_SHOWNORMAL;
      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;

Aufgerufen mit:
  dbpath:=extractfilepath(application.ExeName)+'LCRset2\';
  ShellExecAndWait(dbpath + '\LCRset2.exe',dbpath,'');

so funktionierts nicht.
  i:=ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2.exe'),nil,pchar(dbpath), SW_SHOW);
Grüsse
Rainer

PS: würde mich aber schon interessieren warum das so ist!
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Problem mit shellexecute und Pfad

  Alt 31. Okt 2010, 10:04
Hi,
funktioiert doch. Hatte im Pfad einen Fehler.

Delphi-Quellcode:
  dbpath:=extractfilepath(application.ExeName)+'LCRset2\';
  i:=ShellExecute(Application.Handle, 'open', Pchar(dbpath + 'LCRset2.exe'),nil,pchar(dbpath), SW_SHOW); //pchar(dbpath)
Grüsse
rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  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 16: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