Über c++ .exe öffnen OHNE dass eine dos box aufpoppt
-
Hallo,
ich verzweifle gerade daran eine exe aufzurufen, OHNE dass dabei immer kurz eine schwarze cmd box aufpoppt.Ich habs mit system und so versucht:
#include <windows.h> int main(void) { ShellExecute( NULL, "open", "c:\\test\\myTest\\testFile.exe", NULL, NULL, SW_HIDE ); return 0; }
Das muss doch irgendwie möglich sein?
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x, bzw. C++11) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
-
Hi danke für die Antwort,
ich habs versucht so umzusetzen, aber es poppt trotzdem noch das cmd fenster auf:#include <windows.h> #include <stdio.h> #include <tchar.h> int _tmain( void ) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); // Start the child process. CreateProcess( NULL, // No module name (use command line) "c:\\Spion\\tWinSys\\Screeny.exe", // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE CREATE_NO_WINDOW, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi ); // Pointer to PROCESS_INFORMATION structure // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); return 0; }
-
Liegt wohl daran dass mindestens eins der Programme ein Konsolenprogramm ist.
-
WinMain!
-
mxs schrieb:
Hi danke für die Antwort,
ich habs versucht so umzusetzen, aber es poppt trotzdem noch das cmd fenster auf:[...]
Wenn Du dieses Programm per Doppelklick auf das Icon im Explorer startest, dann poppt das Konsolenfenster vermutlich wegen DIESES Programmes auf, nicht wegen des aufgerufenen. Gib diesem aufrufenden Programm mal wie vorgeschlagen eine WinMain anstelle der main und teste noch einmal.
-
Hi,
Sollte es dennoch am ChildProzess liegen, dann redirecte mal den
STD_IOSTREAM, dann wird das nicht mehr passieren.grüße
-
Du verwendest anscheid Visual C++ -> _tmain
Erstell einfach ein WinApi Projekt.
-
Shellexecute verfügt noch über diverse Möglichkeiten wie z.B. minimiert ausführen oder gar hidden. Dasselbe gilt für CreateProcess.
In deinem Fall wird wohl das aufgerufene Programm ein weiteres Programm aufrufen das hier hochpoppt. Da könnte man nun extremen Aufwand mit Hooks machen
-
So kannste es auch versuchen dann poppt das Konsolen Fenster nur ganz kurz auf.
ShowWindow(FindWindowA("ConsoleWindowClass",NULL),0);
-
Neeeein, dann merkt das Spionageopfer doch, dass da was nicht stimmt!
-
thenoname schrieb:
In deinem Fall wird wohl das aufgerufene Programm ein weiteres Programm aufrufen das hier hochpoppt.
Eher nicht, da er
CREATE_NO_WINDOW
benutzt.
Ich tippe darauf, dass ausgeführte Programm, das hier gepostet wurde, aufpoppt.