¿Cómo utilizar las funciones del sistema en lenguaje C++? sistema(" D:\ \ aa . txt ");
La ventana CDM no se puede ocultar, pero existe otra opción, que es abrir otro proceso en la interfaz MFC. Hay tres métodos principales: 1. El primer parámetro de la función WinExec (LPCSTR, UInt) es equivalente al parámetro de la función del sistema, y el segundo parámetro puede establecer si se muestra la ventana. SW_HIDE es una macro que oculta una ventana, como Winexec (cmd.c_). //cmd(tipo de cadena) es el nombre del programa que queremos llamar y sus parámetros, como "dir *.exe", pero hay un problema con esto. Esta función regresa después de crear el proceso, es decir, después de regresar, es posible que el proceso no haya finalizado, lo cual es un poco diferente del sistema. No puedo usar esta función aquí ~ ~ 2. El parámetro de la función shellexecutex (shellexecuteinfo *) es una estructura y su función específica es similar a la del sistema. Por ejemplo, shellexecuteinfo = { 0 }; shexecinfo . cbsize = sizeof(SHELLEXECUTEINFO); / Nombre del programa llamado shexecinfo . LP parámetros = par . c _ str(); //Parámetros de la línea de comando del programa que llama ShExecInfo.lpDirectory = NULLShExecInfo.nShow = SW _ HIDE //El estado de la ventana está oculto ShExecInfo.hInstApp = NULLShellExecuteEx(& amp ;ShExecInfo); Pero todavía hay un problema. Como 1, es imposible determinar si el proceso ha terminado ~~~ 3. Función CrearProceso. El uso de esta función se puede encontrar en Baidu ~~ La última pregunta se reduce a si hay una manera de hacer que el programa principal se cuelgue hasta que finalice la subrutina que inicia. Baidu es realmente algo bueno y aparecerán algunas palabras clave después de la búsqueda. Ejemplo de uso de la función waitforsingleobject (handle, dword): Agregue una línea debajo del código 2: waitforsingleobject (Shexecinfo. hprocess, infinito) // Espere hasta que finalice el proceso.
Entonces podemos encapsular completamente el fragmento de código anterior en una pequeña función en lugar de la función del sistema void my system(const string &constant string&par,int nShow){ SHELLEXECUTEINFO ShExecInfo = { 0 cbsize = sizeof (SHELLEXECUTEINFO shexecinfo }; fmask = VER _ MASK _ NOCLOSEPROCESS; ShExecInfo.hwnd = NULLShExecInfo.lpVerb = NULLshexecinfo . Parámetros de la línea de comando para llamar al programa ShExecInfo.lpDirectory = NULLShExecInfo.nShow = SW _ HIDE // El estado de la ventana está oculto ShExecInfo.hInstApp = NULLShellExecuteEx(& ShExecInfo) WaitForSingleObject(shexecinfo . hprocess, INFINITE); termina}