Eisi_GolBay
Grünschnabel
Hi ihr mir Helfenden!
Problem:
Ich bin WinAPI-Anfänger und weiß nicht wie ich bei meinem Programm weiter vorgehen muss. Es läuft fehlerfrei (nach langem Suchen und Probieren), aber es macht noch nicht das was ich will. Alles was ihr an Code seht habe ich mir aus dem Netz zusammengepuzzelt (anderst kann ich das nicht ausdrücken ;-))
Danke für jede Hilfe im voraus
Ziel:
Prozess1 erzeugt mit CreateProcess(...) einen Prozess2
Dateien
Ich habe zwei Dateien process1.cpp und process2.cpp zum editieren. Beide liegen in ihrem jeweils eigenen Ordner (Prozess1 und Prozess2)
Fragen
Wo muss ich den Code von Prozess2 implementieren, damit dieser ausgeführt wird.
Code Prozess1
Code Prozess2
Problem:
Ich bin WinAPI-Anfänger und weiß nicht wie ich bei meinem Programm weiter vorgehen muss. Es läuft fehlerfrei (nach langem Suchen und Probieren), aber es macht noch nicht das was ich will. Alles was ihr an Code seht habe ich mir aus dem Netz zusammengepuzzelt (anderst kann ich das nicht ausdrücken ;-))
Danke für jede Hilfe im voraus
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Ziel:
Prozess1 erzeugt mit CreateProcess(...) einen Prozess2
Dateien
Ich habe zwei Dateien process1.cpp und process2.cpp zum editieren. Beide liegen in ihrem jeweils eigenen Ordner (Prozess1 und Prozess2)
Fragen
Wo muss ich den Code von Prozess2 implementieren, damit dieser ausgeführt wird.
Code Prozess1
Code:
#include "windows.h"
#include <stdio.h>
#include <iostream>
using namespace std;
void error();
void success();
//Aufgabenstellung: process1 erzeugt process2
//Jeder Prozess hat sein eigenes Konsolenfenster
void main()
{
char cmdline[100];
char speiort[100]="...\\WORK_UB1\\process2\\Debug\\process2.exe";
//char strcpy(char *s1, const char *s2);
strcpy(cmdline, speiort);
//*****Tätigkeiten von Prozess1
//Prozess2 erzeugen
STARTUPINFO si2;
PROCESS_INFORMATION pi2;
GetStartupInfo(&si2);
si2.lpTitle = "Kind-Prozess";
ZeroMemory( &si2,sizeof(si2));
ZeroMemory( &pi2,sizeof(pi2));
if(!CreateProcess(NULL, cmdline, NULL, NULL, FALSE,
CREATE_NEW_CONSOLE, NULL, NULL, &si2, &pi2))
{
printf("Prozess2 nicht gestartet\n");
}
//ausgeben der Identität von Prozess2
cout << pi2.hProcess << endl;
cout << pi2.dwProcessId << endl;
//warten auf Beendigung von Prozess2 (erfolgreich/nicht erfolgreich?)
if( WaitForSingleObject(pi2.hProcess,INFINITE)==WAIT_OBJECT_0)
{
success();
}
else
{
error();
}
//warten auf Beendigung von Prozess2 (erfolgreich/nicht erfolgreich?)
if( WaitForSingleObject(pi2.hProcess,INFINITE)==WAIT_OBJECT_0)
{
success();
}
else
{
error();
}
//Schliessen des Prozess-Handle von Prozess2
CloseHandle(pi2.hProcess);
CloseHandle(pi2.hThread);
//warten auf Beendigung von Prozess2 (erfolgreich/nicht erfolgreich?)
if( WaitForSingleObject(pi2.hProcess,INFINITE)==WAIT_OBJECT_0)
{
success();
}
else
{
error();
}
//Prozess1 beenden;
ExitProcess(0);
}
void error()
{
printf("nicht erfolgreich\n");
}
void success()
{
printf("erfolgreich\n");
}
Code Prozess2
Code:
//Identität von Prozess2 bestimmen (handle + processID)
//erst wenn ich weiß, wo ich den Code implementieren soll
//weiß ich (evtl.) was ich hier reinschreiben muss
//Identität Prozess2 ausgeben
cout << dwProcessId << endl;
cout << hProcess << endl;
//Identität Prozess2 bestimmen (handle + processID) und ausgeben
cout << dwProcessId << endl;
cout << hProcess << endl;
//warten bis CR eingegeben wird
char dum;
do
{
//Aufforderung
printf( "Eingabe CR\n" );
//Eingabe
scanf( "%c", &dum );
}
while ( dum == ' ' );
//700 msec warten
Sleep(700);
//Prozess2 beenden
ExitProcess(0);