2013-04-09 129 views
7

我想检查系统托盘中是否存在图标;如果“X”应用程序在系统托盘区域中显示了其系统托盘图标。图标存在于系统托盘中?

我已经谷歌了解如何做到这一点,但我没有找到任何信息。

UPDATE:

这是我在VB.NET已经试过红粉罗伯特评论翻译网址的C#的例子,但我不知道该怎么继续下去。

Imports System.Runtime.InteropServices 

Public Class Form1 

    Public Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
    Public Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWndParent As IntPtr, ByVal hWndChildAfter As IntPtr, ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr 

    Public Shared Function WindowHandle(sTitle As String) As Long 
     Return FindWindow(vbNullString, sTitle) 
    End Function 


    Private Shared Function GetSystemTrayHandle() As IntPtr 
     Dim hWndTray As IntPtr = FindWindow("Shell_TrayWnd", Nothing) 
     If hWndTray <> IntPtr.Zero Then 
      hWndTray = FindWindowEx(hWndTray, IntPtr.Zero, "TrayNotifyWnd", Nothing) 
      If hWndTray <> IntPtr.Zero Then 
       hWndTray = FindWindowEx(hWndTray, IntPtr.Zero, "SysPager", Nothing) 
       If hWndTray <> IntPtr.Zero Then 
        hWndTray = FindWindowEx(hWndTray, IntPtr.Zero, "ToolbarWindow32", Nothing) 
        Return hWndTray 
       End If 
      End If 
     End If 

     Return IntPtr.Zero 
    End Function 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     MsgBox(WindowHandle("Steam")) ' 6687230 
     MsgBox(GetSystemTrayHandle()) ' 62789 
    End Sub 

End Class 
+2

你想为你的应用程序或第三方应用程序吗? – 2013-04-09 17:06:39

+7

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/4c4f60ce-3573-433d-994e-9c17f95187f0/ – 2013-04-09 17:07:02

+0

感谢您的意见,是为第三方应用程序 – ElektroStudios 2013-04-09 17:07:03

回答