10 กันยายน 2553

System Tray ด้วย VB.Net

บทความนี้เขียนมาก็เนื่องจาก วันดีคืนดี มีการปรับปรุงระบบอินเทอร์เน็ตที่องค์กรเพิ่มระบบป้องกันใหม่ นอกจากระบุตัวตนการใช้งาน ก็คือ TimeOut เมื่อไม่มีการใช้งานอินเทอร์เน็ตเกิน 5 นาที ก็จะตัดการทำงาน ทีนี้เวลาจะมาใช้ใหม่ก็ต้อง log in ใหม่ วัน ๆ ต้อง log in กันไม่รู้กี่รอบ
ปัญหามา ปัญญาเกิด ทำไงดีขี้เกียจ ก็เลยสร้างโปรแกรมเล็ก ๆ ฝังไว้ใน System Tray ให้มันหลอกเช็คไปที่เว็บไซต์ข้างนอกที่เป็นสากล จะได้กระตุ้นหลอกว่าข้ายังใช้งานอยู่น่ะ อย่ามาตัด TimeOut ฉัน
ก็เลยมี 2 งานมาอยู่ในบทความนี้ ประกอบด้วย System Tray แล้วก็ตรวจสอบ Internet Connection

เริ่มกันเลย

1. เปิดโปรแกรม Visual Studio 2008 (2005 หรือ 2010 ก็ได้) จากนั้น เลือกเมนู File ---> New Project ที่หน้าต่าง New Project เลือก Visual Basic เลือก Windows เลือก Windows Forms Application จากนั้นที่ช่อง Name ตั้งชื่อตามต้องการ สำหรับตัวอย่างนี้จะตั้งเป็น myTray แล้วคลิกปุ่ม OK

2. ไปที่ Toolbox
ลากคอนโทล Button มาวางไว้ที่ฟอร์ม กำหนด Properties -> Text พิมพ์ Minimize
ลากคอนโทล Label มาวางไว้ที่ฟอร์ม กำหนด Properties -> Text พิมพ์ ..กำลังตรวจสอบสัญญาณ..
ลากคอนโทล NotifyIcon มาวางไว้ที่ฟอร์ม กำหนด Properties -> Icon โดย หารูปไอคอนที่ต้องการ
ลากคอนโทล Timer มาวางไว้ที่ฟอร์ม

ตามภาพด้านล่าง















3. ดับเบิ้ลคลิกที่ฟอร์มว่าง ๆ แล้วป้อนคำสั่งดังนี้

















ถ้าอ่านไม่ออก ก็ Copy ตรงนี้ไปได้เลย

Public Class Form1
Dim nTimeCheck As Integer = 60 ' ตรวจสอบทุก nn วินาที
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = nTimeCheck * 1000
CheckConnect()
HideSysTray()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
HideSysTray()
End Sub
Private Sub NotifyIcon1_MouseDoubleClick( _
ByVal sender As System.Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) _
Handles NotifyIcon1.MouseDoubleClick
ShowSysTray()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
CheckConnect()
End Sub
Private Sub CheckConnect()
If Me.IsConnectionAvailable() Then
Me.Label1.Text = "สถานะเชื่อมต่ออินเทอร์เน็ต"
Me.Label1.ForeColor = Color.Green
Else
Me.Label1.Text = "!!! อินเทอร์เน็ตขาดการติดต่อ !!!"
Me.Label1.ForeColor = Color.Red
End If
End Sub
Private Sub HideSysTray()
Me.Hide()
NotifyIcon1.ShowBalloonTip(3000, _
"สวัสดี อินเทอร์เน็ต", "by Kasami", ToolTipIcon.Warning)
Me.WindowState = FormWindowState.Normal
End Sub
Private Sub ShowSysTray()
Me.Show()
Me.WindowState = FormWindowState.Normal
End Sub
Private Function IsConnectionAvailable() As Boolean
'Call url
Dim url As New System.Uri("http://www.google.com/")
'Request for request
Dim req As System.Net.WebRequest
req = System.Net.WebRequest.Create(url)
Dim resp As System.Net.WebResponse
Try
resp = req.GetResponse()
resp.Close()
req = Nothing
Return True
Catch ex As Exception
req = Nothing
Return False
End Try
End Function
End Class

จากนั้นก็ทำการเรียกฟอร์มให้ทำงาน (Start Debug)

โชคดี กับ System Tray

ไม่มีความคิดเห็น:

"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.