ich ohne neue cmd
geöffnet verrohrt ein paar Befehle ausführen wollen auszuführen (so kann ich system()
einfach nicht verwenden) Dies ist der Befehl, den ich versuchen, auszuführen:Wie Createprocess oder ShellExecute verwenden verrohrt Befehle
C:\\openssl.exe enc -aes-128-ofb -d -in C:\\encrypted.bin -iv a2b050be9463 -K 6ba62eb7bb2ccace -nopad | C:\\\\mplayer.exe -"
Diese
ist, was ich versucht:
WCHAR prog[] = L"C:\\openssl.exe";
WCHAR args[] = L"enc -aes-128-ofb -d -in C:\\encrypted.bin -iv a2b050be9463 -K 6ba62eb7bb2ccace -nopad | C:\\mplayer.exe -";
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
CreateProcess(prog, args, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
Und es hat nicht funktioniert (es ist kein Fehler, es ist einfach nicht zu öffnen) ich auch
tri diese ed:
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
HINSTANCE hinstRun1 = ShellExecute(NULL, L"open", L"cmd.exe", str2.c_str(), L"", SW_HIDE);
CoUninitialize();
//str2 == C:\\openssl.exe enc -aes-128-ofb -d -in C:\\encrypted.bin -iv a2b050be9463 -K 6ba62eb7bb2ccace -nopad | C:\\\\mplayer.exe -")
Dies ist auch nicht funktioniert (auch hier gibt es keine Fehler, dessen Öffnung nur nicht)
Wenn ich es so versucht:
system(("cmd.exe /c " str2).c_str());
Alles funktioniert gut (außer der Teil, der geöffnet hat auch ein cmd
Fenster.)
Wie kann ich diese Zeile von C/C++ Programm ohne neue cmd
Fenster ausführen?
Überprüfen Sie [GetLastError] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms679360 (v = vs.85) .aspx) – RepeatUntil
Sie haben ein paar Optionen. Sie können 'cmd' bitten, die ganze Arbeit zu erledigen. Es versteht das Symbol '|' für Rohrleitungen. Oder Sie können die Pipe zwischen den beiden Prozessen selbst erstellen, beide Prozesse erstellen und die Pipe zwischen ihnen verbinden. Letzteres beinhaltet den Aufruf von 'CreatePipe' zum Erstellen der Pipe. Und dann zwei Aufrufe von 'CreateProcess', eine für openssl und eine für mplayer. Beginnen Sie mit dem Lesen einiger Dokumentation dieser API-Funktionen und dann einige Beispielprogramme, die Pipes verwenden. –
Sie können Rohre mit fork()/vfork() verwenden, um ähnliche Funktionen zu erzielen. Hast du poen() ausprobiert? – sagar