Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 28-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Bueno como dijo el ilustre señor Esperalta "ratón que conoce un agujero sólo pronto le caza el gato", así que vamos a ver cuantos agujeros encontramos.

La primera solución podría ser obtener las coordenadas del propio systray:
Código Delphi [-]
function GetSysTrayRect(var R: TRect): Boolean;
var
  hWnd: THandle;
begin
  Result:= FALSE;
  hWnd:= FindWindow('Shell_TrayWnd',nil);
  if hWnd <> 0 then
  begin
    hWnd:= FindWindowEx(hWnd,0,'TrayNotifyWnd',nil);
    if hWnd <> 0 then
      Result:= GetWindowRect(hWnd,R);
  end;
end;

O incluso si queremos dejar aparte el área destinada al reloj y solo obtener la destinada a los iconos, podemos afinar un poco más el código:
Código Delphi [-]
function GetSysTrayRect(var R: TRect): Boolean;
var
  hWnd: THandle;
begin
  Result:= FALSE;
  hWnd:= FindWindow('Shell_TrayWnd',nil);
  if hWnd <> 0 then
  begin
    hWnd:= FindWindowEx(hWnd,0,'TrayNotifyWnd',nil);
    begin
      hWnd:= FindWindowEx(hWnd,0,'SysPager',nil);
      if hWnd <> 0 then
      begin
        hWnd:= FindWindowEx(hWnd,0,'ToolbarWindow32',nil);
        if hWnd <> 0 then
          Result:= GetWindowRect(hWnd,R);
      end;
    end;
  end;
end;

Un ejemplo de las dos funciones anteriores seria el siguiente:
Código Delphi [-]
var
  R: TRect;
begin
  if GetSysTrayRect(R) then
    ShowMessage(Format('Top=%d Left=%d Bottom=%d Right=%d',
      [R.Top,R.Left,R.Bottom,R.Right]));
end;

Pero ahora que tenemos las coordenadas de la bandeja del sistema, pienso que en realidad no te hace falta para nada . Porque lo realmente bonito son esos globitos amarillos que muestran algunos iconos para notificar algo, seguro que los has visto alguna vez. Y para mostrarlos solo hay que usar un par de funciones de la API y ellas se encargan de todo el trabajo. ¿que opinas?
Responder Con Cita
 


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
Saber la posición del mouse al interior de un canvas.... DarkMedel Gráficos 6 24-08-2015 20:29:31
Como saber la posicion Fila, Columna en un MEMO? bustio Varios 5 28-01-2013 17:56:48
Saber la posición X-Y del cursor en un edit Sr_Sombrero API de Windows 1 19-06-2006 05:55:49
Cómo eliminar un icono del systray de una aplicación de terceros SYWARE API de Windows 8 22-05-2006 17:36:17
Mi programa en el systray osvrom Varios 6 28-04-2004 04:44:41


La franja horaria es GMT +2. Ahora son las 00:37:05.


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
Copyright 1996-2007 Club Delphi