Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi *.bat execute!?! (https://www.delphipraxis.net/49396-%2A-bat-execute.html)

CodenameCookie 10. Jul 2005 20:52


*.bat execute!?!
 
Nabend Community ,

habe ein wenig gesucht .. entweder zu blind oder gibt nicht direkt sowas wie ich es mir vorstelle , und zwar , auf knopfdruck sollp das Programm 1.bat ausführen ! Falls ich vorhandene Beiträge übersehen habe , bitte ich vielmals um verzeihung ....

Danke im Vorraus

CC :)

BenjaminH 10. Jul 2005 20:55

Re: *.bat execute!?!
 
Hallo
Wie wärs mit ShellExecute?
So long Benjamin

CodenameCookie 10. Jul 2005 20:57

Re: *.bat execute!?!
 
Jo , das habe ich schon gefunden , aber muss gestehen das ich da ned wirklich durchblicke , wenns ned allzugroßer aufwand für dich is , kannst du mir ein EXMP geben?

Danke im Vorraus

CC :)

DGL-luke 10. Jul 2005 21:00

Re: *.bat execute!?!
 
[dp]shellexecute*[/dp]

mal sehen:
Delphi-Quellcode:
shellexecute(application.handle,
    'open',
    PChar( extractfilepath(paramstr(0))+'1.bat'),
    '-bla - foo -bar x',
    '',
    SW_HIDE)
wie wärs denn damit?

leddl 10. Jul 2005 21:13

Re: *.bat execute!?!
 
Ich bin mir nich mehr ganz sicher, aber müssen die Parameter nich auch als PChar übergeben werden? :gruebel:

CodenameCookie 10. Jul 2005 21:14

Re: *.bat execute!?!
 
hmm bin grad ziemlich verwirrt , google und suche spuckt überall was anderes raus :-/ ...
leddl , hast du vllt ein genaueres Beispiel?

CC :)

BenjaminH 10. Jul 2005 21:19

Re: *.bat execute!?!
 
Also ich würde, um auf Leddl einzugehen, sagen statt so:
Delphi-Quellcode:
shellexecute(application.handle,
    'open',
    PChar( extractfilepath(paramstr(0))+'1.bat'),
    '-bla - foo -bar x',
    '',
    SW_HIDE)
so:
Delphi-Quellcode:
shellexecute(application.handle,
    PChar('open'),
    PChar( extractfilepath(paramstr(0))+'1.bat'),
    PChar('-bla - foo -bar x'),
    nil ,//Da bin ich mir nicht sicher
    SW_HIDE)
[Edit] Alle haben extracfilepath geschrieben.. und ich hatte es einfach reinkopiert...

leddl 10. Jul 2005 21:24

Re: *.bat execute!?!
 
@CodenameCookie:
Warum? Was großartig anderes, als das, was Luke geschrieben hat, werde ich auch nicht machen können.
Am besten, du schaust dir ShellExecute einfach mal in der OH an, da is das eigentlich recht gut erklärt.
Also, schaus dir da mal an, und frag nochmal, falls du da was nicht verstanden hast.

@BenjaminH:
Ja, so siehts für mich jetzt auch richtiger aus. Allerdings stört mich jetzt das PChar vor 'open'. :gruebel: Ich glaube nicht, daß das da hingehört. Aber ich hab ShellExecute auch schon ne Weile nicht mehr benutzt.

BenjaminH 10. Jul 2005 21:27

Re: *.bat execute!?!
 
So, ich habs einfach mal ausprobiert, es wurde compiliert(wird das so dann mit k geschrieben?)

DGL-luke 10. Jul 2005 21:40

Re: *.bat execute!?!
 
also: bei literalen ist PChar nicht notwendig. nur so als statement ;)

leddl 10. Jul 2005 21:45

Re: *.bat execute!?!
 
Ah, okay. Ich hab das damals immer mit Arrays of Char gelöst. Hatte mir extra mal ne Funktion geschrieben, um den "komplizierten" Aufruf von ShellExecute zu vereinfachen. :mrgreen:

Delphi-Quellcode:
function ExecuteFile(Handle : HWND; FileName, Params : String) : Boolean;
Var Datei, Parameter : Array[0..800] of Char;
Begin
  If FileExists(FileName) Then
  Begin
      StrPCopy(Datei,FileName);
      StrPCopy(Parameter,Params);
      ShellExecute(Handle,'open',Datei,Parameter,nil,SW_NORMAL);
      Result := true;
  End
  Else
    Result := false;
End;
PS: Ja, es heißt "compilieren". ;)

DGL-luke 10. Jul 2005 21:54

Re: *.bat execute!?!
 
tja leddl... schlecht, wenn man nichts von PChar weiss. :mrgreen: :lol:

PChar gibt glaube ich die anfangsadresse des strings zurück, allerdings ohne den reference count zu erhöhen, was ja ideal für solche funktionsaufrufe ist.

leddl 11. Jul 2005 00:32

Re: *.bat execute!?!
 
Ich geb zu, daß ich von PChars nicht allzuviel weiß. Hauptsache, ich weiß, wie ich einen bekomm. :mrgreen:
Allerdings hab ich da dunkel irgendwas im Kopf, daß ich damals gezwungenermaßen auf das Array of Byte umgestiegen bin. Hab aber keine Ahnung mehr, was genau das war.

CodenameCookie 11. Jul 2005 11:59

Re: *.bat execute!?!
 
Ok Leute habe es nu so erstmal gelöst:

Delphi-Quellcode:
ShellExecute(Application.Handle,PChar('open'),PChar('bla.exe'),PChar(0),nil,SW_NORMAL);
So nun geht es um einen ClanBot , er muss auf dem server einen GameServer starten mit Befehlszeile in etwa so "bla.exe -pwCLANWAR" ... habe versucht es so zu lösen:

Delphi-Quellcode:
ShellExecute(Application.Handle,PChar('open'),PChar('bla.exe -pwCLANWAR'),PChar(0),nil,SW_NORMAL);
aber er öffnet die .exe nicht , denke ma die Befehlszeile muss extra "angemeldet" werden , jmd eine Idee ?!

Danke im Vorraus

CC :-D

100nF 11. Jul 2005 12:08

Re: *.bat execute!?!
 
hi,

vielleicht so?
Delphi-Quellcode:
ShellExecute(Application.Handle,PChar('open'),PChar('bla.exe'),PChar('-pwCLANWAR'),nil,SW_NORMAL);

leddl 11. Jul 2005 12:10

Re: *.bat execute!?!
 
Anscheinend haste dich nich sonderlich damit beschäftigt ;)
Denn - in deinem Fall - der 3. PChar-Parameter steht für die zu übergebenden Parameter. Daher mußt du diese eben auch genau dort übergeben, und nicht im Dateinamen.

@urbanbruhin:
Nich nur vielleicht, das sollte so klappen :mrgreen:

DGL-luke 11. Jul 2005 12:10

Re: *.bat execute!?!
 
DA musst du dir mein erstes bsp. noch mal ansehen ;)

Delphi-Quellcode:
shellexecute(application.handle,
    'open',
    PChar( extractfilepath(paramstr(0))+'1.bat'),
    '-bla - foo -bar x', //das hier ist es - verständlich, oder? ;)
    '',
    SW_HIDE)

CodenameCookie 11. Jul 2005 13:03

Re: *.bat execute!?!
 
Zitat:

Zitat von urbanbruhin
hi,

vielleicht so?
Delphi-Quellcode:
ShellExecute(Application.Handle,PChar('open'),PChar('bla.exe'),PChar('-pwCLANWAR'),nil,SW_NORMAL);

Vielen Dank so funzt.es - @Luke jo ThX , is mir ned so aufgefallen ;) .

CC :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 Uhr.

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