Запустите форму в трее приложения из ярлыка рабочего стола
Я довольно новичок в VB и программировании в целом, и мне бы не помешало небольшое руководство. Я смог построить свое приложение так, как я хочу, но мне просто нужна еще одна часть.
Есть ли способ запустить определенную форму в моем проекте из ярлыка на рабочем столе?
В приложении Трея есть 5 форм, и я хотел бы иметь возможность запустить одну из них, в частности, из ярлыка на рабочем столе.
Разве это возможно? Если да, то с чего мне начать?
Заранее спасибо!
Что я уже пробовал:
Я не смог найти ничего конкретного по своему вопросу, и это может быть связано с неправильной формулировкой...
Я нашел некоторый код (по-моему, на CodeProject), как показано ниже. Это бесформенное приложение для лотка, которое, как мне кажется, я и хотел. Что касается таймера, я не был уверен, что он мне нужен, и он прекрасно работает без него.
Вот код модуля, который я использую. Как бы я вписал этот ответ в свой код? [Помнить... Я же нуб! (как бы мне ни было неприятно это признавать)]
<pre>Imports Microsoft.Win32 Module Module1 Private MyNotifyIcon As NotifyIcon 'ICON IN SYSTEM TRAY COMPONENT Private MyContextMenu As ContextMenu 'CONTEXT MENU WHEN ITEM IS CLICKED ON 'Private MyTimer As Timer Private WithEvents Tray As NotifyIcon Public Sub Main() Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", Application.ProductName, Application.ExecutablePath, RegistryValueKind.String) 'CREATE INSTANCES OF OBJECTS WE NEED MyNotifyIcon = New NotifyIcon MyContextMenu = New ContextMenu 'MyTimer = New Timer MyNotifyIcon.Icon = My.Resources.ecmsi 'SET AN ICON (ICON IS A RESOURCE IN THE PROJECT) MyNotifyIcon.Visible = True 'SET VISIBLE 'ADD CAPTIONS AND EVENT HANDLERS FOR ITEMS IN CONTEXT MENU MyContextMenu.MenuItems.Add("&Support Ticket", AddressOf Ticket) MyContextMenu.MenuItems.Add("Quick Self-Help", AddressOf SelfHelp) MyContextMenu.MenuItems.Add("Instant Support", AddressOf Support) MyContextMenu.MenuItems.Add("System Information", AddressOf SysInfo) MyContextMenu.MenuItems.Add("-") MyContextMenu.MenuItems.Add("About", AddressOf About) 'MyContextMenu.MenuItems.Add("-") 'MyContextMenu.MenuItems.Add("Exit", AddressOf ExitApplication) If (Control.ModifierKeys = Keys.Shift) Then MyContextMenu.MenuItems.Add("Tools", AddressOf Tools) End If MyNotifyIcon.ContextMenu = MyContextMenu 'ASSIGN CONTEXT MENU TO ICON 'SETUP TIMER 'MyTimer = New Timer 'MyTimer.Interval = 10000 '10 seconds 'MyTimer.Start() 'AddHandler MyTimer.Tick, AddressOf Timer_Tick 'CREATE A MESSAGE LOOP WITH NO FORM, OTHERWISE THE APPLICATION WOULD EXIT RIGHT AWAY Application.Run() End Sub 'DELEGATE SUB TO EXIT APPLICATION Private Sub ExitApplication(ByVal sender As Object, ByVal e As EventArgs) 'CLEAN UP YOUR OBJECTS 'MyTimer.Stop() 'MyTimer.Dispose() MyContextMenu.Dispose() MyNotifyIcon.Dispose() 'EXIT APPLICATION LOOP Application.Exit() End Sub 'SysInfo form Private Sub SysInfo(ByVal sender As Object, ByVal e As EventArgs) Dim SysInfo As New formSysInfo SysInfo.Show() End Sub 'Self Help form Private Sub SelfHelp(ByVal sender As Object, ByVal e As EventArgs) Dim Tools As New formTools formTools.Show() End Sub 'Support form Private Sub Support(ByVal sender As Object, ByVal e As EventArgs) Process.Start("https://weblink.com") End Sub 'Ticket form Private Sub Ticket(ByVal sender As Object, ByVal e As EventArgs) Dim Ticket As New formTicket formTicket.Show() End Sub 'Double Click Action Private Sub Tray_DoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseButtons) formTicket.Show() End Sub Private Sub ECMSI_Tray_DBLClk(sender As Object, e As EventArgs) Handles ECMSI_Tray.DoubleClick 'Private Sub Tray_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ECMSI_Tray.DoubleClick formTicket.Show() End Sub 'About form Private Sub About(ByVal sender As Object, ByVal e As EventArgs) Dim About As New formAbout formAbout.Show() End Sub 'Hidden Tools Menu Private Sub Tools(ByVal sender As Object, ByVal e As EventArgs) Process.Start("C:\DIR1\DIR2\App.exe") End Sub 'DELEGATE TO HANDLE TIMER TICKING 'Private Sub Timer_Tick(ByVal sender As Object, ByVal e As EventArgs) 'MyTimer.Stop() 'MessageBox.Show("Timer Ticked") 'MyTimer.Start() 'End Sub End Module