Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Ikon i system tray

Postades av 2005-01-24 18:36:07 - Thomas Roman, i forum visual basic - allmänt, Tråden har 10 Kommentarer och lästs av 1707 personer

Jag har problem med en ikon som jag har lagt i system tray. När explorer startar om så försvinner ikonen trots att programmet fortfarande är aktivt. Alla andra program som ligger där har kvar sina ikoner (alla program som jag inte har gjort) så jag antar att det är jag som gör nått fel.

På formen har jag en picturebox som tar emot händelsen om man klickar på ikonen.

Koden jag använder:

Form:
<code>
Private Sub Form_Load()
CreateTrayicon Me.Icon, "Mitt program"
End Sub

Private Sub Form_Unload()
DeleteTrayicon
End Sub
</code>

Module:
<code>
Option Explicit

Public Enum BalloonIconEnum
BALLON_NONE = &H0
BALLON_WARNING = &H2
BALLON_ERROR = &H3
BALLON_INFO = &H1
End Enum

Public BalloonExists As Boolean

'Notice the changes here from the old 'standard' NOTIFYICONDATA
Public Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 128
dwState As Long
dwStateMask As Long
szInfo As String * 256
uTimeout As Long
szInfoTitle As String * 64
dwInfoFlags As Long
End Type

Public m_IconData As NOTIFYICONDATA

Public Const NOTIFYICON_VERSION = 3 'V5 style taskbar
Public Const NOTIFYICON_OLDVERSION = 0 'Win95 style taskbar

Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2

Public Const NIM_SETFOCUS = &H3
Public Const NIM_SETVERSION = &H4

Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4

Public Const NIF_STATE = &H8
Public Const NIF_INFO = &H10


Public Const NIS_HIDDEN = &H1
Public Const NIS_SHAREDICON = &H2


Public Const NIIF_NONE = &H0
Public Const NIIF_WARNING = &H2
Public Const NIIF_ERROR = &H3
Public Const NIIF_INFO = &H1
Public Const NIIF_GUID = &H4


Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206

Public Declare Function SetForegroundWindow Lib "user32" _
(ByVal hWnd As Long) As Long
Public Declare Function Shell_NotifyIcon Lib "shell32" _
Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

Public Sub CreateBalloon(InfoBallonIcon As BalloonIconEnum, ByVal InfoTitle As String, ByVal InfoText As String)
With m_IconData
.cbSize = Len(m_IconData)
.hWnd = Main.TrayiconDummy.hWnd
.uID = vbNull
.uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIF_TIP 'NIF_TIP Or NIF_MESSAGE
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Main.TrayiconDummy.Picture
'.szTip = InfoToolTip & vbNullChar 'Tooltip
'.szTip = .szTip
.dwState = 0
.dwStateMask = 0
.szInfo = InfoText & Chr(0)

.szInfoTitle = InfoTitle & Chr(0)
'.dwInfoFlags = NIIF_INFO
.dwInfoFlags = InfoBallonIcon
.uTimeout = 5000
End With

If BalloonExists = True Then
Shell_NotifyIcon NIM_MODIFY, m_IconData
End If
End Sub

Public Sub CreateTrayicon(IconPic As Picture, ByVal InfoToolTip As String)
With m_IconData
.cbSize = Len(m_IconData)
.hWnd = Main.TrayiconDummy.hWnd
Main.TrayiconDummy.Picture = IconPic
.uID = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = IconPic
.szTip = InfoToolTip & vbNullChar 'Tooltip
.dwState = 0
.dwStateMask = 0
.szInfo = Chr(0)
.szInfoTitle = Chr(0)
.dwInfoFlags = NIIF_INFO
.uTimeout = 3000
End With

If BalloonExists = False Then
Shell_NotifyIcon NIM_ADD, m_IconData
BalloonExists = True
Else
Shell_NotifyIcon NIM_MODIFY, m_IconData
End If
End Sub
Public Sub DeleteTrayicon()
Shell_NotifyIcon NIM_DELETE, m_IconData
End Sub
</code>


Thomas


Svara

Sv: Ikon i system tray

Postades av 2005-01-24 18:55:38 - Sven Åke Persson

Tycker att du har en himla massa kod för en så enkel sak.

Kolla mitt uppskick
Programarkivet:Animerad SysTray tror att du kan förenkla mycket genom den koden.


Svara

Sv:Ikon i system tray

Postades av 2005-01-24 19:00:40 - Thomas Roman

Jag har kollat ditt exempel men den verkar inte ha stöd för Balloon (vet inte riktigt vad dom heter på svenska... men det är sånna där "XP-ballonger" som kommer upp vid ikonen).


Thomas


Svara

Sv: Ikon i system tray

Postades av 2005-01-24 20:59:51 - Sven Åke Persson

Ahha var det så du menade.
Då tjyvar du dom från nån iconextractor,dom ligger i Shell32.dll.
Så gör du en ImageList av dessa iconer , sen är det bara att köra som du vill.

Dessa iconer har tydligen association till Explorer.


Svara

Sv:Ikon i system tray

Postades av 2005-01-24 22:35:01 - Thomas Roman

Nu tror jag inte att du har förstått mig rätt... ballongen jag syftar på är en sån här http://msdn.microsoft.com/msdnmag/issues/02/11/CQA/fig01.gif.


Thomas


Svara

Sv: Ikon i system tray

Postades av 2005-01-24 23:33:52 - Oskar Johansson

Om jag inte missminner mig så har explorer.exe en förmåga att tappa dessa ikoner lite titt som tätt.

Ett förslag är att du testar att köra modify lite då och då. Om den misslyckas så borde det betyda att ikonen inte finns i systray.

Lite då och då vet jag däremot inte vad det betyder...


Svara

Sv:Ikon i system tray

Postades av 2005-01-24 23:40:10 - Oskar Johansson

Efter en snabb titt med reflector på assemblyt System.Windows.Forms.dll å messagehandlern för klassen NotifyIcon (reklam för .net:s inbyggda stöd för notifyicons) så hittade jag att den verkar fånga ett windowsmessage vid namn WM_TASKBARCREATED för att då uppdatera den lilla fula ikonen ;)

Hur du nu gör för att fånga meddelanden i vb 6 kommer jag dock inte ihåg :/


Svara

Sv:Ikon i system tray

Postades av 2005-01-24 23:41:23 - André Claesson

Anledningen till att de försvinner är att explorer inte uppdaterar systray själv. Detta kan man se om t.ex. explorer hänger sig och startas igen. Då försvinner de flesta ikoner i systrayn. Alla ligger dock kvar, men osynliga, dvs programmet körs fortfarande. Endast de som är aktiva och uppdaterar sig själva kommer synas.

/Andrec


Svara

Sv: Ikon i system tray

Postades av 2005-01-25 19:35:34 - Thomas Roman

Tack vare WM_TASKBARCREATED så lyckades jag hitta ett exempel som kan lösa mitt problem. En länk till det är http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=50753&lngWId=1, har dock inte hunnit testa det själv än.


Thomas


Svara

Sv:Ikon i system tray

Postades av 2005-01-25 21:06:00 - Oskar Johansson

.NET Rocks! ;)


Svara

Sv:Ikon i system tray

Postades av 2005-01-26 13:03:33 - Thomas Roman

Kan nån testa programmet som jag länkade till? När jag använder koden så stängs hela VB ner så fort man avslutar programmet...


Thomas


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 721
27 958
271 751
5 931
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies