FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
pasar parametros ms-dos desde mi aplicacion
Saludos
Tengo un ejecutable, un programa que comprime archivos (no está hecho por mí), que es para MS-DOS. Con la consola de comandos puedo trabajar con él. Un ejemplo de su uso es éste: uharc.exe a -d1 -m3 data archivo.exe "uharc.exe" es el nombre de eese ejecutable, lo demás son parámetros (comprimir, tipo de compresion, archivo a crear y archivo a comprimir). Estoy haciendo un programa en Delphi 3 Std, y quiero que llame a "uharc.exe" con esos parámetros que he escrito antes. He probado con todo lo que sé (crear un .bat y ejecutarlo[truco de trucomanía], utilizar WinExec y ShellExecute con el programa), pero no logro hacerlo funcionar. ¿Qué puedo hacer? Uso WinXP Pro (aunque me gustaría que funcionara en Win98) "uharc.exe" y el archivo a comprimir se encuentran en el mismo directorio, asi como el fichero ejecutable del programa que estoy haciendo He comprobado que todo funciona bien excepto cuando mando al "uharc.exe" comprimir el archivo Este código me funcionó una vez (una cosa muy rara, porque fue la única): ChDir(ExtractFilePath(ParamStr(0))); WinExec(PChar('uharc.exe a -d1 -m3 data '+ExtractFileName(destino)),SW_NORMAL); // ExtractFileName(destino) es "Archivo.exe" Help!... I need somebody, Help!... Gracias |
#2
|
|||
|
|||
Prueba con poner todo entre comillas dobles ""
Salu2 |
#3
|
||||
|
||||
En lugar de usar WinExec, yo usaba ShellExecute, porque puedes darles más parámetros, es decir, para esta función te pide:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall; Filename = archivo a ejecutar Parameters = pues todos los parametros que lleva, los modificadores y los archivos de origen y destino (pasale la ruta completa entre comillas dobles como ya te han dicho) Directory = directorio donde ejecutarlo Showcmd mira en windows.pas { ShowWindow() Commands } SW_HIDE = 0; SW_SHOWNORMAL = 1; SW_NORMAL = 1; SW_SHOWMINIMIZED = 2; SW_SHOWMAXIMIZED = 3; SW_MAXIMIZE = 3; SW_SHOWNOACTIVATE = 4; SW_SHOW = 5; SW_MINIMIZE = 6; SW_SHOWMINNOACTIVE = 7; SW_SHOWNA = 8; SW_RESTORE = 9; SW_SHOWDEFAULT = 10; SW_MAX = 10; Si haces una interfaz amigable para el uharc.exe, avisa, que es un compresor multimedia muy bueno . Saludos |
#4
|
||||
|
||||
Muchas gracias
Ya probe algo parecido con el shellexecute pero no me funciono. Probare lo que tu dices Saludos !!! |
#5
|
|||
|
|||
Algo parecido me ocurrio a mi con otro programa.
Le estuve dando vueltas, ShellExecute, WinExec, crear bat identico a lo que escribo en MS-DOS y los resultados eran identicos a los tuyo sin explicacion a aparente. Cuando estaba desesperado y haciendo cosas absurdas se me ocurrio la tonteria de crear un bat, ejecutarlo para que me hiciera el proceso y borrarlo. Pero en el bat no ponia directamente el comando, lo primero que hacia era posicionarme en el lugar donde se encontraba el ejecutable y luego escribia el comando y con esta 'chapucilla' ya me funciono. Código:
c: \ cd "archivos de programa" cd uharc uharc.exe a -d1 -m3 data archivo.exe |
#6
|
||||
|
||||
Cita:
en el archivo bat, lo que haces es cambiar de directorio; Esto tambien se puede conseguir con la funcion chdir de delphi. Un detalle que se me escapó en el post anterior es indicar correctamente la ruta donde crear el archivo comprimido, useasé: donde dice: "mi archivodestino".kkk' debe decir : "C:\mi archivodestino.kkk" Más de una vez he creado un archivo .ini sin la ruta y se ha ido a parar a la carpeta c:\Windows Saludos |
|
|
|