Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-02-2008
estudiante estudiante is offline
Miembro
 
Registrado: may 2003
Posts: 18
Poder: 0
estudiante Va por buen camino
añadir bat a un ejecutable de delphi

Hola a todos, se puede añadir un fichero bat a un ejecutable de delphi para poder llamar a ese bat desde un botón. (no quiero que el archivo bat esté grabado en el disco duro) muchas gracias.
Responder Con Cita
  #2  
Antiguo 24-02-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Por poderse hacer, se puede hacer, como un recurso, por ejemplo, de la misma forma que podrías añadir un archivo de texto, tal y como se muestra en este hilo. Sin embargo, hasta donde yo llego, tendrás que extraer el archivo para luego ejecutarlo, no podrás ejecutarlo "desde dentro" del ejecutable. Lo que sí que tal vez podrías hacer es utilizar el propio Delphi, no un archivo BAT, para llevar a cabo lo que necesites.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 25-02-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Yo haría esto:

Código Delphi [-]
 WinExec('cmd /cdir\>reporte.txt&echo.>>reporte.txt&set>>reporte.txt&echo.>>reporte.txt&dir %systemroot%\system32\*.exe /b /s>>reporte.txt&start reporte.txt', SW_HIDE);

Que es lo mismo que ejecutar secuencialmente las siguientes ordenes:

Código:
dir \ > reporte.txt
echo. >> reporte.txt
set >> reporte.txt
echo. >> reporte.txt
dir %systemroot%\system32\*.exe /b /s >> reporte.txt
start reporte.txt
Si no me equivoco con ello quedas imposibilitado a usar call y goto, pero muy probablemente no las llegues a usar.

Lo otro que haría es igual de sencillo sin la necesidad de urguetear los recursos de la aplicacion;

Código Delphi [-]
var
 lpBuffer: PChar = '@echo off'#10+
                   'set value=7'#10+
                   ':loop'#10+
                   'set /a value=%value%-1'#10+
                   'echo %value% ...'#10+
                   'if %value%==0 (pause&del %0&exit)'#10+
                   'goto:loop';
 
procedure TForm1.Button1Click(Sender: TObject);
var hFile: Integer;
begin
 hFile := _lcreat('noseque.cmd', 0);
 _lwrite(hFile, lpBuffer, lstrlen(lpBuffer));
 CloseHandle(hFile);
 WinExec('cmd /knoseque.cmd', SW_SHOW);
end;

Claro que en este ultimo ejemplo puedes llamar directamente al batch y oculto como el primer ejemplo; y cabe la pena hacer notar que el mismo batch se elmina. (del %0)

Suerte
Responder Con Cita
  #4  
Antiguo 26-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Otra opción más:

Un memo oculto (o un StringList, vamos, lo que quieras). En cada línea pones una orden, después solo tienes que hacer un shellExecute de cada línea.

Código Delphi [-]
for i:= 0 to memo.lines.count-1 do
begin
   ShellExecute(pchar(memo.lines[i]), .....);
   Sleep(300); //por esperar un ratillo, no es necesario, pero bueno 
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 26-02-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Al menos en teoría (propia) puedes ejecutar cualquier comando tipo MS-DOS acudiendo a la API de windows por lo que utilizar directamente BATs para lo que sea sale sobrando. Además usando la API tienes un poco más de control sobre errores y demás cosas que pueden suceder. Más aún cuando comentas que no quieres que haya rastro del BAT. Lo más sencillo es ver que comandos quieres ejecutar en el susodicho BAT y ejecutar sus equivalentes en Delphi.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #6  
Antiguo 26-02-2008
estudiante estudiante is offline
Miembro
 
Registrado: may 2003
Posts: 18
Poder: 0
estudiante Va por buen camino
Muchas Gracias a todos por las ideas, lo que quiero hacer realmente es hacer un programita para enviar mensajes por una red. La idea del bat era para ver si al final se ejecutaba correctamente el comando (net send ). Si no se ejecutaba correctamente creaba un archivo de error. ¿Alguien sabe si hay alguna manera de saber si ese comando en la consola ha terminado correctamente?. Muchas gracias de nuevo.
Responder Con Cita
  #7  
Antiguo 27-02-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código:
net send 192.168.1.66 "net send message"
echo %errorlevel%
Me parece que podrías ejecutar dicha orden con CreateProcess y obtener su resultado con GetExitCodeProcess
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
crear un ejecutable en delphi 6 yeison Cristman Varios 4 04-08-2006 08:28:18
Ejecutable en delphi zvf OOP 15 04-08-2006 08:14:01
Web en Php y añadir datos desde delphi KeyMan PHP 3 02-08-2006 20:19:50
Cargar un ejecutable de C en Delphi Lalis Varios 3 04-12-2005 01:24:41
Añadir compente Delphi 2005 vtorres Varios 0 03-06-2005 11:23:31


La franja horaria es GMT +2. Ahora son las 23:19:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi