 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Vie 17 Dic, 2004 2:04 pm Asunto: Ocultar consola ejecutando proceso. |
|
|
Hola chicos, a ver si me podeis ayudar, pues yo en el API de Windows me pierdo bastante.
Desde mi aplicación he dado la posibilidad de realizar copias de seguridad de las bases de datos utilizadas por Firebird 1.5, mediante el uso de la herramienta de consola gbak. Actualmente está ya funcionando correctamente, lo único que me gustaría es saber como puedo ocultar la ventana con la consola que me abre para ejecutar el proceso, por ahora aparece la ventana y cuando termina de ejecutarse gbak esta desaparece correctamente.
Utilizé el mismo código que utilizo para arrancar el servidor si este esta OFF.
El código es algo así:
| Código: |
TRegistry *lRegistry = new TRegistry();
STARTUPINFO lStartUpInfo;
SECURITY_ATTRIBUTES lSecurityAttr;
PROCESS_INFORMATION lProcessInfo;
AnsiString ruta_al_fbserver;
try {
lRegistry->RootKey=HKEY_LOCAL_MACHINE;
if (!lRegistry->OpenKey("SOFTWARE\\Firebird Project\\Firebird Server\\Instances", false)) {
ShowMessage("Firebird Server no está instalado en este sistema.");
} else {
AnsiString fecha_sistema=Now().FormatString("yyyymmdd.hhnn");
AnsiString opciones="\\bin\\gbak.exe -b -t -v -y Z:\\BACKUP\\" + fecha_sistema + ".log -user xxxx -password \"xxxx\" C:\\XXXXX\\XXXX.GDB Z:\\BACKUP\\" + fecha_sistema + ".GBK";
ruta_al_fbserver=lRegistry->ReadString("DefaultInstance") + opciones;
}
ZeroMemory(&lStartUpInfo, sizeof(lStartUpInfo));
ZeroMemory(&lProcessInfo, sizeof(lProcessInfo));
lStartUpInfo.cb=sizeof(lStartUpInfo);
lSecurityAttr.nLength= sizeof (lSecurityAttr);
lSecurityAttr.lpSecurityDescriptor=NULL;
lSecurityAttr.bInheritHandle=true;
if (CreateProcess(0, ruta_al_fbserver.c_str(), &lSecurityAttr, NULL, false, 0, 0, 0, &lStartUpInfo, &lProcessInfo)!= NULL) {
ShowMessage("Proceso de copia de seguridad lanzado.");
} else {
ShowMessage("Se ha producido un error al lanzar el proceso de copia de seguridad.");
}
..........
|
¿Alguna sugerencia de qué debo hacer?
Ciao y gracias por adelantado. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Vie 17 Dic, 2004 3:07 pm Asunto: |
|
|
Acabo de ver como resolverlo con ShellExecute.
Ciao y Feliz Navidad. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
Pablo A Castillo Lt


Registrado: 14 Jul 2004Mensajes: 75Ubicación: Caracas - Venezuela
|
Publicado: Sab 18 Dic, 2004 10:05 pm Asunto: hola amigo |
|
|
Bueno en mi editor simple yo use WinExec("cadena ms-dos o .exe el que sea",SW_HIDE); no recuerdo bien los parametros, pero si te sirve en la seccion de tips y tricks hay uno que usa pipes y sirve perfecto cuando son procesos de 32bits, a mi no me sirvio ya que el tasm 3.1 es de 16 bits y no se puede tomar el handle de esos procesos.
espero te sirva un poco esto.
Un saludo! _________________ "Quid quid agis prudenter agas et respice finem"
(Hagas lo que hagas, actúa inteligentemente y considerando el fin)
MyNeoReport - the "FREE" Report Generator for .NET
http://myneoreport.sourceforge.net/
(funciona en Delphi for .NET ) |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|