CreateProcess(.....)



  • Hallo,

    ich starte mit

    CreateProcess(
    		NULL,
    		(LPTSTR)pszCmdLine,
    		NULL, NULL,
    		TRUE,
    		CREATE_NEW_CONSOLE,
    		NULL, NULL,
    		&si,
    		&pi)
    

    eine Konsolenanwendung.
    Bei einer 32 Bit Anwendung funktioniert alles Wunderbar, habe ich aber eine
    16 Bit-Anwendung dann funktioniert das Ganze nicht. Ich benutze WinXP und VSC++2003.
    Bis jetzt habe ich rausgefunden dass eine ntvdm.exe im Hintergrund gestartet wird und die beansprucht 100% CPU-Leistung. Die ntvdm.exe wird vom System gestartet nachdem die Funktion CreateProcess(...) durchlaufen wird. Im Internet habe ich gefunden dass die ntvdm.exe von XP verwendet wird wenn man eine 16-Bit Anwendung startet (schaft DOS-Umgebung).

    Wie kann ich auf die 16 Bit-Anwendung zugreifen? Oder geht das garnicht? 😞

    Danke!
    🙂



  • Hast du schonmal mit ShellExecute() oder WinExec() versucht .. ?

    Gruß
    :: NoName ::



  • Hallo ::No Name::,

    ich arbeite mit "Pipe's" um Datenströme stdout und stdin abzufangen,
    habe da so ein beispiel (Redirect Demo) von codeproject.com runtergeladen.
    Ich glaube wenn ich ShellExecute oder Winexec benutze kann ich die ein- und Ausgaben nicht abfangen oder?

    Gruß
    bbatec



  • Das wäre wirklich interessant zu wissen, wie man an den stdout von externen Programmen die man aufruft rankommen kann. Weiß das jemand?



  • Ich habe es hinbekommen,

    wenn man eine auf eine 16 Bit Konsolenanwendu greifen will, muss man befor man
    die eigentliche .exe ausführt die cmd.exe(XP) ( Win 9x command.exe) vom system aufrufen und erst dann die eigentliche 16 Bit .exe.

    Das wäre wirklich interessant zu wissen, wie man an den stdout von externen Programmen die man aufruft rankommen kann. Weiß das jemand?

    Auf www.codeproject.com gibt es ein Beispiel "Redirect Demo" heisst es glaube ich.

    Gruß
    bbatec



  • okay, danke. dann werde ich mich mal daran versuchen, obwohl es sehr schwierig aussieht...


Anmelden zum Antworten