Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-10-2014
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Cómo simular el dragdrop de un fichero a un TWebbrowser?

alguno sabéis si se puede simular el dragdrop de un fichero a un TWebbrowser?
Por ejemplo partiendo de un filelist que al hacer dobleclick en un fichero se simule el dragdrop hacia el tbrowser sin tener que arrastralo?
no se si es muy complicado lo que pretendo o es una chorradita pero no encuentro info al respecto, o no se bien como buscarla
(encontré algo simulando clicks del ratón, pero seguro que hay un modo más simple)


gracias
Responder Con Cita
  #2  
Antiguo 16-10-2014
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Casi lo consigo con lo de simular clicks de ratón, pero no funciona

Código Delphi [-]
var
  point:TPoint;
 begin
  getcursorpos(point); // guardo la posición del ratón
  mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);// click abajo
  setcursorpos(800,point.y);  //Me muevo a la derecha a la parte del webbrowser
  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); // soltar click
  setcursorpos(point.y,point.y);  //vuelvo a donde estaba
luego en el dragover del twebbrowser pongo
Código Delphi [-]
accept:=true;

Pero no funciona como debería, me sale el tipico mensaje de que si quiero abrir o guardar el archivo,
algo no hago bien

Última edición por ecfisa fecha: 16-10-2014 a las 23:33:26. Razón: Etiquetas [Delphi][/Delphi]
Responder Con Cita
  #3  
Antiguo 17-10-2014
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 cocute.

Te hice un ejemplo simple (a modo de guía).
Código Delphi [-]
...
implementation

procedure TForm1.FileListBox1Click(Sender: TObject);
var
  i, it: Integer;
  o, d: TPoint;
begin
  d:= WebBrowser1.ClientOrigin;
  o:= ScreenToClient(Mouse.CursorPos);
  it:= FileListBox1.ItemAtPos(o, True)-1;
  o:= Mouse.CursorPos;
  if it <> -1 then
  begin
    FileListBox1.BeginDrag(True);
    i:= o.X;
    repeat
      SetCursorPos(i, d.Y +10);
      Inc(i, 4); 
      Sleep(1);
    until i > d.X+10;
    Application.ProcessMessages;
    FileListBox1.EndDrag(True);
    Mouse.CursorPos:= o;
 end;
end;

procedure TForm1.WebBrowser1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept:= Source is TFileListBox;
end;

procedure TForm1.WebBrowser1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  WebBrowser1.Navigate(TFileListBox(Source).FileName);
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 17-10-2014
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
gracias, he probado pero no funciona,
hace lo mismo que había puesto de simular los cliks,
pero está claro que de un modo más elegante y mejor ya que no mueves el ratón para nada.

Al hacer click en los ficheros de la filelist me sale el mensaje de que si quiero abrir o guardar pero no hace lo que haces
cuando arrastras por ejemplo un fichero kml al navegador cuando está esta web abierta http://ivanrublev.me/kml/.
Igual es que no se puede hacer por temas de seguridad.
De hecho al compilar tu ejemplo el programa compilado me salta el antivirus kaspersky como de una actividad sospechosa.
Responder Con Cita
  #5  
Antiguo 17-10-2014
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 cocute.

El ejemplo funciona correctamente en Delphi 7 y Windows 7 32 bits, en cuanto al antivirus... Configuralo en la sensibilidad adecuada o reporta el falso positivo.

No te adjunto imágenes de la ejecución ya que no reflejarían el movimiento de Drag & Drop, pero sí los archivos fuentes que están funcionando correctamente y, de no mediar modificaciones en él, debería seguir haciéndolo.

Por último te aclaro nuevamente que es un ejemplo de como podrías implementarlo, una guía y no una solución concreta a tu problema del cuál desconozco todos los pormenores.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip cocute.zip (54,5 KB, 6 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 17-10-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
cocute,

Cita:
Empezado por cocute
...De hecho al compilar tu ejemplo el programa compilado me salta el antivirus kaspersky como de una actividad sospechosa...


Te comento:

1- El código de Delphi esta tan optimizado a nivel de compilación que algunos antivirus detectan el ejecutable como un posible riesgo de seguridad.

2- Internet Security y Norton 360 también detectan posibles riesgos de seguridad con los ejecutables del Delphi 7, Delphi 2010 y Delphi XE6, asumo que lo mismo puede ocurrir con otras versiones de Delphi.

3- Revisa este código:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(Format('El ProcessID de la Aplicación es : %d',[GetCurrentProcessId]));
end;
El código anterior en Delphi 7, 2010 y XE6 es detectado por Norton 360 como : A program was behaving suspiciously on you computer. This program was removed. Threat name: SONAR.Heurist.120

Esto se debe a que la tecnología heurística de Norton 360 analiza la estructura y tipo de instrucciones del programa en Delphi y por su nivel de optimización y tipo de instrucciones determina una posible brecha de seguridad, sin embargo esto puede ser controlado a nivel de configuración en Norton 360, asumo que debe ser igual para Kaspersky Antivirus.

Espero sea útil

Nelson.
Responder Con Cita
  #7  
Antiguo 17-10-2014
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
gracias por tu tiempo,
pero lo que pretendo no funciona,
para que lo veas mejor te pongo el código modificado, que has enviado para que veas que no simula exactamente el dragdrop al arrastrar un fichero kml,
en cambio si pruebas a arrastrar un kml de los que pongo desde el explorador de archivos a la ventana del twebbrowser verás que si lo acepta:

https://www.dropbox.com/s/hyd0m54ao2...adrag.zip?dl=0
(incluyo el exe)

Última edición por cocute fecha: 17-10-2014 a las 21:23:36.
Responder Con Cita
  #8  
Antiguo 17-10-2014
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 cocute.

Descargué y probé tu archivo. Sólo tuve que quitar del uses ", SHDocVw,system.Win.registry;" que no reconoce mi Delphi 7 y algo de código del evento OnCreate (que no hace al funcionamiento del Drag & Drop) quedando así:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  webbrowser1.navigate('http://ivanrublev.me/kml/');
  FileListBox1.Directory:= ExtractFilePath(Application.ExeName);
end;
y tál como lo esperaba, funciona correctamente:



Así que el error debe estar el el código que te comenté, revisa esos puntos.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 17-10-2014
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
El código del registro que pongo en el oncreate es para que pueda mostrar la web http://ivanrublev.me/kml/ correctamente en un webbrowser,
Todo este tema viene de este post:
http://www.clubdelphi.com/foros/showthread.php?t=86867

Al arrastrar el kml al webbrowser tendría que mostrar el mapa del fichero kml en la web,
no el código del kml.

No se si me explico bien?
Lo que pretendo que pase al hacer click en uno de los ficheros kml es esto:
https://www.dropbox.com/s/slfx3hh81j...34.13.png?dl=0


Pero lo que me ocurre, al menos en windows8 x64 es esto:
https://www.dropbox.com/s/wn5wf4bpt8...39.51.png?dl=0
Y si le doya a abrir me lo abre con el googleearth

Última edición por cocute fecha: 17-10-2014 a las 21:50:42.
Responder Con Cita
  #10  
Antiguo 17-10-2014
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 cocute.
Cita:
Empezado por cocute Ver Mensaje
El código del registro que pongo en el oncreate es para que pueda mostrar la web http://ivanrublev.me/kml/ correctamente en un webbrowser,
Todo este tema viene de este post:
http://www.clubdelphi.com/foros/showthread.php?t=86867

Al arrastrar el kml al webbrowser tendría que mostrar el mapa del fichero kml en la web,
no el código del kml.

No se si me explico bien?
Lo que pretendo que pase al hacer click en uno de los ficheros kml es esto:
https://www.dropbox.com/s/slfx3hh81j...34.13.png?dl=0


Pero lo que me ocurre, al menos en windows8 x64 es esto:
https://www.dropbox.com/s/wn5wf4bpt8...39.51.png?dl=0
Y si le doya a abrir me lo abre con el googleearth
Pero ese problema no es causado por la automatización del Drag&Drop, motivo inicial de este hilo...

Acabo de incluir en el evento OnCreate el código correspondiente al registro y quitar la automatización del Drag&Drop dejándola manual (del modo normal) y sigue mostrando código html.

Saludos

Edito: Leyendo el enlace que menciona Neftali me pregunto... ¿ No tendrá que ver si IE es el navegador predeterminado ?
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 17-10-2014 a las 22:01:16.
Responder Con Cita
  #11  
Antiguo 17-10-2014
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Pero si arrastras un kml desde el explorador de archivos de windows a la ventana del navegador con esa web abierta que te ocurre?
igual es que hay que poner algo del tema OLE por algún lado.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
TDBGrid + DragDrop + PopUp + Multiselect mjjj Varios 5 21-04-2014 16:18:40
DragDrop de un ListBox a otro?? carrrlos OOP 2 04-05-2007 15:27:04
Como simular algunas teclas sergio_015 Varios 2 03-05-2007 20:04:57
Como simular un cajero automatico principiante22 Varios 3 31-01-2007 03:43:44
Como simular un motor de búsqueda Alexander Conexión con bases de datos 0 25-05-2006 17:57:56


La franja horaria es GMT +2. Ahora son las 23:28:39.


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