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 31-01-2005
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 31-01-2005
Coco Coco is offline
Miembro
 
Registrado: jul 2004
Ubicación: Argentina
Posts: 83
Poder: 20
Coco Va por buen camino
Prueba con poner todo entre comillas dobles ""

Salu2
Responder Con Cita
  #3  
Antiguo 01-02-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
En lugar de usar WinExec, yo usaba ShellExecute, porque puedes darles más parámetros, es decir, para esta función te pide:
Código Delphi [-]
  ShellExecute(Form1.Handle,
               'Open',
               'c:\uharc.exe','a -d1 -m3 "mi archivodestino".kkk',
               '"c:\Archivos de programa\uno"',
               SW_NORMAL);

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
Responder Con Cita
  #4  
Antiguo 09-02-2005
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Muchas gracias

Ya probe algo parecido con el shellexecute pero no me funciono. Probare lo que tu dices

Saludos !!!
Responder Con Cita
  #5  
Antiguo 13-02-2005
CHiCoLiTa CHiCoLiTa is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
CHiCoLiTa Va por buen camino
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
Una de las claves que me llevo a pensar que no iba a funcionarme nunca usase el WinExec o cualquier otro tipo de llamada fue que poniendo el comando que escribia directamente en MS-DOs en la ventana de Ejecutar del menu de inicio tampoco funcionaba
Responder Con Cita
  #6  
Antiguo 13-02-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por CHiCoLiTa
Una de las claves que me llevo a pensar que no iba a funcionarme nunca usase el WinExec o cualquier otro tipo de llamada fue que poniendo el comando que escribia directamente en MS-DOs en la ventana de Ejecutar del menu de inicio tampoco funcionaba
Si lo he entendido bien, es problema de rutas, es decir, si en el comando ejecutar pones " uharc.exe" y el compresor no está en la variable de entorno path, windows no va a encontrar el compresor, sin embargo poniendo "f:\compresores\uharc.exe" si va a ejecutarlo, otra cosa distinta es que se cierre la ventana de ms-dos tan rápido que no veas la salida.

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
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


La franja horaria es GMT +2. Ahora son las 01:28:31.


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