Olen aloitellut ohjelmoimaan Visual Basicilla, ja tehnyt jo pari ohjelmaa omaksi ilokseni. Nyt kuitenkin tuli ongelma, sillä haluaisin ohjelmani aukeavan aina Windowsin mukana Tray-palkkiin, jotta sitä ei tarvitsisi aina avata käsin. Tämä ei varmaankaan ihan yksinkertaisesti hoidu, mutta olisi suureksi avuksi jos joku voisi hieman selittää että miten tämän saisi onnistumaan.
Tee ohjelmastasi pikakuvake, jonka lisäät käynnistä valikon käynnistys kohtaan, tai lisää ohjelmasi rekistereihin, jota en osaa sitten neuvoa.
Koodivinkeissä on Rekisterin muokkaus ja lisääminen systray:hin.
Rekisterin muokkaus, tai käynnistävalikoon lisäys on tietääkseni ainoa (ja erittäin helppo) keino. Ohjelmoimaan tuota ei tietenkään pysty, koska ohjelma ei voi tehdä mitään, jos se ei ole käynnissä. Ja jos se on käynnissä, niin sitten käynnistystä ei enää tarvitsisikaan tehdä.
vb.net ratkaisu on tässä:
http://www.vbcity.com/forums/faq.asp?fid=9&cat=Registry&#TID55991
W2000:ssa ja XP:ssä käynnistyvien ohjelmien rekisteriavain on:
HKEY_LOCAL_MACHINE -> Software -> Microsoft -> Windows -> CurrentVersion -> Run
tai
HKEY_USERS -> <UserName> -> Software -> Microsoft -> Windows -> CurrentVersion -> Run
Avaimen nimellä ei ole merkitystä, mutta arvo on hakemistoviittaus käynnistettävään ohjelmaan.
lainaus:
tai
HKEY_USERS -> <UserName> -> Software -> Microsoft -> Windows -> CurrentVersion -> Run
Tuota ei kannata käyttää.
Jos halutaa pistää ohjelma käynnistmään vain tälle käyttäjälle (mm. siksi että oikeudet ei riitä muuhun) kannattaa käyttää:
HKEY_CURRENT_USER\Software\Microsoft\Windows\
Tosin itse suositteleen käyttämään ihan pikakuvaketta Käynnnistä -> Ohjelmat -> Käynnistys jolloin se on käyttäjän helpompi poistaa.
Tällä saa system trayhin:
Laita Image kontrolli formiisi .
Sen picture probertyyn haluamasi ikonin.
Private 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
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_RBUTTONUP = &H205
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Dim TrayI As NOTIFYICONDATA
Private Sub Form_Load()
TrayI.cbSize = Len(TrayI)
TrayI.hWnd = Me.hWnd
TrayI.uId = 1&
TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
TrayI.ucallbackMessage = WM_LBUTTONDOWN
TrayI.hIcon = Image1.Picture
TrayI.szTip = "Recent" & Chr$(0)
Shell_NotifyIcon NIM_ADD, TrayI
Me.Hide
End Sublainaus:
W2000:ssa ja XP:ssä käynnistyvien ohjelmien rekisteriavain on:
HKEY_LOCAL_MACHINE -> Software -> Microsoft -> Windows -> CurrentVersion -> Run
tai
HKEY_USERS -> <UserName> -> Software -> Microsoft -> Windows -> CurrentVersion -> Run
Avaimen nimellä ei ole merkitystä, mutta arvo on hakemistoviittaus käynnistettävään ohjelmaan.
Samat on ainakin W98
Aihe on jo aika vanha, joten et voi enää vastata siihen.