Estoy codificando un programa C en Dev-C++ y necesito usar un par de comandos de Windows (CMD). Es fácil, pero cuando se ejecuta el comando en la función system(), el programa ejecuta la consola en la ejecución.
¿Existe otra función, o alguna modificación que no muestra la consola?
¡Gracias! Atentamente.
Dev C ++ está obsoleto, le recomiendo que elija otro
– KeatsPeeks
20 de octubre de 2009 a las 21:16
¿Cómo espera que funcione el comando “pausa” si no se muestra la ventana de la consola? Además, cmd.exe es una aplicación de consola: no hay una manera fácil de evitar que se muestre la ventana de la consola.
–Larry Osterman
20 de octubre de 2009 a las 23:01
@Larry Osterman, Encantado de verte en SO Larry; Disfruto el blog!
– BobbyShaftoe
21 de octubre de 2009 a las 1:07
Dios mío, la última versión estable de Dev-C++ es de 2005… es un poco obsoleta, eso sí. +1 a Samuel.
– a0rtega
21 de octubre de 2009 a las 16:17
Sí, Larry, también pensé esto, pero preguntar es gratis y no hay preguntas similares en stackoverflow 😉
– a0rtega
21 de octubre de 2009 a las 16:27
sergio madrazo
Puedes usar WinExec("your cmd command", SW_HIDE); en lugar de system("cmd command").
Gracias. Soy de los días de Windows de 16 bits, pero olvidé esta función. Fue útil en un escenario importante para Windows LogOn (Cred. Provider DLL), donde MS no permite CreateProcess(), y system() tiene una ventana de consola en la parte posterior (y por lo tanto no es una opción atractiva). ¡Gracias!
– Gran Sol Central
28 de junio de 2017 a las 12:49
Está system("chcp 936") en mi código. Está configurando el cosole para mostrar caracteres chinos. Si lo ejecuto en otra aplicación, sería inútil.
+1 Gracias, lo probaré. No es exactamente lo que estaba buscando, pero es una buena respuesta.
– a0rtega
21 de octubre de 2009 a las 16:19
Probé tu código en ventanas 7, pero no funciona. quiero ejecutar adb shell am broadcast -a NotifyServiceStart. Por cierto, he añadido el adb en el SENDEROy sistema() puede ejecutar esta línea bien.
– Chenzhongpu
11 de enero de 2015 a las 3:13
msdn.microsoft.com/en-ca/library/windows/desktop/… “La cadena puede especificar la ruta completa y el nombre de archivo del módulo a ejecutar o puede especificar un nombre parcial. En el caso de un nombre parcial, la función usa la unidad actual y el directorio actual para completar la especificación. La función no use la ruta de búsqueda. Este parámetro debe incluir la extensión del nombre del archivo; no se asume ninguna extensión predeterminada”.
-Roland Rabien
11 de enero de 2015 a las 16:04
Como dijo FigBug, CreateProcess() es el camino a seguir, pero no creo que CreateProcess() pueda ejecutar una declaración de shell if. Es posible que deba pasar algo como esto como un comando:
"cmd.exe /c \"if not exist c:\my_docs\doc.txt (xcopy /Y doc.txt c:\my_docs\)\""
NOTA: Mi respuesta no se adapta necesariamente a su pregunta específica, pero esta sesión de preguntas y respuestas es la mejor resultado de Google para “Sistema de Windows sin símbolo del sistema” y otras consultas similares.
He aquí una forma de ejecutar comandos sin un nuevo cmd.exe ventana. Basado en la respuesta de Roland Rabien y MSDNhe escrito una función de trabajo.
Funciona en todas las plataformas de Windows. Llama como lo harías system().
Matt Stead
int win_system(const char *command)
{
// Windows has a system() function which works, but it opens a command prompt window.
char *tmp_command, *cmd_exe_path;
int ret_val;
size_t len;
PROCESS_INFORMATION process_info = {0};
STARTUPINFOA startup_info = {0};
len = strlen(command);
tmp_command = malloc(len + 4);
tmp_command[0] = 0x2F; // "https://stackoverflow.com/"
tmp_command[1] = 0x63; // 'c'
tmp_command[2] = 0x20; // <space>;
memcpy(tmp_command + 3, command, len + 1);
startup_info.cb = sizeof(STARTUPINFOA);
cmd_exe_path = getenv("COMSPEC");
_flushall(); // required for Windows system() calls, probably a good idea here too
if (CreateProcessA(cmd_exe_path, tmp_command, NULL, NULL, 0, CREATE_NO_WINDOW, NULL, NULL, &startup_info, &process_info)) {
WaitForSingleObject(process_info.hProcess, INFINITE);
GetExitCodeProcess(process_info.hProcess, &ret_val);
CloseHandle(process_info.hProcess);
CloseHandle(process_info.hThread);
}
free((void *) tmp_command);
return(ret_val);
}
¿Podría incluir alguna explicación/comentario sobre su bloque de código?
– dsillman2000
28 de octubre de 2021 a las 2:26
Su respuesta podría mejorarse con información de apoyo adicional. Edite para agregar más detalles, como citas o documentación, para que otros puedan confirmar que su respuesta es correcta. Puede encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda.
– Comunidad Bot
28 de octubre de 2021 a las 5:55
¿Podría incluir alguna explicación/comentario sobre su bloque de código?
– dsillman2000
28 de octubre de 2021 a las 2:26
Su respuesta podría mejorarse con información de apoyo adicional. Edite para agregar más detalles, como citas o documentación, para que otros puedan confirmar que su respuesta es correcta. Puede encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda.
– Comunidad Bot
28 de octubre de 2021 a las 5:55
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
Dev C ++ está obsoleto, le recomiendo que elija otro
– KeatsPeeks
20 de octubre de 2009 a las 21:16
¿Cómo espera que funcione el comando “pausa” si no se muestra la ventana de la consola? Además, cmd.exe es una aplicación de consola: no hay una manera fácil de evitar que se muestre la ventana de la consola.
–Larry Osterman
20 de octubre de 2009 a las 23:01
@Larry Osterman, Encantado de verte en SO Larry; Disfruto el blog!
– BobbyShaftoe
21 de octubre de 2009 a las 1:07
Dios mío, la última versión estable de Dev-C++ es de 2005… es un poco obsoleta, eso sí. +1 a Samuel.
– a0rtega
21 de octubre de 2009 a las 16:17
Sí, Larry, también pensé esto, pero preguntar es gratis y no hay preguntas similares en stackoverflow 😉
– a0rtega
21 de octubre de 2009 a las 16:27