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 Sub
lainaus:
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.