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 25-07-2012
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
Mandar teclas a otra aplicación de windows

Saludos esto usando esta función:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  hwndotrapp: THandle;
begin
  hwndotrapp := Windows.FindWindow(nil,'index.html - Google Chrome');
  if hwndotrapp > 0 then
  begin
    SetForegroundWindow(hwndotrapp); // Cambia el foco
    keybd_event(VK_F5, 0, 0, 0);

  //  SetForegroundWindow(Handle); // Cambia el foco

  end;

end;

Para mandar a refrescar el navegador cuando lo necesite y lo realiza sin problemas pero con la linia SetForegroundWindow(Handle); comentada, cuando la descomento me retorna el foco sin problemas a mi aplicaion pero no realiza el envío de la tecla, cuando comento esa linea me realiza sin problemas lo que necesito en el navegador que esta en la otra ventana pero no me rotorna el foco a mi aplicacion como es logico.

alguna idea???

Lo que estoy haciendo es un editor visual de HTML5 y CSS, he tratado de usar el webbrowser pero el internet explorer esta muy atrás con referencia a otros navegadores , he probado con el Chrome Frame y mejora un poco el TWebBrowser, pero no es suficiente para todo lo necesario del html5.

Entonces me fui por la via de hacer los cambios necesarios y mandar a refrescar el navegador desde delphi y me sucede ese problema.

Gracias
salud y pesetas Juank
Uso delphi XE con windows seven
Responder Con Cita
  #2  
Antiguo 25-07-2012
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
probe de esta otra manera que vi tambien en estos foros pero me hace lo mismo

cuando le pongo la funcion que retorna el foco no ejecuta la tecla enviada

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var hw:integer;
begin
hw:=findwindow(nil,'t.html - Google Chrome');
if hw>0 then
  postmessage(hw,VK_F5,97,0);

 //  SetForegroundWindow(hw); // Cambia el foco
end;
Responder Con Cita
  #3  
Antiguo 25-07-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Intenta poner un Application.ProcessMessages antes del segundo SetForegroundWindow.

// Saludos
Responder Con Cita
  #4  
Antiguo 25-07-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por juank1971 Ver Mensaje
Lo que estoy haciendo es un editor visual de HTML5 y CSS, he tratado de usar el webbrowser pero el internet explorer esta muy atrás con referencia a otros navegadores , he probado con el Chrome Frame y mejora un poco el TWebBrowser, pero no es suficiente para todo lo necesario del html5.
Hay un webbrowser basado en google chromium con soporte para delphi. En el hilo Usar chromium dentro del aplicativo se habla del componente y como instalarlo.

// Saludos
Responder Con Cita
  #5  
Antiguo 25-07-2012
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
ya funciona

Gracias roman:

Pero no me funciona con el proccessmasage.
sin embargo probe los dos procedimientos juntos y si funciona, el diablo son las cosas.

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var hw:thandle;
  hwndotrapp: integer;
begin
  hwndotrapp := Windows.FindWindow(nil,'index.html - Google Chrome');
  if hwndotrapp > 0 then
  begin
    SetForegroundWindow(hwndotrapp); // Cambia el foco
    keybd_event(VK_F5, 0, 0, 0);

   SetForegroundWindow(Handle); // Cambia el foco
  end;

  hw:=findwindow(nil,'index.html - Google Chrome');
if hw>0 then
 // postmessage(hw,VK_F5,97,0);
 PostMessage(hw, WM_KEYDOWN, VK_F5, 0);
memo1.setfocus;
end;

con esto edito y el navegador se refresca cuando deceo y me devuelve el cursor al editor de nuevo.

Gracias por la respuesta, lo que me comentas en el lugar donde me encuentro ahora no puedo hacer el download en ese lugar de google.

Lo del chromium, no lo he probado, pero pienso que debe tener lo mismo que chrome frame que mejora considerablemente el twebbrowser pero no llega a tener todo lo necesario para html5 como el mismo chrome.
Fíjate le puse el ie la ultima versión de Chrome Frame y no llega a verse el sitio en html5 en IE igual que en el google chrome verdadero.
la versión de Chrome Frame es la misma 20 y el google chrome también es la 20.

Gracias muchas si alguno quiere usar lo antes comentado como mejor me resulto fue poniendo los dos procedimientos.

salud y pesetas
Responder Con Cita
  #6  
Antiguo 25-07-2012
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:
Para mandar a refrescar el navegador cuando lo necesite y lo realiza sin problemas pero con la linia SetForegroundWindow(Handle); comentada, cuando la descomento me retorna el foco sin problemas a mi aplicaion pero no realiza el envío de la tecla, cuando comento esa linea me realiza sin problemas lo que necesito en el navegador que esta en la otra ventana pero no me rotorna el foco a mi aplicacion como es logico.
Hola juank1971.

Intenta de este modo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  H: HWND;
begin
  H := FindWindow(nil, 'Club Delphi - Mozilla Firefox');
  if H <> 0 then
  begin
    SetForegroundWindow(H);
    EnableWindow(H, False);
    keybd_event(VK_F5, 0, WM_KEYDOWN, 0);
    EnableWindow(H, True);
    SetForegroundWindow(Handle);
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 25-07-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por juank1971 Ver Mensaje
Lo del chromium, no lo he probado, pero pienso que debe tener lo mismo que chrome frame que mejora considerablemente el twebbrowser pero no llega a tener todo lo necesario para html5 como el mismo chrome.
El sitio del chromium embedded dice:

Cita:
The host application can optionally control resource loading, navigation, context menus, printing and more, while taking advantage of the same performance and HTML5 technologies available in the Google Chrome Web browser.
O sea, que debe funcionar igual que el navegador. ¿Puedes poner la dirección de alguna página que se vea bien en el navegador Chrome y no en IE con el Chome Frame?

// Saludos
Responder Con Cita
  #8  
Antiguo 28-07-2012
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
Gracias a todos

ecfisa, mis saludos si, lo que me madaste si funciona, yo tenia mal algunas cosas , y román no había probado lo del chromium, lo que había probado era lo del chrome frame y ese es el que me dio diferente, al igual que el componente Motzilla controls con el ActiveX para Motzilla,ese también me da muy diferente al navegador Motzilla que tengo instalado.

Pero ya baje lo de Chromium y el componente para delphi y estas en lo cierto román , ese si funciona perfectamente bien.

muchas gracias por el aporte .

salud y pesetas para todos

Juank
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 caracteres o pulsaciones de teclas a otra aplicación no Delphi Faust API de Windows 9 28-12-2021 11:43:43
Mandar pulsaciones de teclas a un TWebBrowser cestradar API de Windows 1 28-03-2008 18:04:12
Mandar teclas via WM AYUDA!! marceloalegre Varios 1 30-09-2005 18:27:03
Mandar teclas a una ventana de comandos 1501 API de Windows 1 22-12-2004 01:10:40
Hooks teclas de otra aplicacion OmarPerez API de Windows 2 15-10-2004 17:14:48


La franja horaria es GMT +2. Ahora son las 16:23:41.


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