Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Shellexecute (https://www.delphipraxis.net/14651-shellexecute.html)

SilverMoonGirl 13. Jan 2004 12:59


Shellexecute
 
Hi@all

ich wollte mit Shellexecute ein Programm aufrufen.

Delphi-Quellcode:
ShellExecute(Application.MainForm.Handle, nil, PChar(ExtractFilePath('ADRESS.exe')),nil,nil, SW_SHOWNORMAl);
leider wird aber nur der Projektordner geöffnet, oder muss das Programm(ADRESS.exe) auch in Projektordner liegen?

Matze 13. Jan 2004 13:03

Re: Shellexecute
 
ExtractFilePath gibt auch nur den Pfad zurück, da musst du den kompletten dateinamen reinschreiben ;)

WtF 13. Jan 2004 13:04

Re: Shellexecute
 
Hallo SilvermoonGirl,
also kein wunder das er den ordner öffnet, du extrahierst ja auch den Pfad der exe datei - lass das mit dem extractfilepath einfach weg, dann wird es funktionieren.
Mfg

-arrgh wie schnell doch hier immer alle sind...

SilverMoonGirl 13. Jan 2004 13:06

Re: Shellexecute
 
und wenn sich der Pfad des Programms ändern sollte?

Luckie 13. Jan 2004 13:07

Re: Shellexecute
 
Den Pfad inklusive Dateinamen deines Programmes bekommst du mit ParamStr(0).

SilverMoonGirl 13. Jan 2004 13:08

Re: Shellexecute
 
@WtF

da tut sich dann aber gar nix, nich mal eine Fehlermeldung

Garby 13. Jan 2004 13:09

Re: Shellexecute
 
Hallo,

ich glaube du meinst sowas:
Delphi-Quellcode:
ShellExecute(Application.MainForm.Handle, nil, PChar(ExtractFilePath(Application.ExeName) + '\ADRESS.exe'),nil,nil, SW_SHOWNORMAl);

Skiron 13. Jan 2004 13:09

Re: Shellexecute
 
probier mal
Delphi-Quellcode:
'./Address.exe'
als parameter

tHeRiAn 13. Jan 2004 13:12

Re: Shellexecute
 
Hi und schönen guten morgen....

versuchs mal damit.....
Delphi-Quellcode:
ShellExecute(Application.Handle,'open',pchar(ExtractFilePath(ParamStr(0))+'ADRESS.exe'),nil,nil,SW_SHOW);
funzt bei mir wunderbar.... :thuimb:
therian

[edit=Luckie]Delphi-Tags korrigiert. Mfg, Luckie[/edit]

SilverMoonGirl 13. Jan 2004 13:12

Re: Shellexecute
 
sorry garby leider tut sich auch bei deinem Vorschlag nix

Luckie 13. Jan 2004 13:16

Re: Shellexecute
 
was gibt Shelleexecute zurück:
Zitat:

Zitat von PSDK
Return Value

Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise. The following table lists the error values. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Windows applications. It is not a true HINSTANCE, however. The only thing that can be done with the returned HINSTANCE is to cast it to an int and compare it with the value 32 or one of the error codes below.

0 The operating system is out of memory or resources.
ERROR_FILE_NOT_FOUND The specified file was not found.
ERROR_PATH_NOT_FOUND The specified path was not found.
ERROR_BAD_FORMAT The .exe file is invalid (non-Microsoft Win32® .exe or error in .exe image).
SE_ERR_ACCESSDENIED The operating system denied access to the specified file.
SE_ERR_ASSOCINCOMPLETE The file name association is incomplete or invalid.
SE_ERR_DDEBUSY The Dynamic Data Exchange (DDE) transaction could not be completed because other DDE transactions were being processed.
SE_ERR_DDEFAIL The DDE transaction failed.
SE_ERR_DDETIMEOUT The DDE transaction could not be completed because the request timed out.
SE_ERR_DLLNOTFOUND The specified dynamic-link library (DLL) was not found.
SE_ERR_FNF The specified file was not found.
SE_ERR_NOASSOC There is no application associated with the given file name extension. This error will also be returned if you attempt to print a file that is not printable.
SE_ERR_OOM There was not enough memory to complete the operation.
SE_ERR_PNF The specified path was not found.
SE_ERR_SHARE A sharing violation occurred.


Matze 13. Jan 2004 13:16

Re: Shellexecute
 
Bei Garby musst du den '\' auch weglassen.

SilverMoonGirl 13. Jan 2004 13:17

Re: Shellexecute
 
funktioniert leider auch nicht bei mir;-(((((((
@ therian

tHeRiAn 13. Jan 2004 13:18

Re: Shellexecute
 
sorry :shock:
hab grad nen fehler ausgemerzt....

therian :lol:

Matze 13. Jan 2004 13:22

Re: Shellexecute
 
Also, das geht zu 100%:

Delphi-Quellcode:
ShellExecute(Form1.Handle, 'open', pchar(ExtractFilePath(ParamStr(0)) + 'ADRESS.exe'), nil, nil, SW_SHOW);

SilverMoonGirl 13. Jan 2004 13:22

Re: Shellexecute
 
@matze den "/" hatte ich schon rausgelassen :wink:

choose 13. Jan 2004 13:22

Re: Shellexecute
 
Hallo SilverMoonGirl,

die Funktion ShellExecute zeigt Dir keine Fehlermeldung an (wirft keine Exception) sondern hat spezielle Rückgabewert, um ein Problem zu signalisieren.

Falls den Fehlerfall trotzdem durch eine delphi-typische Exception abbilden möchtest, könntest Du folgendes Probieren:
Delphi-Quellcode:
if ShellExecute(...) <= 32 then
  RaiseLastOSError;
Die Fehlermeldung sollte Dir nun anzeigen, wo das Problem liegt.

Matze 13. Jan 2004 13:27

Re: Shellexecute
 
Zitat:

Zitat von SilverMoonGirl
@matze den "/" hatte ich schon rausgelassen :wink:

Es ist ein '\' ;)

Aber ich hab noch mehr verändert ;) z.B.: Form1.handle

WtF 13. Jan 2004 13:33

Re: Shellexecute
 
lol
Alle posten wie wild wenn mal eine Programmiererin eine Frage stellt - echt cool.
Hast du es jetzt eigentlich hinbekommen @SilverMoonGirl
Mfg

SilverMoonGirl 13. Jan 2004 13:35

Re: Shellexecute
 
@all vielen Dank erstmal für eure Hilfe, funktioniert aber trotzdem nicht, oder muss ich da noch was anderes beachten(shellapi hab ich schon eingebunden)

Matze 13. Jan 2004 13:38

Re: Shellexecute
 
Nö, mehr muss du nicht machen.

WtF 13. Jan 2004 13:39

Re: Shellexecute
 
Also für den code mal aus:

Code:
shellexecute(Application.MainForm.Handle, nil, 'C:\winnt\explorer.exe',nil,nil, SW_SHOWNORMAl);
Dieser sollte ohne zu zucken , wenn das windows verzeichnis denn so lautet, den explorer aufrufen - wenn das nicht geht, weiß ich auch nich weiter
Mfg

Luckie 13. Jan 2004 13:39

Re: Shellexecute
 
Zitat:

Zitat von SilverMoonGirl
@all vielen Dank erstmal für eure Hilfe, funktioniert aber trotzdem nicht, oder muss ich da noch was anderes beachten(shellapi hab ich schon eingebunden)

Was gibt denn Shellexecute nun zurück? :roll:

Matze 13. Jan 2004 13:39

Re: Shellexecute
 
Hast du deine exe auch wirklich im Programmordner? keine Unterordner & Co?

SilverMoonGirl 13. Jan 2004 13:39

Re: Shellexecute
 
toll@matze
aber warum gehts dann trotzdem nicht *grübel*verzweifel*

SilverMoonGirl 13. Jan 2004 13:41

Re: Shellexecute
 
den explorer öffnet sich@WtF *nu gar nix mehr versteh*

Matze 13. Jan 2004 13:42

Re: Shellexecute
 
[OT]4 Posts um 14:39 :lol:[/OT]

Matze 13. Jan 2004 13:42

Re: Shellexecute
 
Zitat:

Zitat von Matze
Hast du deine exe auch wirklich im Programmordner? keine Unterordner & Co?


WtF 13. Jan 2004 13:42

Re: Shellexecute
 
Übrigrens muss man keinen Dateipfad angeben, wenn die auszuführende exe in dem Ordner liegt in dem das Programm ist :wink:

Na Jetzt brauchst du nur noch den Dateipfad anzugeben und dann hast du es lol :thuimb:

Luckie 13. Jan 2004 13:43

Re: Shellexecute
 
Zitat:

Zitat von SilverMoonGirl
den explorer öffnet sich@WtF *nu gar nix mehr versteh*

Auch auf die Gefahr hin mich zu wiederholen: Was gibt denn Shellexecute bei deiner Adress.exe nun zurück? :roll:

SilverMoonGirl 13. Jan 2004 13:48

Re: Shellexecute
 
@luckie gar nichts, jedenfalls sagt er mir nix(s*ofort den tip von choose ausführ*)
@WtF ich weiß nicht ob ich mich falsh ausgedrückt habe, also die ADRESS.exe liegt nicht im Projektordner

WtF 13. Jan 2004 13:48

Re: Shellexecute
 
Hey Luckie ich glaube du wiederholst dich! :mrgreen:
@SilvermoonGirl - vieleicht liegst an der adress.exe?

edit: dann schreib doch einfach mal den gesamten pfad von der adress.exe dahin wo das mit dem explorer steht!

gekmihesg 13. Jan 2004 13:52

Re: Shellexecute
 
das kann doch nicht so schwer sein! ich benutz shellexecute in fast jedem programm und es geht immer

shellexecute(Handle,nil,'hier den kompletten pfad zu exe!! (C:\windows\beispiel.exe)',nil,nil,SW_NORMAL);

Luckie 13. Jan 2004 13:53

Re: Shellexecute
 
Zitat:

Zitat von SilverMoonGirl
@luckie gar nichts, jedenfalls sagt er mir nix(s*ofort den tip von choose ausführ*)

Mach mal:
Delphi-Quellcode:
ShowMessage(IntToStr(Shellexecute(...)));

Matze 13. Jan 2004 13:53

Re: Shellexecute
 
Mit paramstr(0) gelangt man in den Projektordner, das ist natürlich dann fehl am Platz.

SilverMoonGirl 13. Jan 2004 13:53

Re: Shellexecute
 
hab ich gerade gemacht, das funktioniert!!!!
das nützt mir aber nix, weil sich der Pfad der exe ändern kann

Matze 13. Jan 2004 13:54

Re: Shellexecute
 
Hier, ich verlinke mal ;)

http://www.delphipraxis.net/viewtopi...=118946#118946

SilverMoonGirl 13. Jan 2004 13:55

Re: Shellexecute
 
@luckie da kommt eine 42

WtF 13. Jan 2004 13:55

Re: Shellexecute
 
Na dann sieht das ganze doch ganz anders aus, oder hattest du erwähnt das sich der pfad ändert?
Naja, also muss du, bevor du sie ausführst auf der ganzen festplatte suchen oder wie?
Registriere doch eine globale variable wo der Pfadname drinsteht. In wie fern ändert sich denn der pfad?
mfg

Luckie 13. Jan 2004 13:56

Re: Shellexecute
 
OK, hiermit schmneiße ich alles hin. Das kann doch nicht so schwer sein uns eine Zahl mitzuteilen. :evil:

Liegt die Adress.exe immer im Verzeichnis von deinem Programm, in dem du Shellexecute aufrufst?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz