Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
problema al ejecutar accion al soltar archivo sobre aplicacion

amigos he probado muchas formas y no le veo la falla a mi codigo
al soltar un archivo sobre la aplicacion esta se debe ejecutar obtener ruta y ejecuta una aplicacion
la aplicacion llama a:
Código Delphi [-]
procedure TReg2infConverter.LlamarReg2inf(Hnd: THandle; const App:string; const Origen: string; const Destino: string);
var
FileName,outfile : string;
begin
FileName := Extractfilename(Opendialog1.FileName);
FileName:= AnsiReplaceStr(FileName,' ','');
outfile :=ChangeFileExt(FileName, '.inf');
   ShellExecute(Hnd,
              'OPEN',
              PChar(ExtractFileName(App)),
              PChar(Origen+' '+Destino),
              PChar(ExtractFilePath(App)),
              SW_HIDE);
                if FileExists(Opendialog1.FileName) then
              label1.Caption:='Convertido con exito!! : '+outfile
              else
   label1.Caption:='Error! No se Encuentra Archivo'
       end;

y aqui el dilema lo suelto encima se abre aplicacion y tira el mensaje Convertido con exito!! pero no hace nada, al abrir la aplicación y arrastrar un archivo encima funciona ok y es casi el mismo código.
Código Delphi [-]
procedure TReg2infConverter.FormCreate(Sender: TObject);
var
  Origen, Destino ,Filename : string;
  begin
    DragAcceptFiles(handle, true);
    OpenDialog1.FileName:= ParamStr(1);
    edit1.Text:=ParamStr(1);
    if ParamStr(1) > '' then
 begin
Filename := Extractfilename(Opendialog1.FileName);
Origen := GetshortName(Opendialog1.FileName);
Filename:= AnsiReplaceStr(Filename,' ','');
Destino :=ChangeFileExt(Filename, '.inf');
 if ExtractFileExt(ParamStr(1)) = '.reg' then
LlamarReg2inf(Handle,'REG2INF.EXE',Origen,Destino )
else
    MessageDlg('Archivo no valido!!', mterror, [mbok],0);
   end;
   end;

gracias por su tiempo!!

Última edición por jonydread fecha: 16-11-2011 a las 23:06:04.
Responder Con Cita
  #2  
Antiguo 16-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 estas tratando de implementar el código que te sugerí aquí y te has echo una ensalada.
Si te fijas bién en el post anterior, no es en OnCreate donde se captura el nombre de archivo sino en DragDropFileMSG.

Resumiendo:
Código Delphi [-]
....
implementation

uses ShellApi,StrUtils;

function GetShortName(const FileName: String): String;
var
  ShortName: PChar;
  Size: Cardinal;
begin
  Size := GetShortPathName(PChar(FileName), nil, 0);
  if Size > 0 then
  begin
    GetMem(ShortName, Size);
    GetShortPathName(PChar(FileName), ShortName, Size);
    Result := ShortName;
    FreeMem(ShortName);
  end
  else
    Result := FileName;
end;

procedure LlamarReg2inf(Hnd: THandle; const App:string; Origen: string; Destino: string);
begin
  // En Origen dejamos el nombre corto sin espacios
  Origen:= AnsiReplaceStr(GetShortName(Origen), ' ', ''); 
  // Cambiamos la extensión para Destino 
  Destino:= ChangeFileExt(Origen, '.inf');
  // Llamamos a 'REG2INF.EXE con Origen y Destino
  ShellExecute(Hnd,  
              'OPEN',
              PChar(ExtractFileName(App)),
              PChar(Origen+' '+Destino),
              PChar(ExtractFilePath(App)),
              SW_SHOW);
end;

procedure TForm1.DragDropFileMSG(var Msg: TMessage);
var
  DragDropFileName: array[0..255] of Char;
begin
  DragQueryFile(msg.WParam, 0, DragDropFileName, Length(DragDropFileName));
  DragFinish(Msg.WParam);
  LlamarReg2inf(Handle, 'REG2INF.EXE', DragDropFileName,'')
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True);
end;
...
A fin de simplificar la explicación recorté y modifiqué un poco el código del procedimiento LlamarReg2inf.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 17-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
me sale un error en
Código Delphi [-]
  Origen:= AnsiReplaceStr(GetShortName(Origen), ' ', '');
  Destino:= ChangeFileExt(Origen, '.inf');
Responder Con Cita
  #4  
Antiguo 17-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
Cita:
Empezado por jonydread Ver Mensaje
me sale un error en
Código Delphi [-]
  Origen:= AnsiReplaceStr(GetShortName(Origen), ' ', '');
  Destino:= ChangeFileExt(Origen, '.inf');
Es extraño, no sé como lo estés implementando... A mi me funciona perfectamente.

Para que puedas estudiar el código con tranquilidad te adjunto los fuentes. Como no tengo el archivo reg2inf.exe realizé una aplicación de consola en Delphi con igual nombre que lo único que hace es mostrar ParamStr(1) y ParamStr(2).

Pero para no adjuntarte el ejecutable desactivé la llamada a ShellExecute reemplazándola por un simple ShowMessage que muestra Origen y Destino, al ser estos correctos (sólo diferenciarse en la extensión) , si existe un error es ajeno al código.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 17-11-2011 a las 17:00:28.
Responder Con Cita
  #5  
Antiguo 17-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
esta parte bien no he tenido problemas al arrastrar el archivo sobre la aplicacion
Código Delphi [-]
procedure TForm1.DragDropFileMSG(var Msg: TMessage);
var
  DragDropFileName: array[0..255] of Char;
begin
  DragQueryFile(msg.WParam, 0, DragDropFileName, Length(DragDropFileName));
  DragFinish(Msg.WParam);
  LlamarReg2inf(Handle, 'REG2INF.EXE', DragDropFileName,'')
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True);
end;

pero si tengo miaplicacion.exe y tomo un archivo lo tiro encima se abre la aplicacion solamente no hace nada, yo tenia implementado antes y funcionaba colocando en formcreate
Responder Con Cita
  #6  
Antiguo 17-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
Cita:
pero si tengo miaplicacion.exe y tomo un archivo lo tiro encima se abre la aplicacion solamente no hace nada, yo tenia implementado antes y funcionaba colocando en formcreate
Hola.

Lo lamento, no logro entender la situación.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Ejecutar una accion al presionar un boton Vales08 Varios 4 31-05-2011 21:48:45
Arrastrar y soltar un archivo sobre la aplicación escafandra C++ Builder 7 05-04-2008 16:30:46
Ejecutar una accion sobre DBGrid seb@ OOP 4 01-11-2006 21:00:06
ejecutar accion en un cliente fartycl Varios 4 03-10-2005 03:20:12
Ejecutar un archivo.exe desde mi aplicacion CLX ctronx Varios 13 25-01-2005 09:21:16


La franja horaria es GMT +2. Ahora son las 18:01:23.


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