Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Ikona w Tray'u
anonim




Typ: Nie zarejestrowany
Ikona w Tray'u

Witam! Zna ktoś jakiegoś ocx, ktory umowliwia w latwy spsob bawić się ikoną w tray'u? Wiem, że jest w dziale OCX FlashTray, ale aplikacja z ta kontrolka na kompie, który nie posiada VB wywala błąd, że nie można odnaleźć modułu.

30-12-2003 16:09
  
Jelcyn
Admin forum




Typ: admin
Postów: 895
Zarejestrowany: Apr 2002

http://www.coderscity.pl/no-vb4all/workshop/systray.zip

tu jest przykład jak zrobić to bez OCX'a :-)


_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

31-12-2003 09:20
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       270849979    6237704
hicks
raptor user



Typ: moderator
Postów: 279
Zarejestrowany: Apr 2003

Pewnie podobne, ale...

' To wklej do modułu:
' --------------------------------------------------
'    Obsługa Traya
' --------------------------------------------------
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Public Type NOTIFYICONDATA
    cbSize As Long
    hwnd As Long
    uID As Long
    uFlags As Long
    uCallbackMessage As Long
    hIcon As Long
    szTip As String * 64
End Type

Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4

Public Const WM_LBUTTONDOWN As Long = &H201
Public Const WM_RBUTTONDOWN As Long = &H204

Public iTray As NOTIFYICONDATA

Public Function CreateTrayIcon(TrayIcon As PictureBox, _
                HookIcon As PictureBox, InfoTips As String) As Long
    ' Funkcja tworzy ikonkę w trayu
    iTray.cbSize = Len(iTray)
    iTray.hIcon = TrayIcon.Picture
    iTray.hwnd = HookIcon.hwnd
    iTray.szTip = InfoTips & Chr$(0)
    iTray.uCallbackMessage = WM_LBUTTONDOWN
    iTray.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    iTray.uID = 1&
    CreateTrayIcon = Shell_NotifyIcon(NIM_ADD, iTray)
End Function

Public Function ModifyTrayIcon(TrayIcon As PictureBox, _
                InfoTips As String) As Long
    ' Funkcja modyfikująca ikonkę w trayu
    iTray.cbSize = Len(iTray)
    iTray.hIcon = TrayIcon.Picture
    iTray.szTip = InfoTips & Chr$(0)
    iTray.uID = 1&
    ModifyTrayIcon = Shell_NotifyIcon(NIM_MODIFY, iTray)
    End Function

Public Function DeleteTrayIcon(HookIcon As PictureBox) As Long
    ' Funkcja usuwająca ikonkę z traya
    iTray.cbSize = Len(iTray)
    iTray.hwnd = HookIcon.hwnd
    iTray.uID = 1&
    DeleteTrayIcon = Shell_NotifyIcon(NIM_DELETE, iTray)
End Function

' Na jakiejś formie muszą być dwa pictureboxy.
' Jeden z obrazkiem (ikonka) drugi moze byc bez,
' bo będzie wykorzystywany jako uchwyt naszej
' ikonki w trayu.
' Ja używam nazw: picTrayIcon oraz picTrayHook

' Kod jakiejś formy (zwykle ta forma jest startowa
' i jest cały czas ukryta):

Private Sub Form_Load()
    ' Utworzenie Traya...
    CreateTrayIcon picTrayIcon, picTrayHook, "Stealth"
End Sub

Private Sub picTrayHook_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
    Msg = x / Screen.TwipsPerPixelX
    If Msg = WM_LBUTTONDOWN Then
        ' Jakaś akcja gdy ktoś kliknie na ikonke
        ' w trayu lewym przyciskiem myszki
        ' Przykładowo wywoływana jest domyślna
        ' akcja popup menu... W tym wypadku
        ' wyświetlenie formy frmMain
        ' frmMain.Show
    ElseIf Msg = WM_RBUTTONDOWN Then
        ' Jakaś akcja gdy ktoś kliknie na ikonke
        ' w trayu prawym przyciskiem myszki
        ' Przykładowo popup menu:
        SetForegroundWindow Me.hwnd
        ' frmLoader to forma w której jest ten kod
        Me.PopupMenu frmLoader.mnuTray, , , , frmLoader.mnuTrayOpen
        ' frmLoader.mnuTray - to jest obiekt menu
        ' frmLoader.mnuTrayOpen - domyślny obiekt menu
    End If
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    DeleteTrayIcon frmLoader.picTrayHook
End Sub

Private Sub Form_Terminate()
    DeleteTrayIcon frmLoader.picTrayHook
End Sub

Private Sub Form_Unload(Cancel As Integer)
    DeleteTrayIcon frmLoader.picTrayHook
End Sub

' I tyle... Jak chcesz zmienić ikonke w trayu poprostu piszesz:
' modifytrayicon picturebox z ikonką, informacja gdy ktoś przytrzyma kursor nad ikonką...


_____________________________________________
TLHW Clan member

01-01-2004 14:20
Pokaż profil hicks  Wyślij email do hicks   Odwiedź stronę hicks       2511367
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003

Witam,
Dopiero niedawno zaczałem sie zastanawiac czy konieczne jest uzywanie picturebox-a razem z funkcja Shell_NotifyIcon i zaczałem szukać. Oto co odnalazłem
Zero kontolrek (mam na mysli PictureBox-ow) tylko sam kod:
http://support.microsoft.com/default.aspx?scid=kb;en-us;176085
http://support.microsoft.com/default.aspx?scid=kb;en-us;162613

Chciałem umieścic to co znalazłem w najbardziej rozbudowanym postcie na ten temat.
Pozdrawiam
Andrzej


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

01-09-2004 13:43
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1