Programming

ความรู้เพิ่มเติมเกี่ยวกับคำสั่ง Control Loop แบบต่างๆ เช่น Do Loop , While Loop และ For Loop โดยไม่ต้องใช้ Timer ช่วย
ลองดาวน์โหลด Sample Project ไปศึกษากันดูนะครับ
Size:134.2 KB
Download:http://upload.one2car.com/download.a...MY3BT6OEDCIW78

ความรู้เกี่ยวกับ ProgressBar Percentage(Timer)
เป็นการประยุกต์ใช้งานไฟล์สคริ๊ป Control Properties สร้าง Fontตัวเลข % ขึ้นมาบน progressbar ดังรูป
Download Project:http://upload.one2car.com/download.aspx?pku=416A0D38A52[SZU5FVGCJJO9BC6Y1F


--------------------------------------------------------
อันนี้เป็นการเขียนโค๊ดเพิ่มเติม เพื่อที่จะนำไปประยุกต์ใช้ สั่งติดตั้งโปรแกรมต่างๆแบบอัตโนมัติ

---------------------------------------------------------------------------------------------------

ความรู้เกี่ยวกับ Timer Component

ลักษณะการทำงานของ Timer ก็คล้ายๆกับการใช้คำสั่ง Loop ..ปกติ Timer จะอยู่ในตำแหน่ง Off ..เมื่อต้องการให้ Timer เริ่มทำงาน(ON) ก็ใช้คำสั่ง.. Timer.Enable = True ..ตรงกันข้าม เมื่อต้องการให้ Timer หยุด ก็ใช้คำสั่ง.. Timer.Enable = False 
Timer สามารถกำหนดอัตราความเร็วด้วยคำสั่ง.. Interval ..ปรับได้ใน Properties ของ Timer ..ซึ่งปกติถูกตั้งไว้ที่ 100 หรือจะเขียนเป็นคำสั่งลงไปก็ได้ เช่น Timer.Interval = 150 เป็นต้น

---------------------------------------------------------------------------------------------------

ขยายความเรื่องคำสั่งControl Loop แปลเป็นไทยก็หมายความว่า.. ทำซ้ำๆกันหลายๆครั้งวนไปวนมา
คำสั่ง Loop บางคำสั่ง ก็มีจุดสิ้นการทำงาน เช่น คำสั่ง For Next
และบางคำสั่ง ก็ไม่มีจุดสิ้นสุดการทำงาน ทำไปเรื่อยๆ จนกว่าเราจะสร้างเงื่อนไขให้หยุด 
เช่น คำสั่ง While หรือ DO เป็นต้น ..ถ้าเราหัดใช้คำสั่งLoopให้เป็น จะมีประโยชน์อย่างมากในการเขียนโปรแกรม
-----------------------------------------------------------------
การเขียนคำสั่งต่างๆ ให้สามารถทำงานได้นั้น ขั้นแรกเราจะต้องทำความเข้าใจ ในรูปแบบคำสั่งต่างๆเหล่านั้นเสียก่อน
ไม่งั้นก็จะเขียนกันผิดๆ ..เมื่อเขียนผิด ก็จะเกิดข้อผิดพลาด(Error!)ตามมา 
หลักการก็ง่ายๆขอให้ท่านจำไว้ ดังนี้
1.ถ้ามีการใช้ 'ตัวแปร' ก็ต้องมีการ 'ประกาศ' ตัวแปร ทุกครั้งให้ถูกต้อง
2.จำรูปแบบคำสั่งต่างๆไว้ให้ได้ว่า.. เขียนอย่างไร? จึงไม่เกิด Error!
3.จัดลำดับคำสั่งที่เขียนให้ถูกต้อง เพราะถ้าจัดวางไว้ผิด แต่เขียนได้ครบถูกต้อง ก็เป็นสาเหตุให้เกิด Error! ได้เช่นกัน

เพื่อความกระจ่างชัด ใน Control Loop แบบต่างๆดังที่กล่าวมา ผมจะอธิบายให้ท่านเข้าใจ ในความหมายของรูปแบบอีกครั้ง
ตัวอย่างแรก: For...Next Statements
รูปแบบ:
โค๊ด:

For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next

-----------------------------------------------------------
คำอธิบาย:
counter คือตัวแปรที่เรากำหนดขึ้น ส่วนมากจะใช้ตัวอักษร i หรือ x หรือตัวอักษรใดๆก็ได้ที่ต้องไม่ตรงกับคำที่สงวนไว้เป็นคำสั่ง
statements คือคำสั่งที่ถูกควบคุมการทำงานโดย Loop
----------------------------------------------------------------------

ยกตัวอย่างจากการสั่งให้ Progressbar ทำงาน เขียนได้ดังนี้
เริ่มต้นด้วยการประกาศตัวแปร เพราะเราจำเป็นต้องใช้ตัวแปร
Dim x As Interger
รูปแบบการประกาศก็มีให้เลือกประกาศได้หลายแบบ เช่น
For x As Interger = 1 To 100
Dim x As Interger = 0
------------------------------------------------
ต่อไปก็ใส่คำสั่ง statements ลงไป ถ้าเป็น Progressbar เขียนได้ดังนี้
ProgressBar1.Value += 1
ProgressBar1.Value = ProgressBar1.Value + 1
-------------------------------------------------------
ถ้าเป็นตัวแปร ซึ่งเป็นเงื่อนไขใน statements มักจะใช้สัญญลักษณ์ต่างๆเป็นตัวดำเนินการ จะไม่มีการประกาศตัวแปรใดๆ เช่น
= หมายถึง เท่ากับ
< " น้อยกว่า
> " มากกว่า
<= " น้อยกว่าเท่ากับ
>= " มากกว่าเท่ากับ
-------------------------------------------------------
การใช้งานตัวดำเนินการ ก็ต้องใช้ให้เหมาะสมกับโค๊ดคำสั่งนั้นๆ บางตัวถ้าใส่ไว้ไม่เหมาะสม ก็จะทำให้เกิด Error! ได้

While...End While Statement 
รูปแบบ:

รหัส:
While condition
[ statements ]
[ Exit While ]
[ statements ]
End While

-----------------------------------------------
คำอธิบาย:
condition หมายถึง เป็นคำสั่งที่ให้ statements เริ่มต้นการทำงาน โดยระบุไว้ว่า..ให้ทำไปถึงไหน? แล้ววนกลับมาเริ่มต้นทำใหม่
วนไปวนมาอยู่อย่างนี้ไปเรื่อยๆ เช่น
While < 100 หมายถึง ถ้า statements น้อยกว่า 100 จริง ให้ทำไปจนครบ 100 และเมื่อครบ 100 แล้วก็ให้วนกลับมาเริ่มต้นทำใหม่ ซ้ำไปซ้ำมาอยู่เรื่อยๆ
---------------------------------------------------
ส่วนคำสั่ง Exit เช่น Exit For , Exit While เป็นคำสั่งที่ต้องการให้ statements 
ที่กำลังทำงานอยู่ หยุด หรือ หลุดออกจากการ วน Loop (กระโดด)
---------------------------------------------------
คำแนะนำ: คำสั่งที่เขียนเต็มรูปแบบ ได้ลงไว้ให้ดาวน์โหลดข้างต้นแล้ว ลองนำไปศึกษาเปรียบเทียบดู

 ------------------------------------------------------------------------------

เรามาดูกันซิว่า..เมื่อเราใส่คำสั่ง Exit ลงไปใน Statement แล้วจะเกิดอะไร?ขึ้น ดั่งตัวอย่าง
ตัวอย่าง:

รหัส:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ProgressBar1.Minimum = 0
ProgressBar1.Maximum = 100
ProgressBar1.Step = 1
ProgressBar1.Value = 0
Dim x As Integer
For x = 1 To 100
x += 1
ProgressBar1.Value += 1
ProgressBar1.PerformStep()
Threading.Thread.Sleep(50)
If x = 50 Then Exit For         '<----คำสั่งที่ใส่เพื่อทดสอบ----<<
Next x
If ProgressBar1.Value >= 100 Then
Threading.Thread.Sleep(500)
MsgBox("Completed.", MsgBoxStyle.Information, "")
ProgressBar1.Value = 0
End If
End Sub
End Class
-----------------------------------
ผลที่ได้ก็คือ.. progressbar วิ่งมาถึงครึ่งทางแล้วหยุดลง

------------------------------------------------------------------------------------------

ถ้าใส่ตัวดำเนินการ ที่เป็นเครื่องหมาย = และตามด้วยจำนวนตัวเลข% ล่ะ! ..จะเกิดอะไร?
-----------------------------------------------------------------------

รหัส:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ProgressBar1.Minimum = 0
ProgressBar1.Maximum = 100
ProgressBar1.Step = 1
ProgressBar1.Value = 0
Dim x As Integer
For x = 1 To 100
x += 1
ProgressBar1.Value += 1
ProgressBar1.PerformStep()
Threading.Thread.Sleep(50)
If x = 50 Then                        
MsgBox("BarCurrent = 50%", MsgBoxStyle.Information, "")   '<-Message ยืนยันการทำงาน ตามเงื่อนไข-<
End If
Next x
If ProgressBar1.Value >= 100 Then
Threading.Thread.Sleep(500)
MsgBox("Completed.", MsgBoxStyle.Information, "")
ProgressBar1.Value = 0
End If
End Sub
End Class
---------------------------------------------------------
ผลที่ได้..progressbar วิ่งมาถึง 50% ก็จะหยุดวิ่งชั่วคราว แล้วมี Message ขึ้นมาบอกเงื่อนไข% 
ถ้าเราคลิ๊ก ok ยืนยันเงื่อนไข ..progressbar ก็จะวิ่งต่อไปจนครบ 100%

 

อันนี้เป็นการใส่ Counter หรือ Value% ลงบนฟอร์ม ใช้ Timer ควบคุมการทำงาน
Size:64.7 KB
Download:Sample Project
http://upload.one2car.com/download.aspx?pku=17872B285CI8HPINAT7KO9YOH6I6C[



รหัส:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim i As Integer
If ProgressBar1.Value < 100 Then
Label1.Text = "Installing.." & ProgressBar1.Value.ToString() & "%"
ProgressBar1.PerformStep()
i = i + 1
If ProgressBar1.Value >= 100 Then
Timer1.Enabled = False
MsgBox("Completed.", MsgBoxStyle.Information, "")
ProgressBar1.Value = 0
Label1.Text = "Installing..0%"
End If
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Timer1.Enabled = False
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Close()
End Sub
Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgressBar1.Click
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
__________________
 
แทนลิ๊งค์เก่าที่มีปัญหา
D/L:Auto Installer & Silent Mode_Project
คลิ๊กที่นี่

 เครดิต sak2005

NameSpace Threading
คำสั่ง Sleep ใช้สำหรับหน่วงเวลาการทำงานของ Object ด้วยการกำหนดตัวเลขระยะเวลา
รูปแบบThreading.Thread.Sleep(millisecondsTimeout As Integer)



รหัส:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _   'สั่งให้ ProgressBar ทำงาน ด้วยการคลิ๊กที่ปุ่ม Start
ByVal e As System.EventArgs) Handles Button1.Click
PgB1.Minimum = 1
PgB1.Maximum = 100  'ประกาศตัวแปร ProgressBar
PgB1.Step = 1
PgB1.Value = 1
Dim x As Integer   'ประกาศตัวแปรตัวอักษร x มีค่าเปรียบเสมือนตัวเลข เพื่อใช้ในการนับ
For x = 1 To 100 Step 1   'คำสั่ง Loop For Next
If PgB1.Value < 100 Then
PgB1.Value += 1   'คำสั่งให้ bar ของ Progress เคลื่อนที่ไปด้วยการ + 1 ไปเรื่อยๆ
Threading.Thread.Sleep(50)   'คำสั่งหน่วงเวลา ให้ bar ของ Progress ค่อยๆเคลื่อนที่ไปตามระยะเวลาที่กำหนด
End If
Next x
If PgB1.Value >= 100 Then
MsgBox("Completed.", MsgBoxStyle.Information, "")
PgB1.Value = 1
End If
End Sub
Private Sub PgB1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles PgB1.Click
End Sub
End Class
----------------------------------------------------------
Project Download:http://upload.one2car.com/download.a...OEER[9CRW1
----------------------------------------
คำสั่ง: ยกเลิกการใช้งาน หรือปิดโปรแกรมต่างๆ
รหัส:
Close()
รหัส:
Me.Close
รหัส:
Application.Exit()

เครดิต sak2005

ออกแบบ GUI ตามรูปเลยครับ

 

ให้ทำการเปลี่ยน Name ของ Object ต่างๆ ที่ในกรอบ properties ขวามือ ดังนี้

ปุ่ม C ที่Nameเปลี่ยนชื่อเป็น btnCLR
ปุ่ม 7 "---------------" btn_Num_7
ปุ่ม 8 "---------------" btn_Num_8
ปุ่ม 9 "---------------" btn_Num_9
ปุ่ม 4 "---------------" btn_Num_4
ปุ่ม 5 "---------------" btn_Num_5
ปุ่ม 6 "---------------" btn_Num_6
ปุ่ม 1 "---------------" btn_Num_1
ปุ่ม 2 "---------------" btn_Num_2
ปุ่ม 3 "---------------" btn_Num_3
ปุ่ม 0 "---------------" btn_Num_0
ปุ่ม . "dotหรือจุด------" btnNumPeriod
ปุ่ม + "บวก-----------" btn_Operator_Add
ปุ่ม - "ลบ------------" btn_Operator_Subt
ปุ่ม x "คูณ------------" btn_Operator_Multi
ปุ่ม / "หาร------------" btn_Operator_div
ปุ่ม = "เท่ากับ---------" btnCalculate
--------------------------------------------
ปรับแต่ง properties TextBox ..ย้าย Cursor ไปอยู่อีกฟากของช่อง TextBox 
ที่ text Aligh ..ปกติเป็น Right ..ให้เปลี่ยนเป็น Left

ต่อไปก็เป็นขั้นตอนไล่เขียนโค๊ดคำสั่ง ลงบน Object ต่างๆ ดังนี้
-------------------------
ที่ Public Class Form1 ..ต้องประกาศตัวแปรดังนี้ก่อนครับ 
(ถ้าไม่ประกาศตัวแปร หรือ ประกาศผิด ..โปรแกรมจะเกิด Error ไม่สามารถทำงานได้)

รหัส:
Public Class Form1
Inherits System.Windows.Forms.Form
Private Var1 As Double
Private var2 As Double
Private Temp As Double
Private Memory As Double
Private period As Boolean
Private [Operator] As String
Private Status As Boolean
-----------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม7 แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Num_7_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Num_7.Click
If Status = False Then
TextBox1.Text = TextBox1.Text + CStr(7)
Else
TextBox1.Text = 7
Status = False
End If
End Sub
---------------------------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม8 แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Num_8_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Num_8.Click
If Status = False Then
TextBox1.Text = TextBox1.Text + CStr(8)
Else
TextBox1.Text = 8
Status = False
End If
End Sub
--------------------------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม9 แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Num_9_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Num_9.Click
If Status = False Then
TextBox1.Text = TextBox1.Text + CStr(9)
Else
TextBox1.Text = 9
Status = False
End If
End Sub
------------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม4 แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Num_4_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Num_4.Click
If Status = False Then
TextBox1.Text = TextBox1.Text + CStr(4)
Else
TextBox1.Text = 4
Status = False
End If
End Sub
------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม5 แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Num_5_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Num_5.Click
If Status = False Then
TextBox1.Text = TextBox1.Text + CStr(5)
Else
TextBox1.Text = 5
Status = False
End If
End Sub
------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม6 แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Num_6_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Num_6.Click
If Status = False Then
TextBox1.Text = TextBox1.Text + CStr(6)
Else
TextBox1.Text = 6
Status = False
End If
End Sub
--------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม1 แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Num_1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Num_1.Click
If Status = False Then
TextBox1.Text = TextBox1.Text + CStr(1)
Else
TextBox1.Text = 1
Status = False
End If
End Sub
---------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม2 แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Num_2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Num_2.Click
If Status = False Then
TextBox1.Text = TextBox1.Text + CStr(2)
Else
TextBox1.Text = 2
Status = False
End If
End Sub
---------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม3 แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Num_3_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Num_3.Click
If Status = False Then
TextBox1.Text = TextBox1.Text + CStr(3)
Else
TextBox1.Text = 3
Status = False
End If
End Sub
----------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม0 แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Num_0_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Num_0.Click
If Status = False Then
TextBox1.Text = TextBox1.Text + CStr(0)
Else
TextBox1.Text = 0
Status = False
End If
End Sub
---------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม . (dot หรือ จุด) แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btnNumPeriod_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnNumPeriod.Click
If Status = False Then
If period = False Then
If TextBox1.Text.Length > 0 Then
TextBox1.Text = TextBox1.Text + "."
Else
TextBox1.Text = "0."
End If
period = True
End If
End If
---------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม + แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Operator_Add_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Operator_Add.Click
If TextBox1.Text.Length <> 0 Then
If [Operator] = "" Then
Var1 = CDbl(TextBox1.Text)
TextBox1.Text = ""
Else
Calculate()
End If
[Operator] = "Add"
period = False
End If
End Sub
----------------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม - แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Operator_Subt_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Operator_Subt.Click
If TextBox1.Text.Length <> 0 Then
If [Operator] = "" Then
Var1 = CDbl(TextBox1.Text)
TextBox1.Text = ""
Else
Calculate()
End If
[Operator] = "Sub"
period = False
End If
End Sub
-------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม x แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Operator_Multi_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Operator_Multi.Click
If TextBox1.Text.Length <> 0 Then
If [Operator] = "" Then
Var1 = CDbl(TextBox1.Text)
TextBox1.Text = ""
Else
Calculate()
End If
[Operator] = "Mult"
period = False
End If
End Sub
---------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม / แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btn_Operator_div_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btn_Operator_div.Click
If TextBox1.Text.Length <> 0 Then
If [Operator] = "" Then
Var1 = CDbl(TextBox1.Text)
TextBox1.Text = ""
Else
Calculate()
End If
[Operator] = "Div"
period = False
End If
End Sub
------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม C แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btnCLR_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnCLR.Click
TextBox1.Text = ""
Var1 = 0
var2 = 0
[Operator] = ""
period = False
End Sub
-------------------------------------------
ดับเบิ้ลคลิ๊กที่ปุ่ม = แล้วเขียนโค๊ดลงไปดังนี้

รหัส:
Private Sub btnCalculate_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnCalculate.Click
If TextBox1.Text.Length <> 0 AndAlso Var1 <> 0 Then
Calculate()
[Operator] = ""
period = False
End If
End Sub
---------------------------------------------
สุดท้ายนี้เป็นโค๊ดสมการแปลผล ขาดไม่ได้เลย 
ถ้าขาดตรงนี้ เครื่องคิดเลขจะไม่สามารถคำนวณได้

รหัส:
Public Sub Calculate()
var2 = CDbl(TextBox1.Text)
If [Operator] = "Add" Then
Var1 = Var1 + var2
ElseIf [Operator] = "Sub" Then
Var1 = Var1 - var2
ElseIf [Operator] = "Mult" Then
Var1 = Var1 * var2
ElseIf [Operator] = "Div" Then  
Var1 = Var1 / var2
ElseIf [Operator] = "Sqrt" Then
Exit Sub
ElseIf [Operator] = "Pow" Then
Var1 = System.Math.Pow(Var1, var2)
ElseIf [Operator] = "Inve" Then
Exit Sub
End If
TextBox1.Text = CStr(Var1)
Status = True
End Sub

---------------------------------------------------------
**เสร็จเรียบร้อยแล้วครับ ..ถ้าไม่มี Error ใดๆ ลองกด F5 ทดสอบดูครับ**
ดาวนโหลด: Source Code: Click here
Size:108.9 KB

เครดิต sak2005

เปิดกรุ รูปแบบการเขียน JAVA Script และการใช้งานเบื้องต้น
สิ่งที่ต้องคำนึงถึงและให้ความสำคัญก่อนลงมือเขียน JScript 
คือองค์ประกอบของรูปแบบและการจัดวางสคริ๊ปที่ถูกต้อง
ก่อนเริ่มการเขียนควรสร้างจุดประสงค์ไว้ก่อนว่า
เขียนแล้วนำไปใช้ทำอะไร? เช่น เขียนออกมาเป็นโปรแกรมใช้งานเลย หรือ
นำไปใช้งานร่วมกับโปรแกรมภาษาอื่นๆ เป็นต้น. 
----------------------------------------------------------------------
ลำพังเพียงJScript เพียงอย่างเดียว ไม่สามารถสั่งงานอะไร?บนวินโดว์ได้ 
JScript ต้องอาศัยทำงานร่วมกับโปรแกรมคำสั่งหลักอื่นๆที่อยู่ภายในวินโดว์ 
จึงจะสามารถสั่งให้วินโดว์ทำงานได้ ซึ่งได้แก่..WScript และ CScript 
WScript (Windows Script Host - window based (WScript.exe)) ใช้สั่งงานกับวินโดว์โดยตรง 
CScript (Windows Script Host - command line (CScript.exe)) ใช้สั่งงานกับวินโดว์ผ่านทางโปรแกรม Command Prompt
และยังมีโปรแกรมคำสั่งภายในวินโดว์อื่นๆอีก เช่น Microsoft Script Control (embedded) , Microsoft Internet Explorer เป็นต้น
เรามาดูกันซิว่า คำสั่งต่างๆนั้นมีรูปแบบอย่างไรบ้าง
----------------------------------------------------------------------
นี่คือรูปแบบสคริ๊ปคำสั่งของ JScript ..คำประกาศตัวแปรใช้คำว่า.. var 
ActiveXObject Object ..เขียนออกมาเป็นรูปแบบได้ ดังนี้
รหัส:
newObj = new ActiveXObject(servername.typename[, location])
ภายในคำสั่งที่เป็น Statement ต้องใส่เครื่องหมาย { } ครอบหัว-ท้ายไว้
---------------------------------------------------------------------
เรามาลองเขียนคำสั่งง่ายๆ ..ในกรณีย์นี้ใช้เป็น JAVA Popup Message ก็แล้วกัน
ใครจะใช้ Notepad หรือ Script editor เขียนก็ได้ตามสดวก
เขียนเสร็จแล้วให้ Save As เป็นไฟล์สกุล .js 
----------------------------------------------------------------------
ตัวอย่างการเขียนJScript (คำสั่งรัน Popup Message)
Popup Message เป็น Object ของคำสั่ง WScript.Shell
รูปแบบของ Popup Message มีดังนี้
รหัส:
object.Popup(strText,[nSecondsToWait],[strTitle],[nType])
--------------------------------------------------------
JScript แบบเขียนเต็ม ..เมื่อเขียนเสร็จให้ Save As เป็นไฟล์สกุล .js
รหัส:
var ShellObj; ShellObj=new ActiveXObject("WScript.Shell");ShellObj.Popup("Hello World!1");WScript.Echo("Hello World!2");
----------------------------------------------------------------------
คำอธิบาย:
ShellObj คือชื่อตัวแปรที่ตั้งขึ้น
new ActiveXObject("WScript.Shell"); หมายถึง รูปแบบคำสั่งที่ใช้เขียน 
โดยอ้างหรือใช้คำสั่งภายใน ของวินโดว์ร่วมด้วย อันประกอบไปด้วย
ActiveXObject และ servername.typename
ShellObj.Popup("Hello World!"); คำสั่งรัน Popup Message.. Hello World!
ส่วนคำสั่ง WScript.Echo นั้นเป็นคำสั่งจาก Windows โดยตรง (WSH) 
----------------------------------------------------------------------
popup Message แบบมีเงื่อนไข ใช้ตัวเลือก Switch Case
รูปแบบ: Popup Message
รหัส:
intButton = object.Popup(strText,[nSecondsToWait],[strTitle],[nType])
---------------------------------------------------------------------
Switch Statement
รูปแบบ: ตัวเลือก Switch Case
รหัส:
switch (expression) {case label :statementlistcase label :statementlist...default :statementlist}
------------------------------------------------------------------ 
ตัวอย่าง:แบบเขียนเต็ม
จุดประสงค์: ต้องการให้ยืนยันคำตอบว่า..'ต้องการรันโปรแกรมเครื่องคิดเลขใช่หรือไม่?'
รหัส:
var Shell,BtnCode;Shell = new ActiveXObject("WScript.Shell");BtnCode = Shell.Popup("ท่านต้องการเปิดโปรแกรมเครื่องคิดเลขใช่หรือไม่?",0,"Test Project",36);switch (BtnCode) {case 6:Shell.Run("Calc.exe");break;case 7:Shell.Popup("เปิดใหม่ภายหลัง",0,"",64);break;}
__________________
 
 Scripting FileSystemObject
ต่อไปเป็นคำสั่งการจัดการเกี่ยวกับไฟล์และโฟลเดอร์
รูปแบบคำสั่งหลัก:

รหัส:
fso = new ActiveXObject("Scripting.FileSystemObject");
คำอธิบาย:เมื่อจะจัดการข้อมูลต่างๆ.. สังเกตุคำสั่งที่อยู่ในวงเล็บจะเปลี่ยนไป 
--------------------------------------------------------------------
คำสั่ง:ก๊อบปี้ไฟล์
รูปแบบคำสั่ง:

รหัส:
object.CopyFile ( source, destination[, overwrite] )

คำอธิบาย:
object หมายถึง ตัวแปร
.CopyFile หมายถึง คำสั่งก๊อบปี้ไฟล์
source หมายถึง พาทไฟล์ต้นทาง
destination หมายถึง พาทที่อยู่หรือที่เก็บไฟล์ปลายทาง
overwrite หมายถึง เขียนทับไฟล์ ซึ่งมีคำสั่งให้เลือกเขียนดังนี้
true ..ถ้าใช้คำสั่งนี้ หมายถึง ให้เขียนทับไฟล์เดิมที่มีชื่อซ้ำกัน
false ..ถ้าใช้คำสั่งนี้ หมายถึง ละเว้น ..ใช้ได้กับไฟล์ที่ใช้อ่านเท่านั้น
ถ้าไม่ใส่คำสั่ง true หมายถึง ไม่ต้องเขียนทับ
--------------------------------------------------------------
ตัวดำเนินการ,สัญญลักษณ์ และความหมาย:
\\ หมายถึง backslash ลำดับพาทไฟล์,โฟลเดอร์
*. หมายถึง ระบุไฟล์ทั้งหมดที่มีสกุลเดียวกัน
*.* หมายถึง ระบุไฟล์ทั้งหมด ทุกสกุล
\n หมายถึง line feed(newline)ใช้ใส่คั่นในข้อความที่ยาวๆ เพื่อขึ้นบันทัดใหม่ให้ข้อความ ดังรูป



-------------------------------------------
ตัวอย่าง:การเขียนคำสั่งก๊อบปี้ไฟล์ โดยใช้ เงื่อนไข Popup Message Yes No
กรณีย์นี้สั่งก๊อบปี้ไฟล์ทุกสกุลที่อยู่ใน My Documents มาวางไว้บนหน้าจอ

รหัส:
var ShellObj, fso, BtnCode;ShellObj = new ActiveXObject("WScript.Shell");fso = new ActiveXObject("Scripting.FileSystemObject");BtnCode = ShellObj.Popup("ท่านต้องการก๊อบปี้ไฟล์ทุกสกุลใน My Documents ใช่หรือไม่?",0,"Test Copy",36);switch (BtnCode) {case 6: fso.CopyFile ("C:\\Documents and Settings\\Administrator\\My Documents\\*.*", "C:\\Documents and Settings\\Administrator\\Desktop", true);ShellObj.Popup("ก๊อบปี้เรียบร้อย.",0,"",64);break;case 7:ShellObj.Popup("ก๊อบปี้ใหม่ภายหลัง.",0,"",64);break;}

--------------------------------------------------------------
Tip:การนำไฟล์สคริ๊ปคำสั่ง .js ไปใช้งานโดยตรง อาจเสี่ยงต่อการถูกแก้ไขสคริ๊ป ทำให้เกิด Error! ได้

ฉนั้นควรแปลงไฟล์(convert)จาก .js เป็น .exe ก่อน นำไปใช้งานตามปกติ

 คำสั่งก๊อบปี้โฟลเดอร์

รูปแบบ:
รหัส:
object.CopyFolder ( source, destination[, overwrite] );
------------------------------------------------------------------
ในกรณีย์นี้ สั่งก๊อบปี้โฟลเดอร์ทั้งหมด ที่มีอยู่ใน My Documents มาไว้ที่เดสก์ทอป

รหัส:
var ShellObj, fso, BtnCode;ShellObj = new ActiveXObject("WScript.Shell");fso = new ActiveXObject("Scripting.FileSystemObject");BtnCode = ShellObj.Popup("ท่านต้องการก๊อบปี้โฟลเดอร์ทั้งหมดใน My Documents ใช่หรือไม่?",0,"Test Copy",36);switch (BtnCode) {case 6:fso.CopyFolder ("C:\\Documents and Settings\\Administrator\\My Documents\\*.*", "C:\\Documents and Settings\\Administrator\\Desktop", true)ShellObj.Popup("ก๊อบปี้เรียบร้อย.",0,"",64);break;case 7:ShellObj.Popup("ก๊อบปี้ใหม่ภายหลัง.",0,"",64);break;}

  คำสั่งสร้างโฟลเดอร์

รูปแบบ:
รหัส:
object.CreateFolder(foldername)
กรณีย์นี้ ต้องการสร้างโฟลเดอร์ขึ้นมาใหม่ ชื่อ NewFolder และวางไว้บนหน้าจอ
รหัส:
var fso;fso = new ActiveXObject("Scripting.FileSystemObject");fso.CreateFolder("C:\\Documents and Settings\\Administrator\\Desktop\\NewFolder");
__________________
 
อันนี้เป็นการรวม2คำสั่งเข้าด้วยกัน
กรณีย์นี้สั่งสร้างโฟลเดอร์ขึ้นมาแล้วก๊อบปี้ไฟล์ทั้งหมดที่มีอยู่ใน My Documents มาไว้ในโฟลเดอร์ที่สร้างขึ้น
รหัส:
var fso;fso = new ActiveXObject("Scripting.FileSystemObject");fso.CreateFolder("C:\\Documents and Settings\\Administrator\\Desktop\\NewFolder");fso.CopyFile("C:\\Documents and Settings\\Administrator\\My Documents\\*.*","C:\\Documents and Settings\\Administrator\\Desktop\\NewFolder",true);
__________________
 
ที่มา forums.overclockzone.com
 
และยังสามารถนำไปใช้เขียนโปรแกรมร่วมกับ Visual Basic ได้ด้วย 

Type Characters (VB)

posted on 03 Oct 2009 08:44 by immortalpao in Programming
 
Credit MSDN
Reference inet03.exteen.com