Autor Beitrag
Nowo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 108



BeitragVerfasst: Di 10.06.08 01:06 
Habe ein kleines Problem

Also ich habe eine kleine Batch geschrieben die mir im Hintergrund meine Dateien backuppt
und auch einen Logfile speichert.

Nur will ich keine Oberfläche haben.

Deswegen:

Ich Brauch eine Delphiapplikation die selbst keine Oberfläche hat (will nicht mit form.hide arbeiten)
und die diese backup.bat versteckt startet (also "hidden").


Wie kann ich das realisieren ?
Habe keinen blassen Schimmer von nicht Objekt orientierter programmierung.


mfG Nowo


//Edit: nicht wundern warum ich das mit batch mache... habe früher lange daran geschrieben und die Batch macht alles was ich brauche, inklusive uploaden des logfiles auf einen FTP server :D

_________________
Grüße Nowo


Zuletzt bearbeitet von Nowo am Di 10.06.08 18:42, insgesamt 1-mal bearbeitet
uko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: Di 10.06.08 05:44 
Du mußt eine Konsolenanwendung erstellen, Such doch hier mal nach dem Begriff, da wirst Du genügend Hilfe finden.
Und für das Starten: ShellExecute / CreateProcess

Grüße,
Uli
Nowo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 108



BeitragVerfasst: Di 10.06.08 16:18 
ja aber bei einer consolen anwendung erscheint immer ein fenster zu begin

//PS: bei einer consolen anwendung existiert bei mir der Befehl Shell execute garnicht o.O
(create process auch nicht)

_________________
Grüße Nowo
uko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220
Erhaltene Danke: 1

Win XP, VISTA, WIndows 7
Delphi 2007/2010 Prof
BeitragVerfasst: Di 10.06.08 16:36 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
program TestCon;
uses
  Windows;
begin
  WinExec('testAPp.exe', SW_NORMAL);
end.


zum Beispiel.

Grüße,
Uli
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Di 10.06.08 16:44 
user profile iconuko hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
WinExec('testAPp.exe', SW_NORMAL);					

Niemals WinExec benutzen. WinExec ist deprecated und wird in zukünftigen Windows-Versionen verschwinden (bzw. verschwindet gerade schon). Benutze einfach ShellExecute. Dann musst du natürlich ShellAPI einbinden.

user profile iconNowo hat folgendes geschrieben:
ja aber bei einer consolen anwendung erscheint immer ein fenster zu begin
//PS: bei einer consolen anwendung existiert bei mir der Befehl Shell execute garnicht o.O
(create process auch nicht)

Schonmal nachgeschaut, was unter uses steht? ShellExecute befindet sich bekanntlich in der ShellAPI.dcu.

Der einfachste Weg, ein Programm ohne Oberfläche zu erzeugen: Konsolenanwendung erzeugen, dann das {$APPTYPE CONSOLE} oben entfernen., dann einfach zwischen begin und end den entsprechenden Code schreiben.

Moderiert von user profile iconNarses: Zitat gekürzt

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
Nowo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 108



BeitragVerfasst: Di 10.06.08 18:37 
ahh wunderbar, danke

So sieht das ganze fertig aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
program Project2;
//{$APPTYPE CONSOLE}
uses
  SysUtils,ShellAPI;
begin
   shellexecute(0'open', pchar('backup.bat'), nilnil0);
end.


die "0" am ende steht für den Startparameter
(in dem fall SW_HIDE)


Vielen Dank =)

_________________
Grüße Nowo
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 10.06.08 19:11 
Moin!

user profile iconNowo hat folgendes geschrieben:
Ich Brauch eine Delphiapplikation die selbst keine Oberfläche hat (will nicht mit form.hide arbeiten) und die diese backup.bat versteckt startet (also "hidden").
Was ich mich schon die ganze Zeit frage... :gruebel:

Wenn du doch eh schon eine Batch-Datei hast, was soll denn dann noch die Delphi-Anwendung drum rum (die ja eigentlich nix tut, ausser den Batch zu starten)? Und warum machst du das nicht gleich auf Kommandozeilenebene (start /b ...)? :nixweiss: Oder als Task? :?!?:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Nowo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 108



BeitragVerfasst: Di 10.06.08 19:50 
Ich verändere diese Batch so gerne und will die Funktionen ungern nach delphi umschreiben :- /
Mit dem Start parameter einer andere batch würde sich immer noch irgendein Fenster öffnen.
Und da ich die Datei in meinem Autostart Ordner habe, nerft mich immer das selbe aufpoppende CMD-Fenster =)

Habe den Thread als Gelöst makiert :D


Danke an Alle

_________________
Grüße Nowo
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 10.06.08 20:04 
Moin!

user profile iconNowo hat folgendes geschrieben:
Ich verändere diese Batch so gerne und will die Funktionen ungern nach delphi umschreiben :- /
Schon klar. ;)

user profile iconNowo hat folgendes geschrieben:
Mit dem Start parameter einer andere batch würde sich immer noch irgendein Fenster öffnen.
Hä? :| Wenn du eine Verknüpfung zu deiner CMD in den Autostart-Ordner packst und die Start-Option "Minimiert" einstellst, geht da nirgendwo ein Fenster auf... :nixweiss: grade ausprobiert (siehe Anhang), geht :!:

cu
Narses
Einloggen, um Attachments anzusehen!
_________________
There are 10 types of people - those who understand binary and those who don´t.
Nowo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 108



BeitragVerfasst: Mi 11.06.08 15:47 
Aber ich will ja garkein Fenster :roll:
Hab das eben ausprobiert. Die Batch öffnet sich, aber bleibt in der Taskbar.
Ich möchte ja sozusagen einen Hintergrundprozess haben.

Also das fenster soll einfach nicht existieren.

Ich lasse den File nämlich den lieben langen Tag laufen,
und immer einen Button unten mehr zu haben ist lästig.



Nochmal vielen Dank für die vielen Hilfen !!! :D




Nowo

_________________
Grüße Nowo
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 11.06.08 18:40 
user profile iconNowo hat folgendes geschrieben:

die "0" am ende steht für den Startparameter
(in dem fall SW_HIDE)

Und warum schreibst du es denn dann nicht hin?
Nowo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 108



BeitragVerfasst: Do 12.06.08 23:57 
"shellexecute(0, 'open', pchar('backup.bat'), nil, nil, 0);"
:wink:
(oder meinst du warum ich SW_HIDE nicht ausschreibe ?
nun sobald ich es ausschreibe sagt er mir das es nicht genügend parameter wären :? )

_________________
Grüße Nowo
Ebil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: Fr 13.06.08 00:09 
möglicherweise SW_HIDE in [] setzen

"shellexecute(0, 'open', pchar('backup.bat'), nil, nil, [SW_HIDE]);"
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 13.06.08 01:16 
Moin!

user profile iconNowo hat folgendes geschrieben:
(oder meinst du warum ich SW_HIDE nicht ausschreibe ?
nun sobald ich es ausschreibe sagt er mir das es nicht genügend parameter wären :? )
user profile iconEbil hat folgendes geschrieben:
möglicherweise SW_HIDE in [] setzen
Nein, die Unit Windows in der uses-Klausel hinzufügen, dort ist die Konstante definiert. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Ebil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: Sa 14.06.08 12:33 
Oh ja, die units vergess ich au imma :/ Muss RAD imma nen 2. ma starten und ne vcl anwedung machen um zu gucken in welcher unit die funktionen sind :/