I/O von Telnet



  • Hi ich möchte gerne über Pipes mit Telnet kommunizieren:

    #include <cstdlib>
    #include <iostream>
    #include <windows.h> 
    #include <stdio.h> 
    
    using namespace std;
    
    HANDLE hChildStdinRd, hChildStdinWr,  
       hChildStdoutRd, hChildStdoutWr;
    
    int main(int argc, char *argv[])
    {
        char IpApplicationName[1000];
    
        STARTUPINFO StartInfo;
        PROCESS_INFORMATION ProcessInfo;
    
        SECURITY_ATTRIBUTES saAttr; 
    
        saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); 
        saAttr.bInheritHandle = TRUE; 
        saAttr.lpSecurityDescriptor = NULL; 
    
        strcpy(IpApplicationName, "c:\\windows\\system32\\telnet.exe");
    
        ZeroMemory(&StartInfo, sizeof(StartInfo));
        ZeroMemory( &ProcessInfo, sizeof(PROCESS_INFORMATION) );
    
        StartInfo.cb = sizeof(StartInfo);
    
        StartInfo.cb = sizeof(STARTUPINFO); 
        StartInfo.hStdError = hChildStdoutWr;
        StartInfo.hStdOutput = hChildStdoutWr;
        StartInfo.hStdInput = hChildStdinRd;
        //StartInfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
        //StartInfo.wShowWindow = SW_SHOW;
    
        if (! CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0)) 
           printf("Stdout pipe creation failed\n"); 
    
        if (! CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0)) 
           printf("Stdin pipe creation failed\n"); 
    
        if (!CreateProcess(IpApplicationName, NULL, NULL, NULL, TRUE, HIGH_PRIORITY_CLASS | CREATE_NEW_CONSOLE, NULL, NULL, &StartInfo, &ProcessInfo))
    
        CloseHandle(&ProcessInfo.hThread);
    	CloseHandle(&ProcessInfo.hProcess);
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Sobald ich jedoch Telnet mit dem Flag STARTF_USESTDHANDLES starte, schliesst sich Telnet automatisch. Weshalb?

    MfG Joe


Anmelden zum Antworten