PDA

Ver la Versión Completa : Manipular Tab De Windows desde Delphi 7


carlos gonzalez
08-11-2012, 16:22:52
Hola amigos.

Tengo una duda de algo que no se si sea posible o si alguien lo hecho.

Tengo en una pc ejecutando dos aplicaciones visuales, desde windows si nosotros le damos en las teclas alt+Tab podemos cambiarnos de una aplicación a la otra de forma rapida.

Alguien sabe si es posible hacer esto desde delphi de modo que lo programe que por ejemplo cada 2 minutos este cambiando entre una aplicación y la otra.

Si alguien sabe si se puede hacer esto y lo puede compartir se los voy agradecer infinitamente.

Su amigo charless.

nlsgarcia
09-11-2012, 00:52:17
carlos gonzalez,

Revisa estos links que tratan sobre el envío de teclas virtuales por medio de la API de Windows keybd_event en Delphi:

http://www.delphitricks.com/source-code/windows/simulate_the_pressing_of_keyboard_keys.html

http://www.delphipages.com/forum/showthread.php?t=12735

http://delphi.about.com/od/adptips2004/a/bltip0604_4.htm

http://www.kbdedit.com/manual/low_level_vk_list.html

http://delphi.about.com/od/objectpascalide/l/blvkc.htm

Revisa este código:

procedure TForm1.Button1Click(Sender: TObject);
var
Window : hwnd; // Handle de la aplicación

begin

// API FindWindow : Encuentra si esta activa en Windows una aplicación.
Window := FindWindow('Notepad',nil);

// API SetForegroundWindow : Cambia el foco de la aplicación activa en Windows
if SetForegroundWindow(Window) = True then
// API ShowWindow : Muestra en Foreground la aplicación seleccionada con SetForegroundWindow
ShowWindow(Window, SW_SHOWNORMAL)
else
// Muestra un msg de error si la aplicación no esta áctiva en Windows
MessageDlg('Notepad No Esta Activo', mtInformation,[mbOk], 0);

end;

El código anterior en Delphi 7 cambia el foco de la ventana activa en Windows por el de la aplicación que se establezca en FindWindow, creo que esto se adapta mejor a tu requerimiento.

Puedes adaptarlo a un control TTimer para cambiar entre aplicaciones de forma automática según el tiempo establecido.

Espero sea útil :)

Nelson.

carlos gonzalez
09-11-2012, 18:03:53
Muchas gracias por el ejemplo, funciona muy bien asi como esta, midifique la parte Notepad por pantalla1, donde pantalla1 es el nombre de la aplicación(.exe) desarrollada en delphi 7 pero no la encuentra, ya la copiea a la ruta de system32, a windows pero no la encuentra, sabes a que se pudiera deber esto

nlsgarcia
09-11-2012, 22:26:23
carlos gonzalez,

Realiza los siguientes cambios:

// En la Aplicación-1 que activa el foco de la Aplicación-2.
Window := FindWindow(nil,'Visual2');


// En la Aplicación-2 que es activado su foco por la Aplicación-1.
Application.Title := 'Visual2';

Te anexo un ejemplo de dos aplicaciones en Delphi 7, que activan su foco externamente según lo comentado en este tema en el siguiente link:

http://terawiki.clubdelphi.com/Delphi/Ejemplos/?download=SetFocus+de+una+Aplicaci%F3n+Externamente.rar

Espero sea útil :)

Nelson.