tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
381
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kyrara Tutorials.de Gastzugang
    Hallo,

    Ich hab damals ein Grund Leergang in C gehabt und wurd von einem freund gefragt ob ich ihn ne kleine hilfsprogramm schreiben könnte nur hab ich leider keine ahnung obs überhaupt geht.
    So soll es ablaufen:
    ---------------------------------
    1. erste.exe startet

    2. zweite.exe startet

    3. erste.exe schließt sich wenn zweite.exe geschlossen wird.

    ----------------------------------

    Das problem ist:

    1. keine ahnung wie ich eine Exe starten kann über C
    2. Weiß ich nicht mal wie die Überwachung funktionieren soll.

    Hab selbst schon ein paar sachen gelesen aber nirgends das passende gefunden.
    Wäre sehr dankbar wenn jemand vielleicht schon nen fertiges Code hätte den ich benutzen oder abschauen könnte.

    MfG Kyrara
     

  2. #2
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Unter Windows würde das so gehen. Die GR-irgendwas sind Typedefs, sollten also problemlos ersetzbar sein. Hier direkt ein Code-Block aus meiner Codebasis, mit etwas Drumherum. Müsste sich aber einfach in C umsetzen lassen, die eigentlichen Funktionen der WinAPI sind ja C.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    
    bool CWinUtils::StartAndWaitForProgram( const GR::tChar* szCommandLine, GR::u32* pExitCode, int iShowWindowFlags )
    {
     
      STARTUPINFO             sui;
     
      PROCESS_INFORMATION     pi;
     
     
      memset( &sui, 0, sizeof( sui ) );
      sui.cb = sizeof( sui );
      sui.wShowWindow = iShowWindowFlags;
     
      GR::tString    strFileName = szCommandLine,
                    strCmdLine = szCommandLine;
     
      if ( ( strFileName.length() )
      &&   ( strFileName[0] == '"' ) )
      {
        // der Pfad ist in Anführungszeichen gehalten
        strCmdLine = strFileName;
        strFileName = strFileName.substr( 1 );
        if ( strFileName.find( '"' ) != std::string::npos )
        {
          strFileName = strFileName.substr( 0, strFileName.find( '"' ) );
        }
      }
      else if ( strFileName.length() )
      {
        if ( strFileName.find( ' ' ) != std::string::npos )
        {
          strFileName = strFileName.substr( 0, strFileName.find( ' ' ) );
        }
      }
     
      GR::tString   strCurDir = strFileName.c_str();
     
      while ( ( strCurDir.length() )
      &&      ( strCurDir[strCurDir.length() - 1] != '\\' ) )
      {
        strCurDir = strCurDir.substr( 0, strCurDir.length() - 1 );
      }
     
      if ( strCurDir.length() )
      {
        strCurDir = strCurDir.substr( 0, strCurDir.length() - 1 );
      }
     
      if ( strCurDir.length() == 2 )
      {
        strCurDir += '\\';
      }
     
      GR::tChar    szCmdLine[MAX_PATH];
     
      wsprintf( szCmdLine, strCmdLine.c_str() );
     
      if ( !CreateProcess( strFileName.c_str(),
                           szCmdLine,
                           NULL,
                           NULL,
                           FALSE,
                           CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP,
                           NULL,
                           strCurDir.c_str(),
                           &sui,
                           &pi ) )
      {
        return false;
      }
     
      MSG     msg;
     
      DWORD   dwExitCode = STILL_ACTIVE;
     
      do
      {
        Sleep( 20 );
        if ( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
        {
          GetMessage( &msg, NULL, 0, 0 );
          if ( IsDialogMessage( ::GetParent( msg.hwnd ), &msg ) )
          {
            continue;
          }
          if ( msg.message == WM_ENDSESSION )
          {
            if ( (BOOL)msg.wParam )
            {
              // das aufgerufene Programm will Windows beenden
              // -> Loop beenden
              break;
            }
          }
          TranslateMessage( &msg );
          DispatchMessage( &msg );
        }
        GetExitCodeProcess( pi.hProcess, &dwExitCode );
      }
      while ( dwExitCode == STILL_ACTIVE );
     
      CloseHandle( pi.hThread );
      CloseHandle( pi.hProcess );
     
      if ( pExitCode != NULL )
      {
        *pExitCode = dwExitCode;
      }
     
      return true;
     
    }
     

  3. #3
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Ich hab das zwar noch nie verwendet, aber so wie ich das sehe könnte folgende Funktion auch hilfreich sein:
    http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx

    Vielleicht kann das auch jemand testen.
     

  4. #4
    Kyrara Tutorials.de Gastzugang
    Danke für die Hilfe habs hinbekommen ^_^

    MfG Kyrara
     

Ähnliche Themen

  1. Überwachung oä.
    Von PC-Freak im Forum PHP
    Antworten: 6
    Letzter Beitrag: 18.03.10, 14:02
  2. Raid Überwachung
    Von merzi86 im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 17.06.08, 19:12
  3. Überwachung von Datensatzänderungen
    Von Romanticus im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 20.12.07, 16:55
  4. Toll für VB überwachung
    Von BruS im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 12.05.07, 12:44
  5. Überwachung des Mausrads?
    Von Shaijan im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 27.03.04, 18:13