Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Detectar ventana activa y variar su posición (https://www.clubdelphi.com/foros/showthread.php?t=73424)

farute 20-04-2011 14:13:00

Detectar ventana activa y variar su posición
 
Hola me gustaría saber como puedo detectar la ventana activa del programa que se sea que esté en primer plano de windows y cambiarle la posicion en la pantalla desde mi programa.
se que tiene que ser con algo de GetForegroundWindow pero sabeis de algún ejemplo que tenga por donde empezar?

Lo quiero porque tengo un tabletpc tactil de 10,1" con windows7 que tiene una resolución máxima de 1024x800 y algunos programas de los que necesito tienen un tamaño superior a los 800 pixeles y no puede acceder a las opciones de abajo.

Existe un programa que ya hace lo que pido para que veais la idea
http://www.youtube.com/watch?v=1MussK0okcs
el problema es que solo funciona con el ratón, yo necesitaría que se hiciese también por Touch gestures o poniendo un par de botones en pantalla para subir y bajar.

alguna idea

gracias

ecfisa 20-04-2011 15:47:10

Hola farute.
Cita:

que se sea que esté en primer plano de windows
El ejemplo que hice no es exáctamente lo que solicitas ya que tenés que indicarle la aplicación y puede no ser la que esté en primer plano, pero supongo que te va a dar una idea de como implementarlo.

Código Delphi [-]
procedure SetWndCoord(WndName: string; X,Y: integer);
var
  Handle: THandle;
  wpPtr: TWindowPlacement;
  T: TRect;
begin
  Handle:= FindWindow(PChar(WndName), nil);
  if Handle <> 0 then
  begin
    GetWindowPlacement(Handle, @wpPtr);
    T:= wpPtr.rcNormalPosition;
    Inc(T.Left, X);
    Inc(T.Top, Y);
    wpPtr.rcNormalPosition:= T;
    SetWindowPlacement(Handle, @wpPtr);
  end
  else
    raise Exception.Create('Aplicación no encontrada');
end;

Llamadas de ejemplo:
Código Delphi [-]
  SetWndCoord('notepad',20,30);
  SetWndCoord('notepad',-15, -7);

Un saludo.

farute 20-04-2011 20:34:47

Muchas gracias, creo que me servirá


La franja horaria es GMT +2. Ahora son las 06:34:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi