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)
-   -   Ocultar Iconos (https://www.clubdelphi.com/foros/showthread.php?t=8314)

Nathan 17-03-2004 17:05:58

Ocultar Iconos
 
Hola a todos
sabe alguien como puedo ocultar los iconos que aparecen al lado del reloj (como el msn, yahoo y otros )a traves de mi aplicacion, tambien si es posible cambiar estos iconos por otros .. :confused:




Saludos .... Nathan. :)

delphi.com.ar 17-03-2004 17:21:15

Mmmmm... no creo que te sirva, pero esto oculta todo el panel:
Código:

var
  hTrayWnd,
  hTryNotify: HWND;
begin
 hTrayWnd := FindWindow('Shell_TrayWnd',nil);
 if hTrayWnd <> 0 then
 begin
  hTryNotify := FindWindowEx(hTrayWnd, 0, 'TrayNotifyWnd', nil);
  if hTryNotify <> 0 Then
    ShowWindow(hTryNotify, SW_HIDE);
 end;
end;


Nathan 17-03-2004 18:48:58

de todas formas gracias delphi.com.ar


Nathan.

roman 18-03-2004 03:09:51

Por lo que veo, el área que almacena los iconos no es otra cosa que una Toolbar. Partiendo de lo dicho por delphi.com.ar encuentras el identificador de dicha barra:

Código:

hToolbar := FindWindowEx(hTryNotify, 0, 'ToolbarWindow32', nil);
y ahora puedes comenzar a mandarle mensajes a esta ventana tales como TB_DELETEBUTTON o TB_HIDEBUTTON, por ejemplo:

Código:

SendMessage(hToolBar, TB_HIDEBUTTON, 3, 1)
ocultará el botón número 3 mientras que

Código:

SendMessage(hToolBar, TB_HIDEBUTTON, 3, 0)
lo mostrará de nuevo.

El mensaje TB_CHANGEBITMAP te servirá para cambiar el bitmap.

Este último no lo he probado pero los dos primeros sí y han funcionado.

La dificultad aquí es hallar el número de botón correcto. En principio parecería que van numerados desde cero de izquierda a derecha pero puede no ser así ya que, por ejemplo, si le mando el mensaje TB_BUTTONCOUNT me devuelve un número de botones mayor a los que veo.

Además al ocultarlo o borrarlo queda el hueco, es decir, el tamaño de esta área de iconos no se reajusta solo. Sin embargo vi por ahí y sí funciona, que si insertas tú mismo un icono, el área se reajusta. Aunque el efecto no es muy nítido puedes insertar e inmediatamente quitar un icono 'de palo' cada vez que ocultes o vuelvas a mostrar iconos.

Por supuesto que no está de más mencionar que estos iconos no son sólo dibujitos sino que son puntos de entrada a ciertas aplicaciones de manera que el quitarlos podría en algunos casos traer consecuencias inesperadas.

Pero en fin, ya tienes con que empezar a jugar :D

Para mayor información busca en la ayuda del sdk de Windows acerca del control Toolbar para que veas qué mensajes puedes mandar.

// Saludos

Nathan 18-03-2004 19:45:32

Gracias .... :)




Nathan.

roman 22-03-2004 16:45:31

Nathan

Respecto del mensaje privado que me mandaste dos cosas:

1. Es absolutamente imposible de leer. El código no sólo no está indentado sino que salió todo en una sola línea.

2. No me es posible responder de forma privada.

Vuelve a colocar aquí tu mensaje y con gusto intentaremos ayudarte. El objetivo de estos foros es ayudar a todos los que pudieran estar interesados en un determinado tema, cosa que no es posible tratando los mensajes de forma privada.

// Saludos

Nathan 23-03-2004 16:37:43

Hola roman
parece que el anterior post no salio,pero va de nuevo
lo que pasa es que ya probe con este codigo pero no oculta el icono.


var
hTrayWnd, hToolbar, TB_HIDEBUTTON,
hTryNotify: HWND;
begin
hTrayWnd := FindWindow('Shell_TrayWnd',nil);
if hTrayWnd <> 0 then
begin
hTryNotify := FindWindowEx(hTrayWnd, 0, 'TrayNotifyWnd', nil);
hToolbar := FindWindowEx(hTryNotify, 0, 'ToolbarWindow32', nil);
if hTryNotify <> 0 Then
SendMessage(hToolBar, TB_HIDEBUTTON, 3, 1);
// ShowWindow(hTryNotify, SW_HIDE);
end;
end;




ademas TB_HIDEBUTTON sale que no fue inicializada, que es lo que estoy haciendo mal :confused:



Saludos ..... Nathan.

roman 23-03-2004 16:50:49

TB_HIDEBUTTON no es una variable. Es una constante y se encuentra definida en la unidad CommCtrl al igual que los otros mensajes que te mencioné antes.

Nuevamente te recomiendo consultar el SDK de Windows para mayor referencia acerca de controles Toolbar.

No estaría mal tampoco un repaso a la función SendMessage y la manera en que Windows procesa mensajes. Sé que normalmente uno no lidia con esto en Delphi pero siempre es bueno saber de estos temas.

// Saludos

pd: aprende a usar la etiqueta code para cuando escribas mensajes en el foro.

gynch 24-03-2004 14:18:47

existe una clave en el registro para hacer estas cosas.

Key:[HKEY_USER\...\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
Value Name: NoTrayContextMenu
Data Type: REG_DWORD
Data:(0 = disabled, 1 = enabled)


roman 24-03-2004 16:23:11

Esta clave inhabilita los menús contextuales mas no oculta los iconos.

// Saludos


La franja horaria es GMT +2. Ahora son las 18:01:29.

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