PDA

Ver la Versión Completa : Detectar ventana activa y variar su posición


farute
20-04-2011, 14:13:00
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.
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.


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:

SetWndCoord('notepad',20,30);
SetWndCoord('notepad',-15, -7);


Un saludo.

farute
20-04-2011, 20:34:47
Muchas gracias, creo que me servirá