■■■

2016年4月6日水曜日

プログラムをタスクトレイ内で実行する方法(VB.NET)

ひと目でわかる Visual C# 2013/2012 アプリケーション開発入門 (MSDNプログラミングシリーズ)
プログラムをタスクトレイ内で実行する方法

VB.NET

    Const SW_HIDE = 0 ' ウィンドウを非表示
    Const SW_SHOW = 5       ' ウィンドウを表示
    Const SW_RESTORE = 9    ' ウィンドウを元の状態に戻す

    ' ウィンドウ表示/非表示切替
    Private Declare Function ShowWindow Lib "user32.dll" _
        (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer
    ' ウィンドウ表示/非表示チェック
    Private Declare Function IsWindowVisible Lib "user32.dll" _
        (ByVal hwnd As Integer) As Integer
    ' タスクトレイ実行したプログラム
    Private exe As System.Diagnostics.Process

    Private Sub Form1_Load( _
        ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles MyBase.Load
        ' アプリケーションのタイトル
        NotifyIcon1.Text = "Outlook Express"

        ' アプリケーションのアイコン
        NotifyIcon1.Icon = Me.Icon

        ' 実行
        exe = System.Diagnostics.Process.Start("C:\Program Files\Outlook Express\msimn.exe")
    End Sub

    Private Sub NotifyIcon1_MouseDown( _
        ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
        Handles NotifyIcon1.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Left Then
            ' マウス左ボタンをクリック
            If exe Is Nothing = False AndAlso exe.MainWindowHandle <> 0 Then
                If IsWindowVisible(exe.MainWindowHandle) = 0 Then
                    ' ウィンドウ表示
                    ShowWindow(exe.MainWindowHandle, SW_SHOW)
                Else
                    ' ウィンドウ非表示
                    ShowWindow(exe.MainWindowHandle, SW_HIDE)
                End If
            End If
        End If
    End Sub

    Private Sub Form1_FormClosed( _
        ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) _
        Handles MyBase.FormClosed
        ' タスクトレイアイコン消去
        NotifyIcon1.Icon = Nothing
    End Sub
ひと目でわかる Visual C# 2013/2012 アプリケーション開発入門 (MSDNプログラミングシリーズ)
■■■