2011-03-11 22 views
8

¿Cómo puedo ejecutar un programa externo en C? Por ejemplo, programas de aplicación como browser, word, Notepad, etc. ¿Cómo puedo configurar un determinado tamaño de la ventana del programa de aplicación externo? Por ejemplo, un tamaño de ventana de 300 X 300 píxeles.¿cómo puedo ejecutar un programa externo en C?

+0

Cada hilo debe ser una sola pregunta. Debe crear un nuevo hilo para la segunda pregunta (aunque una búsqueda rápida encontrará las respuestas para ambos). –

Respuesta

2

Ejecuta y programa externo usando system desde la biblioteca estándar C o la función Win32 CreateProcess.

Para cambiar el tamaño de la ventana principal de una aplicación que cree. Primero, inicie el proceso con CreateWindow. Luego use EnumThreadWindows con el controlador de CreateProcess para encontrar la ventana principal de ese proceso. Finalmente, puede llamar al MoveWindow con ese asa para establecer el tamaño y la posición.

0

Para ejecutar un programa externo, el método más directo es con system. Hay otras opciones (use la búsqueda).

Para establecer el tamaño de la ventana, debe interactuar con su administrador de ventanas y pedirle que lo haga. No sé si eso es posible para usted (Windows tiene un comando "start" que puede serle útil si usa ese sistema operativo).

14

La forma estándar es system - funciona prácticamente en cualquier lugar, pero no le da control sobre cómo se ejecuta el proceso secundario.

en orden ascendente de control (y la complejidad), Windows proporciona: WinExec, ShellExecute, ShellExecuteEx, y CreateProcess. Con CreateProcess pasa una estructura STARTUPINFO o STARTUPINFOEX. De cualquier manera, puede especificar la posición inicial y/o el tamaño para la ventana secundaria (aunque el proceso hijo puede y puede mover/cambiar el tamaño de su ventana incluso antes de que sea visible).

Es posible que también desee considerar Boost Process, que no se acepta como parte oficial de Boost, pero proporciona un poco más de control que system, mientras que permanece razonablemente portátil para un buen número de los sistemas más utilizados (incluidos ambos Windows y cualquier cosa razonablemente similar a POSIX, como Linux o OS X).

+0

El problema con 'system' es que abre la consola (en Windows de todos modos). ¿Hay alguna manera de deshacerse de eso? –

+0

Creo que la lista de alternativas que he dado sigue siendo razonablemente precisa. Si necesita capturar la salida de 'stdout' del niño o la entrada de alimentación a su' stdin', también podría considerar 'popen'. También agregué un puntero a Boost.Process, que podría ser útil (pero tenga en cuenta que, a pesar del nombre, oficialmente no es una versión de Boost). –

2

puede utilizar la función del sistema para este propósito, como,

#include <stdlib.h> 

int main() 
{ 
    system("your-program-name"); 

    return 0; 
} 

Esto se ejecutará en el símbolo del sistema.

Pero si desea utilizar winapi la mejor manera es utilizar la función CreateProcess(), http://msdn.microsoft.com/en-us/library/ms682425.aspx

0

Nunca utilice el sistema() en Windows (prohibido) Usar el Shell apis

Cuestiones relacionadas