Prozess Problem



  • Hey

    String Pfad = "C:\\exe.exe";
    TProcessInformation stgProcessInfo;
    TStartupInfo stgStartupInfo;
    
    setmem(&stgStartupInfo,sizeof(TStartupInfo),0);
    stgStartupInfo.cb = sizeof(TStartupInfo);
    
    CreateProcess(NULL,Pfad.c_str(),NULL,NULL,false,CREATE_DEFAULT_ERROR_MODE  |  NORMAL_PRIORITY_CLASS,NULL,NULL,&stgStartupInfo,&stgProcessInfo);
    
    // dann immer prüfen, ob es noch läuft (mit timer oder so...)
    
    if (WaitForSingleObject(stgProcessInfo.hProcess, 0) != WAIT_TIMEOUT)
    {
    //läuft nicht mehr
    }
    

    Dieser Code funktioniert bei mir nicht. Mein Compiler kennt:TProcessInformation bzw. TStartupInfo eben nicht. Nun würd ich gern wissen, was ich includieren muss, dass mein Compiler die Objekte kennt?
    Habe schon folgendes includiert:

    #include <windows.h>
    #include <conio.h>
    #include <process.h>
    #include <fstream>
    #include <psapi.h> 
    #include <iostream>
    


  • Hi!

    LPSTARTUPINFO
    LPPROCESS_INFORMATION
    

    grüße



  • Danke!

    Aber der ganze Code scheint komplett falsch zu sein.
    Nichts funktioniert auch wenn ich anstatt von setmem (memset) verwende so bekomme ich lauter Probleme.

    stgStartupInfo.cb = sizeof(LPSTARTUPINFO);
    cb has no been declared.

    und wenn ich die zeile "weglasse" und den Create Process Befehl verwende, so bekomme ich auch in diesem 2 Fehler!
    27 C:\Dev-Cpp\zeituhr.cpp cannot convert `STARTUPINFOA**' to `_STARTUPINFOA*' for argument `9' to `BOOL CreateProcessA(const CHAR*, CHAR*, _SECURITY_ATTRIBUTES*, _SECURITY_ATTRIBUTES*, BOOL, DWORD, void*, const CHAR*, _STARTUPINFOA*, _PROCESS_INFORMATION*)'

    usw.

    Kannst du mir einen Code posten, der funktioniert und von dem ich auch was lernen kann?

    Danke für die Mühe 🙂



  • Hi!

    STARTUPINFO stgStartupInfo;
    PROCESS_INFORMATION stgProcessInfo;
    
    ::ZeroMemory( &stgStartupInfo, sizeofstgStartupInfo ) );
    if ( !CreateProcess(NULL,Pfad.c_str(),NULL,NULL,false,CREATE_DEFAULT_ERROR_MODE  |  NORMAL_PRIORITY_CLASS,NULL,NULL,&stgStartupInfo,&stgProcessInfo) )
    {
      // Fehlermeldung ausgeben, ...
    }
    

    So in der Art sollt das laufen! 🙂

    grüße



  • Danke das hat sehr gut geklappt 🙂
    Mein restlicher Code war auch noch richtig +ggg+

    Jetzt habe ich aber noch ne frage:
    wenn ich in dev c++ durchkompiliere bekomme ich ja die .exe datei.

    wenn ich die auf nem anderen pc ausführe funktioniert die jedoch leider nicht, als ob dev c++ standardmäßig keine "release" datei macht.

    wenn dies der fall sein sollte wo muss ich die optionen ändern damit ich ne release bekomme?

    dnkae



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten