elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Sobre los Handles del SystemTray...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sobre los Handles del SystemTray...  (Leído 1,801 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Sobre los Handles del SystemTray...
« en: 9 Abril 2013, 19:48 pm »

Este tema me lleva días matándome, he creado 5 posts sobre temas relacionados con los handles en StackOverFlow, porque no me aclaro nada con las funciones de la API (FindWindow, FindWindowEx, etc...).

A ver, lo que necesito es, saber si una aplicación de terceros ha mostrado su icono en el systemtray, es decir, saber si "X" icono existe en el SysTray, ya séa buscando el icono por el handle del proceso, o por el nombre de la ventana, o como séa.

Para esto, primero intento obtener el handle de la aplicación, y luego el handle de mi systray, pero hasta aquí, ya no sé como seguir ni que debo hacer.

Código
  1. Imports System.Runtime.InteropServices
  2.  
  3. Public Class Form1
  4.  
  5.    Public Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  6.    Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  7.  
  8.    Public Shared Function WindowHandle(sTitle As String) As Long
  9.        Return FindWindow(vbNullString, sTitle)
  10.    End Function
  11.  
  12.    Private Shared Function GetSystemTrayHandle() As IntPtr
  13.        Dim hWndTray As IntPtr = FindWindow("Shell_TrayWnd", Nothing)
  14.        If hWndTray <> IntPtr.Zero Then
  15.            hWndTray = FindWindowEx(hWndTray, IntPtr.Zero, "TrayNotifyWnd", Nothing)
  16.            If hWndTray <> IntPtr.Zero Then
  17.                hWndTray = FindWindowEx(hWndTray, IntPtr.Zero, "SysPager", Nothing)
  18.                If hWndTray <> IntPtr.Zero Then
  19.                    hWndTray = FindWindowEx(hWndTray, IntPtr.Zero, "ToolbarWindow32", Nothing)
  20.                    Return hWndTray
  21.                End If
  22.            End If
  23.        End If
  24.  
  25.        Return IntPtr.Zero
  26.    End Function
  27.  
  28.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  29.        MsgBox(WindowHandle("Steam")) ' 6687230
  30.        MsgBox(GetSystemTrayHandle()) ' 65728
  31.    End Sub
  32.  
  33. End Class



En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
hacer un listado de handles que usa una aplicacion
Programación Visual Basic
capblack 2 1,465 Último mensaje 27 Julio 2005, 01:22 am
por capblack
problema con popupmenu en un icono en el systemtray
Programación Visual Basic
Anteros 2 1,435 Último mensaje 17 Noviembre 2006, 22:42 pm
por CeLaYa
(SOLUCIONADO) ¿Como minimizar el MSN 2011 en el SystemTray?
Mensajería
SuperDraco 2 9,779 Último mensaje 13 Mayo 2011, 11:38 am
por Di~OsK
Handles (VB.NET)
.NET (C#, VB.NET, ASP)
abreu20011 4 8,915 Último mensaje 27 Agosto 2011, 03:20 am
por Keyen Night
Sobre los child handles
.NET (C#, VB.NET, ASP)
Eleкtro 0 2,226 Último mensaje 9 Abril 2013, 19:54 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines