Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Createprocess

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.01.2003, 09:55 Uhr
Uli




Code:
m_iResult=0;
STARTUPINFO SI;
PROCESS_INFORMATION PI;
    
ZeroMemory(&SI, sizeof(SI));
    SI.cb=sizeof(SI);
ZeroMemory(&PI, sizeof(PI));
    Ini.ListeEinlesenProdukteIni();
NewString=Ini.GetInhaltSection("Computer","");
do
{
  MessageBox(NewString);
  CString  lpCommandLine=
           "D:\\Andreas\\Prog_VS\\Debug\\PING.exe "+NewString+" -t -n 3"+'\0';
  m_iResult=CreateProcess(NULL,(LPTSTR)(LPCTSTR)lpCommandLine,
                                   NULL,NULL,TRUE,0,NULL,NULL,&SI,&PI);
  if ( m_iResult==0)
     m_iResult=GetLastError();
  NewString=Ini.GetInhaltSection("Computer",NewString);
}while(NewString!="");




Im CreatProcess() werden Werte zurück gegeben. Wie kann ich diese auffangen um sie weiter zu verarbeiten??

MfG
Uli

Dieser Post wurde am 02.01.2003 um 16:12 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.01.2003, 17:34 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Uli,
CreateProcess() gibt einen boolschen Wert zurück. wenn Du eine Fehlerbehandlung schreiben willst dann kannst Du das etwa so lösen:

C++:
void CCreateDlg::OnCreate()
{
    char szCmdLine[] = "c:\\temp\\test.bat";

    STARTUPINFO si;
    memset(&si, 0, sizeof(STARTUPINFO));
    si.cb = sizeof(STARTUPINFO);

    PROCESS_INFORMATION pi;
    memset(&pi, 0, sizeof(PROCESS_INFORMATION));
    BOOL ret = CreateProcess(NULL, szCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

    if (!ret){
        int err = GetLastError();
        char szMsg[80];
        if (err == ERROR_PATH_NOT_FOUND || err == ERROR_FILE_NOT_FOUND)
            sprintf(szMsg, "Cannot find %s", szCmdLine);
        else
            sprintf(szMsg, "Error %d", err);
        AfxMessageBox(szMsg, MB_OK|MB_ICONSTOP);
    }
}
oder wie im Thread Netzwerkressourcen.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.01.2003, 12:00 Uhr
Uli



Hallo Uwe,

die Fehlerbehandlung gibt mir aus ob der Process gestartet werden konnte oder halt nicht. Ich gehe mal davon aus das ich ihn immer starten kann da ich die Ping.exe selber mitschicke. Nun brauche ich aber was die Ping.exe gemacht hat. Sprich wurde der Rechner gefunden bzw. erfolgreich gepingt oder halt nicht. Das Thread nützt mir nicht viel. Ich brauche nicht alle Rechner im Netz sondern nur bestimmte. Von den Rechnern nach den ich suche sind aber IP und Name bekannt. Ein Versuch über CSocket scheint auch nichts zu werden da nicht sicher gestellt ist das auf dem Rechner immer eine Anwendung aktiv ist die meine anfrage beantwortet. Darum würde ich gerne auffangen wollen was Ping.exe zurück gibt. Laut meine MSDN gibt es ein Sampel, welches er aber nicht findet. Im Netz habe ich auch noch keines gefunden.

HILFE

Bye Uli
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: