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 05-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
enviar documento cargado a programa

amigos nuevamente y muy prontamente solicito su ayuda
tengo el siguiente codigo de un programa en ms-dos
Handler.cmd
Código:
@Echo Off
TITLE Reg2Inf Converter Handler
setlocal enableextensions

:start
set WORKFILE=%~1
set OUTFILE=%~dpn1.inf
CD /D %~dp1

:reg2infExecute
If not defined WORKFILE goto usageinfo
If not exist "%WORKFILE%" goto notexist
If exist "%OUTFILE%" goto overwritewarning

:doit
Echo.
Echo ** Converting "%~nx1" ...
reg2inf.exe "%WORKFILE%" "%OUTFILE%"
Echo.
PAUSE
goto end

:overwritewarning
color 0a
Echo.
Echo ** WARNING !
Echo.
Echo "%OUTFILE%": Already exists !
Echo.
:userpromptoverwrite
SET /P Result=- Overwrite ?: 
if /I "%Result%"=="yes" goto doit
If /I "%Result%"=="no" goto rename
If /I "%Result%"=="n" goto rename
goto userpromptoverwrite

:rename
SET /P OUTFILE=- New filename: 
If "%OUTFILE%"=="" goto rename
goto reg2infExecute

:usageinfo
color 0a
Echo.
Echo ** %~nx0 [NameOfRegFileToConvert.Reg]
Echo.
Echo - The output INF will be created in the same folder as the input REG
Echo   and with the same name (in this case: NameOfRegFileToConvert.Inf)
Echo.
Echo - Input REG file must exist, you will be prompted if a file with the
Echo   same name as the Output INF already exists.
Echo.
Echo ** Press any key to exit . . .
PAUSE > NUL
goto end

:notexist
color 4f
Echo.
Echo ** "%WORKFILE%": Does not exist !
Echo.
Echo ** Press any key to exit . . .
PAUSE > NUL
goto end

:end
endlocal
realmente no se como modificar el codigo para hacerlo correr en mi form
creo que seria mas facil tomar el archivo cargado y enviarlo a este programa
tengo los sgtes comando para tomar un archivo y quisiera enviarlo a su ejecución he visto codigos por aqui pero no me han servido si me orientaran un poco lo agradeceria
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
opendialog1.Filter := 'Archivos de registro|*.reg';
opendialog1.Execute;
if FileExists(OpenDialog1.FileName) then
  else
    ShowMessage(Edit1.Text+' Archivo no encontrado');
edit1.Text := OpenDialog1.FileName;
end;
Responder Con Cita
  #2  
Antiguo 05-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jonydread.

No estoy seguro de entender lo que buscas hacer, pero si se trata de ejecutar el archivo HANDLER.CMD, sería:
Código Delphi [-]
...
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(Handle, 'open', 'HANDLER.CMD', nil, nil, SW_NORMAL);
end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 05-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
Necesito tomar un archivo .reg por medio del boton abrir cargarlo a que handler.cmd lo procese por medio de un boton convertir
gracias por su respuesta!
Responder Con Cita
  #4  
Antiguo 05-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Entiendo, probá de este modo:
Código Delphi [-]
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenDialog1.Filter := 'Archivos de registro|*.reg';
  if OpenDialog1.Execute then
    ShellExecute(Handle, 'open', 'HANDLER.CMD', PChar(OpenDialog1.FileName), nil, SW_NORMAL);
end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 06-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
funciona ese codigo si coloco las rutas que no es la idea
Código Delphi [-]
 PChar('c:\miarchivo.reg')
en cambio asi
Código Delphi [-]
 PChar(OpenDialog1.FileName)
no hace nada probe con edit1.text y tampoco lo botones que tengo estan asi
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
opendialog1.Filter := 'Archivos de registro|*.reg';
opendialog1.Execute;
if FileExists(OpenDialog1.FileName) then
  else
    ShowMessage(Edit1.Text+' Archivo no encontrado');
edit1.Text := OpenDialog1.FileName;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    ShellExecute(Handle, 'open', 'HANDLER.CMD', PChar(OpenDialog1.FileName), nil, SW_NORMAL);

end;
primer boton carga archivo
segundo lo envia al programa externo
gracias!
Responder Con Cita
  #6  
Antiguo 06-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Seguramente el problema lo tengas en como maneja el parámetro Handler.cmd ¿ Por que pienso eso ? Acabo de hacer la siguiente prueba:

Contenido del Handler.cmd que cree en mi equipo:
Código:
set WORKFILE=%~1
type %~1
PAUSE
Este código muestra el contenido de un archivo enviado como parámetro y espera la pulsación de una tecla. Lo podes comprobar fácilmente escribiendo desde el propmt:
Código:
C:\>HANDLER C:\TEMP\ARCHIVO.TXT
(Ruta+Nombre de un archivo de texto existente)

Luego desde Delphi, ejecuto este código:
Código Delphi [-]
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenDialog1.Filter := 'Archivos de texto|*.TXT';
  if OpenDialog1.Execute then
    ShellExecute(Handle, 'open', 'C:\HANDLER.CMD', PChar(OpenDialog1.FileName), nil, SW_NORMAL);
end;
Y sin ningún problema, visualizo en la ventana de símbolo de sistema el contenido del archivo .TXT enviado mediante ShellExecute.

No hay error en el envío del parámetro mediante ShellExecute ni en la recepción del mismo por Handler.cmd, por lo tanto el problema debe suceder luego en el manejo que hace Handler.cmd con el parámetro que recibió.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 06-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
muchas gracias probare y comento!!
Responder Con Cita
  #8  
Antiguo 06-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
opendialog1.filename
toma la ruta con espacios y no funciona probe un directorio sin espacios y funciona bien que se puede hacer
Responder Con Cita
  #9  
Antiguo 07-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Creo que el problema se produce por que Handler.CMD no puede manejar los nombres largos de archivo, probá de este modo:
Código Delphi [-]
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
var
  ShortName: array[0..255] of char;
begin
  OpenDialog1.Filter:= 'Archivos de registro|*.REG';
  with OpenDialog1 do
    if Execute then
    begin
      GetShortPathName(PChar(FileName), @ShortName, Length(FileName));
      ShellExecute(Handle, 'open', 'C:\HANDLER.CMD', PChar(@ShortName), nil, SW_NORMAL);
    end;
end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 07-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
no me funciona muchas gracias por la ayuda creo que tratare de trabajar el cmd haber si lo compilo dentro del mismo form sin necesitar el cmd a las finales creo que la parte mas importante es esta
Código:
:doit
Echo.
Echo ** Converting "%~nx1" ...
reg2inf.exe "%WORKFILE%" "%OUTFILE%"
Echo.
PAUSE
goto end
vere si logro ejecutar ese exe, workfile es el archivo que tomo y darle un nombre de salida buscare como hacerlo y comento!!
Gracias!!
Responder Con Cita
  #11  
Antiguo 07-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
reduci el ejecutable cmd
existe alguna forma de realizar lo mismo en un shellexecute de delphi, no se un boton que envie estos mismos parametros?
Código:
@Echo Off
TITLE Reg2Inf Converter Handler
setlocal enableextensions

:start
set WORKFILE=%~1
set OUTFILE=%~dpn1.inf
CD /D %~dp1
Echo.
Echo ** Converting "%~nx1" ...
reg2inf.exe "%WORKFILE%" "%OUTFILE%"
Echo.
PAUSE
goto end
:end
endlocal

Última edición por jonydread fecha: 07-11-2011 a las 20:34:21.
Responder Con Cita
  #12  
Antiguo 07-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Creo que el problema se produce por que Handler.CMD no puede manejar los nombres largos de archivo, probá de este modo:
Código Delphi [-]
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
var
  ShortName: array[0..255] of char;
begin
  OpenDialog1.Filter:= 'Archivos de registro|*.REG';
  with OpenDialog1 do
    if Execute then
    begin
      GetShortPathName(PChar(FileName), @ShortName, Length(FileName));
      ShellExecute(Handle, 'open', 'C:\HANDLER.CMD', PChar(@ShortName), nil, SW_NORMAL);
    end;
end;

Un saludo.
Al final si funciono!! Gracias!
Responder Con Cita
  #13  
Antiguo 08-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
disculpa por seguir el hilo pero me salio un problema
el shortname toma bien los archivos pero rutas largas al parecer
tengo : D:\re2\delphi\run.reg , dice no existe
tengo : D:\re2\delphi\copiaderun.reg , lo convierte sin problemas a que se debe
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
Enviar documento usando el fax de Windows epuigdef Varios 5 17-10-2008 08:55:27
Enviar documento por fax desde delphi, desesperado:( manolop Varios 4 30-03-2007 15:20:56
enviar documento por mail walace_soy Servers 4 22-10-2004 13:12:54
Enviar documento *.doc por fax SLAKE Varios 0 29-01-2004 19:54:57


La franja horaria es GMT +2. Ahora son las 13:30:09.


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