Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: DOS und Win32-Konsole ::  C++ und batch     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
7xCore
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.07.2011
Beiträge: 386
Beitrag 7xCore Mitglied 00:05:30 06.01.2012   Titel:   C++ und batch            Zitieren

Hallo!
Nun ich habe mich gefragt, ob es möglich ist einen Batchcode in meinem c++ Programm zu verwenden.Also nicht, das man z.B. die Batchdatei über system(); oder CreateProcess(); sondern das der Code der eigentlich in der Batchdatei stehen würde, in meinem c++ code steht.

Mein Freund und ich wollten da was basteln, ein server wird eben über diese batch gestartet, das sieht aber so langweilig aus, also bisschen farbe und struktur....

:xmas1:

_________________
Mehr Spaß mit der Windows Konsole? -> http://www.coreengine.de.vu


Zuletzt bearbeitet von 7xCore am 00:06:15 06.01.2012, insgesamt 1-mal bearbeitet
Thuruk
Unregistrierter




Beitrag Thuruk Unregistrierter 01:04:50 06.01.2012   Titel:              Zitieren

Nicht getestet, aber evtl. so:

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <windows.h>

LPCWSTR text= L"Das Skript wird nun ausgeführt.", caption=L".bat-Launcher";

char *filename="batch.bat";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){

MessageBox(NULL, text, caption, MB_OK);

system(filename);

return 0;

}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <windows.h>

LPCWSTR text= L"Das Skript wird nun ausgeführt.", caption=L".bat-Launcher";

char *filename="batch.bat";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){

MessageBox(NULL, text, caption, MB_OK);

system(filename);

return 0;

}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <windows.h>

LPCWSTR text= L"Das Skript wird nun ausgeführt.", caption=L".bat-Launcher";

char *filename="batch.bat";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){

MessageBox(NULL, text, caption, MB_OK);

system(filename);

return 0;

}
_matze
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 9600
Beitrag _matze Mitglied 08:40:33 06.01.2012   Titel:              Zitieren

Er wollte ja gerade kein system benutzen.

Selbstverständlich kannst du die Funktionalität deines Skripts nachprogrammieren. Die Frage ist, wie sinnvoll das ist...

_________________
Wie viele atheistische Babys hat man schon aus Versehen - oder gar mit Absicht! - getauft?
f.-th.
Unregistrierter




Beitrag f.-th. Unregistrierter 10:38:19 06.01.2012   Titel:              Zitieren

Farbe?
Suchst du so was:
http://www.codeproject.com/KB/dialog/BatchFileColors.aspx?display=Print
Hab das nicht eingehend angesehen.

Unter DOS war das damals so, wenn man vergass die Farbattribute zurückzusetzen, blieben die in den folgenden Programmen erhalten bis da eingegriffen wurden.

Unter Win32 werden die Farbattribute zurückgesetzt.

Der "Textbildschirm" unter DOS enthielt die Information von Zeichen und Farben.
Vielleicht kommt man da unter Win32-Console auch noch dran. Unter DOS ging das direkt. Unter Windows ist vieles abgeschirmt.

Sonst mal "batch color" oder ähnliches in die Suche eingeben und schauen ob die Ergebnisse heute noch funktionieren.

Ist Windows Script statt Batch für euch eine Alternative?

MfG f.-th.
7xCore
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.07.2011
Beiträge: 386
Beitrag 7xCore Mitglied 12:12:51 06.01.2012   Titel:              Zitieren

@Thuruk So könnte man das machen, aber so wollte ich das ja nicht machen.

@f.-th. Danke für deine Antwort, aber das war nicht mein Problem/Frage.Aber Das mit dem Windows Script hört sich interesant an?Was genau ist das ?

_________________
Mehr Spaß mit der Windows Konsole? -> http://www.coreengine.de.vu
7xCore
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.07.2011
Beiträge: 386
Beitrag 7xCore Mitglied 12:37:06 06.01.2012   Titel:              Zitieren

Also:

Ich wollte es eigentlich so haben, das der output von der batch datei in meinem win32 console angezeigt wird.
Z.B. wenn in meiner batch
Code:
echo TEST
Code:
echo TEST
Code:
echo TEST
steht, bigt es dann irgendwas was so sein könnte :
C/C++ Code:
batchstring meinbatch= "msg * hallo";
Batchexec(meinbatch);
C/C++ Code:
batchstring meinbatch= "msg * hallo";
Batchexec(meinbatch);
C/C++ Code:
batchstring meinbatch= "msg * hallo";
Batchexec(meinbatch);

Also meine Frage ist nur die Frage der Möglichkeit, nichts mit farbe und extra Zeug.Alle die wege die bis jetzt kamen kenn ich schon, deswegen interessiert mich ob es so was wie im code bsp gibt

_________________
Mehr Spaß mit der Windows Konsole? -> http://www.coreengine.de.vu
Belli
Mitglied

Benutzerprofil
Anmeldungsdatum: 29.08.2009
Beiträge: 1110
Beitrag Belli Mitglied 13:34:04 06.01.2012   Titel:              Zitieren

Dunkel ist der Rede Sinn ...

1. Output der Batch-Datei wird standardmäßig auf der Win32 Konsole ausgegeben.
2. Die beiden Code-Fragmente stehen in keinerlei Zusammenhang miteinander ... ?!
Batch
Unregistrierter




Beitrag Batch Unregistrierter 13:46:08 06.01.2012   Titel:              Zitieren

Hallo

color syntax:
color XY

X = Hintergrundfarbe
Y = Textfarbe

Code:
@echo off
color 9c
echo Ich bin ein roter Text auf blauem Hintergrund!
pause
Code:
@echo off
color 9c
echo Ich bin ein roter Text auf blauem Hintergrund!
pause
Code:
@echo off
color 9c
echo Ich bin ein roter Text auf blauem Hintergrund!
pause




Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
C:\Dokumente und Einstellungen\User>color ?
Legt die Hinter- und Vordergrundfarben für die Konsole fest.

COLOR [attr]

  attr      Gibt die Farbattribute für die Konsolenausgabe an.

Farbattribute werden durch ZWEI hexadezimale Ziffern angegeben - die erste
bezieht sich auf den Hintergrund, die zweite auf den Vordergrund. Jede Ziffer
kann einen der folgenden Werte annehmen:

    0 = Schwarz        8 = Dunkelgrau
    1 = Dunkelblau     9 = Blau
    2 = Dunkelgrün     A = Grün
    3 = Blaugrün       B = Zyan
    4 = Dunkelrot      C = Rot
    5 = Lila        D = Magenta
    6 = Ocker          E = Gelb
    7 = Hellgrau       F = Weiß

Wenn der COLOR-Befehl ohne Argument aufgerufen wird, werden die Farbein-
stellungen wiederhergestellt, mit denen CMD.EXE gestartet wurde. Diese werden
durch das aktuelle Konsolenfenster, die /T-Befehlszeilenoption oder durch den
Registrierungswert "DefaultColor" bestimmt.
Drücken Sie eine beliebige Taste . . .
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
C:\Dokumente und Einstellungen\User>color ?
Legt die Hinter- und Vordergrundfarben für die Konsole fest.

COLOR [attr]

attr Gibt die Farbattribute für die Konsolenausgabe an.

Farbattribute werden durch ZWEI hexadezimale Ziffern angegeben - die erste
bezieht sich auf den Hintergrund, die zweite auf den Vordergrund. Jede Ziffer
kann einen der folgenden Werte annehmen:

0 = Schwarz 8 = Dunkelgrau
1 = Dunkelblau 9 = Blau
2 = Dunkelgrün A = Grün
3 = Blaugrün B = Zyan
4 = Dunkelrot C = Rot
5 = Lila D = Magenta
6 = Ocker E = Gelb
7 = Hellgrau F = Weiß

Wenn der COLOR-Befehl ohne Argument aufgerufen wird, werden die Farbein-
stellungen wiederhergestellt, mit denen CMD.EXE gestartet wurde. Diese werden
durch das aktuelle Konsolenfenster, die /T-Befehlszeilenoption oder durch den
Registrierungswert "DefaultColor" bestimmt.
Drücken Sie eine beliebige Taste . . .
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
C:\Dokumente und Einstellungen\User>color ?
Legt die Hinter- und Vordergrundfarben für die Konsole fest.

COLOR [attr]

  attr      Gibt die Farbattribute für die Konsolenausgabe an.

Farbattribute werden durch ZWEI hexadezimale Ziffern angegeben - die erste
bezieht sich auf den Hintergrund, die zweite auf den Vordergrund. Jede Ziffer
kann einen der folgenden Werte annehmen:

    0 = Schwarz        8 = Dunkelgrau
    1 = Dunkelblau     9 = Blau
    2 = Dunkelgrün     A = Grün
    3 = Blaugrün       B = Zyan
    4 = Dunkelrot      C = Rot
    5 = Lila        D = Magenta
    6 = Ocker          E = Gelb
    7 = Hellgrau       F = Weiß

Wenn der COLOR-Befehl ohne Argument aufgerufen wird, werden die Farbein-
stellungen wiederhergestellt, mit denen CMD.EXE gestartet wurde. Diese werden
durch das aktuelle Konsolenfenster, die /T-Befehlszeilenoption oder durch den
Registrierungswert "DefaultColor" bestimmt.
Drücken Sie eine beliebige Taste . . .
7xCore
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.07.2011
Beiträge: 386
Beitrag 7xCore Mitglied 13:46:14 06.01.2012   Titel:              Zitieren

EDIT: In meiner Frage ging es kein bisschen um Farbe!Warum dreht mir jeder hier an wie ich Farbe machen soll? :rolleyes:

Da es scheinbar keine andere möglichkeit gibt, hab ich das ganze jetzt über system(); gemacht
Trotzdem danke an alle ;)

_________________
Mehr Spaß mit der Windows Konsole? -> http://www.coreengine.de.vu


Zuletzt bearbeitet von 7xCore am 14:46:59 06.01.2012, insgesamt 1-mal bearbeitet
Thuruk
Unregistrierter




Beitrag Thuruk Unregistrierter 18:43:53 06.01.2012   Titel:              Zitieren

Öhm doch, dur sprachst von 'Farbe und Struktur', kann man ja wörtlich nehmen. ;)
7xCore
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.07.2011
Beiträge: 386
Beitrag 7xCore Mitglied 20:57:26 06.01.2012   Titel:              Zitieren

Ja doch wie ich sehe hast du immernoch nicht meinen ganzen Post gelesen, sondern nur diese 2 Wörter.Die Frage steht ein Satz darüber, das was du gelesen hast ist das Ziel was wir haben.

Aber egal

_________________
Mehr Spaß mit der Windows Konsole? -> http://www.coreengine.de.vu


Zuletzt bearbeitet von 7xCore am 20:57:51 06.01.2012, insgesamt 1-mal bearbeitet
-lowbyte-
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.10.2010
Beiträge: 233
Beitrag -lowbyte- Mitglied 00:36:08 08.01.2012   Titel:              Zitieren

Kannst es mit CreateProcess machen... aber vorher die FileHandles umbiegen in eine unnamedpipe, von der Du dann den Output lesen kannst.


C/C++ Code:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
    STARTUPINFO         sInfo;
    PROCESS_INFORMATION pInfo;
    ZeroMemory(&sInfo,sizeof(sInfo));
    ZeroMemory(&pInfo,sizeof(pInfo));
    sInfo.cb        =    sizeof(sInfo);
    sInfo.dwFlags    =    STARTF_USESTDHANDLES;
    sInfo.hStdInput    =    NULL;     // Stdin = muss null sein
    sInfo.hStdOutput=    wPipe;    // Stdout = muss write-pipe sein
    sInfo.hStdError    =    wPipe;    // Stderror = muss/darf write-pipe sein
C/C++ Code:
1
2
3
4
5
6
7
8
9
STARTUPINFO sInfo;
PROCESS_INFORMATION pInfo;
ZeroMemory(&sInfo,sizeof(sInfo));
ZeroMemory(&pInfo,sizeof(pInfo));
sInfo.cb = sizeof(sInfo);
sInfo.dwFlags = STARTF_USESTDHANDLES;
sInfo.hStdInput = NULL; // Stdin = muss null sein
sInfo.hStdOutput= wPipe; // Stdout = muss write-pipe sein
sInfo.hStdError = wPipe; // Stderror = muss/darf write-pipe sein
C/C++ Code:
1
2
3
4
5
6
7
8
9
    STARTUPINFO         sInfo;
    PROCESS_INFORMATION pInfo;
    ZeroMemory(&sInfo,sizeof(sInfo));
    ZeroMemory(&pInfo,sizeof(pInfo));
    sInfo.cb        =    sizeof(sInfo);
    sInfo.dwFlags    =    STARTF_USESTDHANDLES;
    sInfo.hStdInput    =    NULL;     // Stdin = muss null sein
    sInfo.hStdOutput=    wPipe;    // Stdout = muss write-pipe sein
    sInfo.hStdError    =    wPipe;    // Stderror = muss/darf write-pipe sein

_________________
XOR-BASE http://vpn23.homelinux.org
News: BaseX Encoding Library C/C++


Zuletzt bearbeitet von -lowbyte- am 00:37:39 08.01.2012, insgesamt 1-mal bearbeitet
merano
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.12.2006
Beiträge: 231
Beitrag merano Mitglied 14:42:26 08.01.2012   Titel:              Zitieren

Der Vorschlag von Lowbyte sollte es richten; die Standard-Handles vor Prozesserzeugung umbiegen und die Ausgabe dann ins Fenster schreiben.

Ausserdem kann man noch auf das Ende warten:

C/C++ Code:
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
if(CreateProcess(0, szExe, 0, 0, FALSE, 0, 0, 0, &sInfo, &pInfo))
{
// optionally wait for process to finish
WaitForSingleObject(pInfo.hProcess, INFINITE);

CloseHandle(pInfo.hProcess);
CloseHandle(pInfo.hThread);
}
C/C++ Code:
1
2
3
4
5
6
7
8
if(CreateProcess(0, szExe, 0, 0, FALSE, 0, 0, 0, &sInfo, &pInfo))
{
// optionally wait for process to finish
WaitForSingleObject(pInfo.hProcess, INFINITE);

CloseHandle(pInfo.hProcess);
CloseHandle(pInfo.hThread);
}
C/C++ Code:
1
2
3
4
5
6
7
8
if(CreateProcess(0, szExe, 0, 0, FALSE, 0, 0, 0, &sInfo, &pInfo))
{
// optionally wait for process to finish
WaitForSingleObject(pInfo.hProcess, INFINITE);

CloseHandle(pInfo.hProcess);
CloseHandle(pInfo.hThread);
}


Ausserdem kann man noch die Process Creation Flags (dwCreationFlags) z.B.
mit CREATE_NO_WINDOW beeinflussen - auch Prioritäten u.a.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684863(v=vs.85).aspx

Ein fettes Beispiel findet sich hier:
Creating a Child Process with Redirected Input and Output
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682499(v=vs.85).aspx
C/C++ Forum :: DOS und Win32-Konsole ::  C++ und batch   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.