Ich versuche, CreateProcess zu verwenden, um einen neuen Umgebungsblock zu starten und eine Stapelverarbeitungsdatei in dem neuen Umgebungsblock auszuführen. Ich habe das msdn-Beispiel für CreateProcess gelesen und kam mit dem unten gezeigten Code.
Was passiert, wird die neue Eingabeaufforderung geöffnet und dort gestoppt. Meine .bat-Datei wird aus irgendeinem Grund nicht ausgeführt. Die Verwendung von System ("CALL path") ruft die .bat-Datei auf.
%Vor%Einige Probleme:
/C
an cmd.exe
übergeben, damit die .bat-Datei ausgeführt wird. CreateProcess
muss eine änderbare Zeichenfolge sein. Kein Literal. lpszCurrentVariable
zeigt auf den von GetEnvironmentStrings
zurückgegebenen Puffer. Sie können diesen Puffer nicht ändern. Sie müssen einen neuen Puffer ausreichender Länge zuweisen und die Umgebung darin kopieren. Fügen Sie dann Ihre Änderungen hinzu. StringCchCopy
anstelle von C-Laufzeitfunktionen ist nur verwirrend. Nehmen Sie den MSDN-Beispielcode nicht als Musterbeispiel. std::wstring
und andere Standardbibliotheksklassen und -funktionen. WINDOWS_LEAN_AND_MEAN
definieren, bevor Sie Windows.h
importieren. int main(void)
falsch. Das Argument no% main
ist int main()
. Der folgende Code zeigt Ihnen, wie Sie dies tun:
%Vor%Tags und Links c++ winapi createprocess batch-file