Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi batch unsichtbar starten (https://www.delphipraxis.net/68753-batch-unsichtbar-starten.html)

toredo 4. Mai 2006 20:11


batch unsichtbar starten
 
hay,

vielleicht kennt jemand von euch den ipod? und dann vielleicht auch die alternativen firmwares, die es für ihn gibt, z.B. Linux oder die Rockbox oder ein Mini-Wikipedia^^

für die rockbox hab ich einen installer gemacht, ist schon einige zeit her, aber jetzt, hab ich die anfrage bekommen, ne gui dazu zumachen.
natürlich hab ich sofort ja gesagt, also ich hab geschrieben, dass ich es versuchen werde.

aber das ganze in delphi umzuschreiben ist mir zu schwer und dauert wahrscheinlich auch lange, obwohl der installer-code ned so gross ist...

darum hab ich mir dabei gedacht, dass ich einfach eine batch erstellen lasse mit dem die cmd-fenster einfach geöffnet werden...
aber dann möchte ich machen, dass man die cmd-fenster einfach nicht sieht, das wär schon ok:)


also zusammengefasst:
ich möchte ein project ersrtellen, dass batch-dateien starten kann ohne dass sie sichtbar sind.


mfG benj

droppi 4. Mai 2006 20:20

Re: batch>delphi
 
versuchs doch mal mit shellexecute indem du bei
Delphi-Quellcode:
 ShellExecute(Application.Handle,'open',dateiname,Nil, Nil, SW_NORMAL)
den letzen parameter auf sw_hide stellst.

edit
du musst natürlich shellapi einbinden und die parameter auf cmd umändern(steht hier irgendwo im forum wie man so consolenbatchprogramme ausführt).

toredo 4. Mai 2006 20:23

Re: batch unsichtbar starten
 
hay,

ich hab garde noch ne keline frage, der installer-code ist ja irgendwann zu ende, und kann ich da machen, dass ein parameter oder so zu der exe geschickt wird, damit beim installer auch kommt, dass die Installation beendet ist?



mfG toredo

droppi 4. Mai 2006 20:31

Re: batch unsichtbar starten
 
das programm müsste eigenlich erst dann weiterlaufen wenn die batch datei abgearbeitet ist. und wenn nicht müsstest du mal im forum suchen. etwas ähnliches wurde grade erst gefragt. irgendwas mit createprocess. ich kenn mich da nicht sonderlich aus.

toredo 4. Mai 2006 20:33

Re: batch unsichtbar starten
 
ok, werd gleich schauen ob das stimmt, dann ist mein prob nämlich gelöst.



mfG benj


-edit-
das delphi-prog läuft einfach weiter ohne auf die batch zu achten, ich werd jetzt mal createprocess im forum suchen.

und ansonsten könnte man doch machen, dass die batch eine datei erstellt und delphi einfach nach dem batchstart in ne schleife gerät aus der es erst herauskommt wenn die datei der batch erstellt wurde.


mfG toredo

turboPASCAL 4. Mai 2006 20:42

Re: batch unsichtbar starten
 
Nimm statt SchellExec. dieses http://www.delphipraxis.net/internal...hp?p=8860#8860
bzw. hier mal schauen: http://www.delphipraxis.net/internal...=498767#498767

Klaus01 4. Mai 2006 20:46

Re: batch unsichtbar starten
 
Vielleicht hast Du danach gesucht?

Grüße
Klaus

Delphi-Quellcode:
{ WindowState is one of the SW_xxx constants.
  Look up ShowWindow in the API help for a list.}
function ExecAndWait(const Filename, Params: string;
                     WindowState: word): boolean;
{$IFDEF WIN32}
var
  SUInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: string;
begin
  { Enclose filename in quotes to take care of
    long filenames with spaces. }
  CmdLine := '"' + Filename + '" ' + Params;
  FillChar(SUInfo, SizeOf(SUInfo), #0);
  with SUInfo do begin
    cb := SizeOf(SUInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := WindowState;
  end;
  try
    Result := CreateProcess(NIL, PChar(CmdLine), NIL, NIL, FALSE,
                            CREATE_NEW_CONSOLE or
                            NORMAL_PRIORITY_CLASS, NIL,
                            PChar(ExtractFilePath(Filename)),
                            SUInfo, ProcInfo);
  except
    on E: Exception do
      begin
        Result:=false;
      end;
  end;

  { Wait for it to finish. }
  if Result then
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);

{$ELSE}
var
  InstanceID : THandle;
  Buff: array[0..255] of char;
begin
  StrPCopy(Buff, Filename + ' ' + Params);
  InstanceID := WinExec(Buff, WindowState);
  if InstanceID < 32 then
  { a value less than 32 indicates an Exec error }
    Result := FALSE
  else begin
    Result := TRUE;
    repeat
      Application.ProcessMessages;
    until Application.Terminated or
          (GetModuleUsage(InstanceID) = 0);
  end;
{$ENDIF}
end;

toredo 4. Mai 2006 20:49

Re: batch unsichtbar starten
 
hay,


ich hab grade selber einige codes gefunden und sie funzen auch:)

thx für die hilfe:)


mfG toredo

fwsp 4. Mai 2006 20:51

Re: batch unsichtbar starten
 
es gibt auch noch ShellExecuteAndWait.

toredo 7. Mai 2006 11:48

Re: batch unsichtbar starten
 
hay,

kann ich auch so ne fortschrittsanzeige hinzufügen?
also dass immer ausgegeben wird wie weit die batch ist.



mfG toredo


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.
Seite 1 von 2  1 2      

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