Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Task-Manager

Alter Hase

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

11

19.03.2007, 20:47

zum einen ja ich habe es versucht jedoch nicht verstanden-> Englisch is nicht mein Ding, obwohl ich es schon seit 4 Jahren lerne.

zum zweiten habe alles so geändert wie du es geschrieben hast, hatt ja auch geklappt, nur das das Battlefield nich gestartet ist, sondern einfach alles beendet wurde. :cry:
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

19.03.2007, 20:48

1. was gibt ShellExecute zurück?
2. zeig mal den code (evtl. auch etwas mehr als zuletzt)

Task-Manager

Alter Hase

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

13

19.03.2007, 20:52

sorry, :oops:

habe BF 2 nur falsch geschrieben, war zu eilig, funktioniert jetzt alles vielen DANK :!: :D

Aber wie macht man es, dass das alte Programm nach dem beenden von BF 2 wieder startet??
Geht das überhaupt?

mfg
BloodRaptor :D
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

19.03.2007, 21:00

wenn du CreateProcess() verwendest, bekommst du ein handle auf den erzeugten prozess und kannst mit WaitForSingleObject() darauf warten, dass der prozess beendet wird.

Task-Manager

Alter Hase

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

15

19.03.2007, 21:01

geht das nicht irgendiwe mit Shellexecute, da CreateProcess so viel is?
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

19.03.2007, 21:04

Zitat

geht das nicht irgendiwe mit Shellexecute, da CreateProcess so viel is?


langsam wirds lustig^^
aber naja, vielleicht geht's, ka, ich weis net wie.

Task-Manager

Alter Hase

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

17

19.03.2007, 21:15

naja, dann gehts wohl an ne lektüre....
trotzdem danke.

Wen ich Probleme mit CreateProcess habe melde ich mich nochmal ;)

mfg
BloodRaptor
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

18

19.03.2007, 21:30

oh...

wie ich sehe hat mein Twin - Brother sich über alles weitere erkundigt :D
...

Task-Manager

Alter Hase

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

19

19.03.2007, 22:21

mann,

ich checke irgendwie nit wie das mit CreateProcess funtkionieren soll. :shock:

Wisst ja will BF 2 so einbinden, dass man es im Spiel starten kann und danach wieder das alte Programm weiter macht.

So jetzt habe ich das Beispiel einfach eingefügt:

C-/C++-Quelltext

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
case 0: //BF 2 starten

void _tmain( int argc, TCHAR *argv[] )
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    if( argc != 2 )
    {
        printf("Usage: %s [cmdline]\n", argv[0]);
        return;
    }

    // Start the child process. 

    if( !CreateProcess( NULL,   // No module name (use command line)

        argv[1],        // Command line

        NULL,           // Process handle not inheritable

        NULL,           // Thread handle not inheritable

        FALSE,          // Set handle inheritance to FALSE

        0,              // No creation flags

        NULL,           // Use parent's environment block

        NULL,           // Use parent's starting directory 

        &si,            // Pointer to STARTUPINFO structure

        &pi )           // Pointer to PROCESS_INFORMATION structure

    ) 
    {
        printf( "CreateProcess failed (%d)\n", GetLastError() );
        return;
    }

    // Wait until child process exits.

    WaitForSingleObject( pi.hProcess, INFINITE );

    // Close process and thread handles. 

    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
}
...wie immer


Gut wo muss ich jetzt BF 2 einbinden oder den Pfad angeben??

Sorry die Frage habe aber echt keinen Schimmer :oops:

mfg
BloodRaptor
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

19.03.2007, 22:31

C-/C++-Quelltext

1
2
case 0: //BF 2 starten

void _tmain( int argc, TCHAR *argv[] ) 


sry, aber wenn ich mir das so anschau, dann bekomm ich irgendwie das gefühl, dass du die von dir gewählte programmiersprache nicht wirklich beherrscht.
oder aber du kopierst einfach ohne nachzudenken codefetzen zusammen, änderst nach bauchgefühl ab und ignorierst sämtliche fehlermeldungen des compilers...

ich vermute stark dass ersteres aufgrund von zweiterem der fall ist. deshalb mein rat:
leg das mal beiseite und lerne erstmal C bzw. C++.
glaub mir, so bringt das nichts.

hier noch, zum ansporn ;):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{

    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    if( !CreateProcess("C:\\WINDOWS\\system32\\notepad.exe", "", 0, 0, 0, 0, 0, 0, &si, &pi) )
        // fehler beim starten des programms (exe nicht gefunden etc.)


    WaitForSingleObject(pi.hProcess, INFINITE);

}

Werbeanzeige