Home Webboard ArticlesKnowledges  
ข่าวประกาศ:

:: กติกา มารยาท ในการใช้งานเว็บบอร์ด ::
กรุณากรอกอีเมล์จริงในการสมัคร และรับอีเมล์ยืนยันเพื่อใช้งานในบอร์ด

ผู้เขียน หัวข้อ: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)  (อ่าน 9404 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« เมื่อ: 18, มิถุนายน 2009, 08:22:43 PM »
AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
------------------------------------------
Current File Process to Progressbar
เป็นวิธีผูก(sync)Process ของโปรแกรมไว้กับProgressbar กลายเป็น AutoSync ที่ผมใช้เวลาทดลองค้นคว้าอยู่เป็นเดือน ที่นี้ไม่ต้องกำหนดเวลาตรงSleep อีกแล้ว ใช้วิธีจับการตรวจสอบการเขียนไฟล์ แล้วนำProcess มากำหนดเงื่อนไขเวลาให้กับProgressbarตรงCounterและ Sleep(หน่วยนับและระยะเวลาของการนับ) ฉนั้นการสิ้นสุดการติดตั้งโปรแกรม เวลาจะพอดีกับสิ้นสุดการแสดงผลของProgressbar จริงๆแล้วเขียนสคริ๊ปโปรแกรมไม่ค่อยเป็นหรอก ผิด-ถูกยังไง ต้องขออภัยไว้ล่วงหน้า (เพราะมั่ว+เดาสุ่ม)ใช้ติดตั้งได้เฉพาะบางโปรแกรมเท่านั้นที่มี Switch Parameter(SilentMode)ของโปรแกรม ที่เข้ากันได้กับสคริ๊ป ส่วนโปรแกรมไหนที่ติดตั้งอัตโนมัติด้วยสคริ๊ปAutoItไม่ได้ ก็หันมาใช้สคริ๊ปภาษาอื่น เช่น .bat,.vbsและ.js เป็นต้น.
สนใจ:ดาวน์โหลด Sample Projectไปทดลองศึกษากันดูนะครับ...
Download:Project3AutoInstall
ขนาดไฟล์ 14.2 MB
http://upload.one2car.com/download.aspx?pku=2A0FB5DA8C7UMDL9ZU26L3MLI9UN9Y
« แก้ไขครั้งสุดท้าย: 19, มิถุนายน 2009, 09:14:29 AM โดย sak2005 »


คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #1 เมื่อ: 18, มิถุนายน 2009, 09:00:30 PM »
อันนี้คือสคริ๊ป AutoIt AutoSync AutoInstall ที่ผมออกแบบเขียนขึ้นเอง
โค๊ด: [Select]
_PROGRESS_ (100)
Func _PROGRESS_($a)
Local $Progress_GUI = GUICreate('' & $a, 300, 60, -1, 300, -2138570616)
    GUISetBkColor(0x0, $Progress_GUI)
Local $Progress = GUICtrlCreateProgress( 0, 0, 300, 30)
Local $Connecting = GUICtrlCreateLabel('', 0, 40, 300, 30)
    GUICtrlSetFont(-1, 10, '', '', 'Fixedsys')
    GUICtrlSetColor(-1, 0xFFFFA2)
    WinSetOnTop($Progress_GUI, '', 1)
    GUISetState([แอท]SW_SHOW)

$Wait = ConsoleWrite("uiso86pes.exe")
    Run ("uiso86pes.exe /VERYSILENT /SP-")
For $i = $Wait To $a
Sleep ($Wait)
GUICtrlSetData($Progress , $i)
Sleep ($Wait)
GUICtrlSetData($Connecting, "       UltraISO:Installing.."&$i&"%")
Next
If ProcessClose("$Wait") Then MsgBox(0,"","ติดตั้งเรียบร้อย.",2)
Sleep(1000)
If $i >= 100 Then
GUICtrlSetData($Connecting, "             Completed.")
Sleep(1000)
GUIDelete($Progress_GUI)
EndIf
EndFunc
Exit

« แก้ไขครั้งสุดท้าย: 18, มิถุนายน 2009, 09:26:36 PM โดย sak2005 »
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #2 เมื่อ: 19, มิถุนายน 2009, 11:20:26 AM »
เป็นสคริ๊ปที่แก้ไขให้ใหม่ สดๆร้อนๆ ทำให้ sync process ได้ดีขึ้นกว่าเดิมเยอะเลย ลองนำไปเปรียบเทียบกับไฟล์ที่ให้ดาวน์โหลดดูกันเองก็แล้วกัน(มั่วเหมือนเดิม)
 
โค๊ด: [Select]
_PROGRESS_ (100)
Func _PROGRESS_($a)
Local $Progress_GUI = GUICreate('' & $a, 300, 60, -1, 300, -2138570616)
    GUISetBkColor(0x0, $Progress_GUI)
Local $Progress = GUICtrlCreateProgress( 0, 0, 300, 30)
Local $Connecting = GUICtrlCreateLabel('', 0, 40, 300, 30)
    GUICtrlSetFont(-1, 10, '', '', 'Fixedsys')
    GUICtrlSetColor(-1, 0xFFFFA2)
    WinSetOnTop($Progress_GUI, '', 1)
    GUISetState([แอท]SW_SHOW)

$Wait = ConsoleWrite("uiso86pes.exe")
    Run ("uiso86pes.exe /VERYSILENT /SP-")
For $i = $Wait To $a
Sleep ($Wait)
GUICtrlSetData($Progress , $i)
Sleep ($Wait)
GUICtrlSetData($Connecting, "       UltraISO:Installing.."&$i&"%")
Next
    Sleep ($Wait)
If ProcessClose("$Wait") Then
    Sleep ($Wait)
    MsgBox(0,"","ติดตั้งเรียบร้อย.",2)
Endif
If $i >= 100 Then
GUICtrlSetData($Connecting, "             Completed.")
    Sleep ($Wait)
GUIDelete($Progress_GUI)
EndIf
EndFunc
Exit
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #3 เมื่อ: 20, มิถุนายน 2009, 01:16:54 AM »
อันนี้สคริ๊ปที่นำไปใช้งานได้จริง ไม่ได้มั่วหรือเดาสุ่มนะครับ เพราะมีเหตุผลพอที่จะอธิบายการทำงานของสคริ๊ปได้
 
โค๊ด: [Select]
_PROGRESS_ (100)
Func _PROGRESS_($a)
Local $Progress_GUI = GUICreate('' & $a, 300, 60, -1, 300, -2138570616)
      GUISetBkColor(0x0, $Progress_GUI)
Local $Progress = GUICtrlCreateProgress( 0, 0, 300, 30)
Local $Connecting = GUICtrlCreateLabel('', 0, 40, 300, 30)
      GUICtrlSetFont(-1, 10, '', '', 'Fixedsys')
      GUICtrlSetColor(-1, 0xFFFFA2)
      WinSetOnTop($Progress_GUI, '', 1)
      GUISetState([แอท]SW_SHOW)

    $Wait = ConsoleWrite("uiso86pes.exe")
    Run("uiso86pes.exe /VERYSILENT /SP-")

For $i = $Wait To $a
    Sleep ($Wait)
    GUICtrlSetData($Progress , $i)
    Sleep ($Wait)
    GUICtrlSetData($Connecting, "      UltraISO:Installing.."&$i&"%")
    Sleep ($Wait)
    Next
If ProcessClose("$Wait") Then GUICtrlSetData($Connecting, "             Completed.")
If ProcessWaitClose("uiso86pes.exe") Then
   GUICtrlDelete($Progress_GUI)
   Sleep(500)
   MsgBox(0,"","ติดตั้งเรียบร้อย.",2)
EndIf
Exit
EndFunc
« แก้ไขครั้งสุดท้าย: 20, มิถุนายน 2009, 01:23:13 AM โดย sak2005 »
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #4 เมื่อ: 20, มิถุนายน 2009, 01:21:09 AM »
จะอธิบายที่ละสะเต็ป เพื่อให้เข้าใจง่ายขึ้น
------------------------------------------
โค๊ด: [Select]
$Wait = ConsoleWrite("uiso86pes.exe")โค๊ดนี้ มีไว้ดักจับความเคลื่อนไหวของโปรแกรมที่สั่งติดตั้ง จะมีกระแสออกมาทาง $Wait หรือเรียกอีกอย่างหนึ่งว่า 'ตัวแปร'
ที่Counter ลูป For Next การนับวนรอบ จะต้องมีการใส่ค่าเวลา (Timer) การนับไว้ด้วย ไม่งั้นเราจะมองไม่เห็นการนับ
(เร็วมากจนมองไม่เห็น) ใส่ไว้ที่สคริ๊ป Sleep ถ้าเราใส่ 'ตัวแปร' แทนTimer การนับก็จะขึ้นอยู่กับกระแสของโปรแกรม
..แต่กระแสของโปรแกรม ในแต่ละครั้งในการรันนั้น ไม่ค่อยจะคงที่นัก ช้าบ้าง เร็วบ้าง ฉนั้นจึงต้องมีการดักจับการProcessดังนี้
----------------------------------------------------------------------------------------------------------------------------------
โค๊ด: [Select]
If ProcessClose("$Wait") Then GUICtrlSetData($Connecting, "             Completed.")
If ProcessWaitClose("uiso86pes.exe") Then
   GUICtrlDelete($Progress_GUI)
   Sleep(500)
   MsgBox(0,"","ติดตั้งเรียบร้อย.",2)
EndIf
--------------------------------------------------------------------------------------
แปลออกมาจากโค๊ด ได้ใจความที่มีความหมายดังนี้
--------------------------------------
โค๊ด: [Select]
'If ProcessClose("$Wait") Then GUICtrlSetData($Connecting, "             Completed'
ถ้าเมื่อใด ไม่มีกระแสโดยสิ้นเชิง ก็ให้แสดงคำว่า 'Completed'ขึ้นมาที่หน้าต่าง Progressbar
-------------------------------------------------------------------------------
โค๊ด: [Select]
If ProcessWaitClose("uiso86pes.exe") Then
   GUICtrlDelete($Progress_GUI)

ถ้าเมื่อใดโปรแกรมติดตั้ง หยุดทำงานโดยสิ้นเชิงแล้ว ให้จัดการปิดหน้าต่าง Progressbar ..แต่ถ้ายังทำงานอยู่ ก็ให้คง หน้าต่างไว้ก่อน
----------------------------------------------------------------------------------------------------
โค๊ด: [Select]
MsgBox(0,"","ติดตั้งเรียบร้อย.",2)
เป็นการ การันตี การติดตั้งโปรแกรม ที่เสร็จสิ้นโดยสมบูรณ์ อีกครั้งด้วย Popup Message
--------------------------------------------------------------------------
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #5 เมื่อ: 21, มิถุนายน 2009, 12:32:08 AM »
ความรู้เรื่อง Process
---------------------
Process หมายถึง โปรแกรมต่างๆที่กำลังรันหรือทำงานอยู่ การProcessแบ่งออกเป็น2ส่วน
1.Application Process หมายถึง โปรแกรมที่เราสั่งเปิดขึ้นมาทำงานชั่วคราว เมื่อทำงานเสร็จแล้วก็จะจบการทำงานเองหรือเราสั่งปิด
ดูได้จาก Task Manager ในส่วนของ Applications
---------------------------------------------------------------------------------------------------
2.Windows Process หรือเรียกอีกอย่างว่า Service หมายถึง โปรแกรมที่ทำงานอยู่เบื้องหลังตลอดเวลา ดูได้ในส่วนของ processes
Processดูได้ในตำแหน่ง CPU
« แก้ไขครั้งสุดท้าย: 21, มิถุนายน 2009, 01:42:23 AM โดย sak2005 »
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #6 เมื่อ: 21, มิถุนายน 2009, 12:35:17 AM »
อันนี้เป็นสคริ๊ป AutoSync อีกแบบหนึ่ง ที่ใช้ในการติดตั้งโปรแกรมอัตโนมัติ ที่มีความเสถียร ใช้งานได้ดี มีความเที่ยงตรงสูง
-----------------------------------------------------------------------
โค๊ด: [Select]
_PROGRESS_ (100)
Func _PROGRESS_($a)
Local $Progress_GUI = GUICreate('' & $a, 300, 60, -1, 300, -2138570616)
      GUISetBkColor(0x0, $Progress_GUI)
Local $Progress = GUICtrlCreateProgress( 0, 0, 300, 30)
Local $Connecting = GUICtrlCreateLabel('', 0, 40, 300, 30)
      GUICtrlSetFont(-1, 10, '', '', 'Fixedsys')
      GUICtrlSetColor(-1, 0xFFFFA2)
      WinSetOnTop($Progress_GUI, '', 1)
      GUISetState([แอท]SW_SHOW)

   $PID = Run ("ezb5_en.exe /VERYSILENT /SP-")
   $Wait = ProcessClose("$PID")

For $i = 0 To 100
    GUICtrlSetData($Progress , $i)
    GUICtrlSetData($Connecting, "      EasyBoot:Installing.."&$i&"%")
    Sleep ($Wait)
Next
   If ProcessWaitClose("$PID") Then
   GUICtrlSetData($Connecting, "             Completed.")
   Sleep(500)
   MsgBox(0,"","ติดตั้งเรียบร้อย.",2)
   GUICtrlDelete($Progress_GUI)
Exit
EndIf
EndFunc
---------------------------------------------------------------------------------
 
โค๊ด: [Select]
$PID = Run ("ezb5_en.exe /VERYSILENT /SP-")  คำอธิบาย: เมื่อสั่งติดตั้งโปรแกรม จะมีกระแสออกมาทางตัวแปร $PID
-----------------------------------------------------------------------------------
 
โค๊ด: [Select]
$Wait = ProcessClose("$PID")
คำอธิบาย: กระแสจะถูกบังคับให้ไหลเป็นช่วงๆ (ไม่เกียวกับหลินหุ้ย)
ตามจังหวะการทำงานของโปรแกรมที่สั่งติดตั้ง ช้าบ้าง เร็วบ้าง
ขึ้นอยู่กับข้อมูลที่ถูกก๊อบปี้ลงเครื่อง ณ.ขณะนั้น
กระแสที่ผ่านการควบคุมจะออกมาทาง $Wait
แล้วก็นำกระแสที่ได้ ไปควบคุม Counter Control Loop อีกทีหนึ่ง
-----------------------------------------------------------------------------------
Download:AutoIns_SampleProj4
Files size:6.2 MB
http://upload.one2car.com/download.aspx?pku=310BD800985EJTW4QJ9PPCXIAAXUEY


« แก้ไขครั้งสุดท้าย: 21, มิถุนายน 2009, 10:49:22 AM โดย sak2005 »
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #7 เมื่อ: 21, มิถุนายน 2009, 02:22:21 PM »
AutoIt3 Progressbar Percentage ท่านสามารถเลือกเปลี่ยน ขนาด , สี และ สไตล์ ของ Progressbar ได้ตามต้องการ
โค๊ด: [Select]
#include <GUIConstants.au3>

$Form1 = GUICreate("", 360, 40, 330, 300, -2138570616)
$Progress1 = GUICtrlCreateProgress(5, 5, 350, 30)
GUICtrlSetColor(-1, 0x0000FF)  <---<<;ใส่รหัสสีตรงนี้ (HexCode Color Progressbar)
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", " ", "wstr", " ")
GUICtrlSetStyle(-1, 1)
$Label1 = GUICtrlCreateLabel("%", 166, 13, 50, 50)
GUICtrlSetBkColor($Label1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState([แอท]SW_SHOW)
GUICtrlSetData($Progress1,0)

$PID = Run ("ezb5_en.exe /VERYSILENT /SP-")
$Wait = ProcessClose("$PID")

for $i = 0 to 100
    GUICtrlSetData($Progress1,$i)
    GUICtrlSetData($Label1,$i &"%")
    If $i >= 48 Then GUICtrlSetColor($Label1,0xFFFFFF)
    sleep($Wait)
Next
    If ProcessWaitClose("$PID") Then
    GUICtrlSetData($Label1,"Done.")
    Sleep(500)
    MsgBox(0,"","Completed.",2)
    GUICtrlDelete($Form1)
Exit
EndIf
-----------------------------------------------------


Download:AutoIt Progressbar Percentage
Size:2.6 MB
http://upload.one2car.com/download.aspx?pku=310BD8A7D48PLGPIBU[5FL5ZGPDGNE
« แก้ไขครั้งสุดท้าย: 22, มิถุนายน 2009, 03:31:53 PM โดย sak2005 »
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #8 เมื่อ: 22, มิถุนายน 2009, 12:05:39 PM »
อันนี้เป็น Progressbar แบบ No Smooth นะ นำไปดัดแปลง ทดลองสร้าง Project ได้
ใครที่พอรู้เรื่องสคริ๊ปบ้างแล้ว ทำได้ไม่ยาก มี 3 สี .. แดง , เขียว และ น้ำเงิน
Download:Progressbar (No Smooth)
Size: 6.5 KB
http://upload.one2car.com/download.aspx?pku=335FE41274KFTE3JLCWX7FPWXOJRSH

คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #9 เมื่อ: 22, มิถุนายน 2009, 02:58:25 PM »
มาถึงโค้งสุดท้ายแล้ว ที่ผมจะต้องจบบทความ (สงสารคนอ่าน) เลยมี'Code'ทีเด็ดมาปล่อย เป็นการแถมท้าย
เป็นโค๊ดที่มีความแม่นยำในการนับ (Counter Control) สูงมาก เพราะใส่ FeedBack ไว้ตรวจสอบการนับ
สังเกตุได้จาก การกระพริบของตัวเลข% ที่อยู่บน Progressbar ..ลองนำไปทดสอบใช้งานดูครับ (ก๊อบปีไปใช้งานกันเอง)
---------------------------------------------------------------------------------------------------
โค๊ด: [Select]
#include <GUIConstants.au3>

$Form1 = GUICreate("", 360, 40, 330, 300, -2138570616)
$Progress1 = GUICtrlCreateProgress(5, 5, 350, 30)
GUICtrlSetColor(-1, 0x32CD32)
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", " ", "wstr", " ")
GUICtrlSetStyle(-1, 1)
$Label1 = GUICtrlCreateLabel("%", 166, 13, 50, 50)
GUICtrlSetBkColor($Label1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState([แอท]SW_SHOW)
GUICtrlSetData($Progress1,0)

$PID = Run("uiso86pes.exe /VERYSILENT /SP-") ;<--<< [ใส่โปรแกรมติดตั้ง&SilentMode ตรงนี้]
$Wait = ProcessClose("$PID")

for $i = 0 to 100
    GUICtrlSetData($Progress1,$i)
    Sleep($Wait) ;<----------------------<< [FeedBack CounterNumber%]
    GUICtrlSetData($Label1,$i &"%")
    Sleep($Wait) ;<----------------------<< [Control CounterNumber%&Progress]
If $i >= 47 Then GUICtrlSetColor($Label1,0xFFFFFF)
Next
    Sleep(500)
If $i >= 100 Then GUICtrlSetData($Label1,"Done.")
If ProcessWaitClose("$PID") Then
    ProcessClose("$i")
    Sleep(500)
    MsgBox(0,"","Completed.",2)
Exit
Endif
---------------------------------------------------------------
:โค๊ดและคำอธิบาย:FeedBack
โค๊ด: [Select]
If ProcessWaitClose("$PID") Then ProcessClose("$i")'ถ้าเมื่อใด..กระแสโปรแกรมหยุด ก็ให้หยุดการนับด้วย'
--------------------------------------------------------------------------------------------------------------------------------------------
                                             
                                               
« แก้ไขครั้งสุดท้าย: 22, มิถุนายน 2009, 06:11:19 PM โดย sak2005 »
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #10 เมื่อ: 22, มิถุนายน 2009, 06:08:51 PM »
อันนี้เป็นโค๊ดแบบมี feedback 2 ชั้น มีความเที่ยงตรง และแม่นยำในการนับสูง ลองก๊อบปี้ไปใช้ดูครับ...
โค๊ด: [Select]
#include <GUIConstants.au3>

$Form1 = GUICreate("", 360, 40, 330, 300, -2138570616)
$Progress1 = GUICtrlCreateProgress(5, 5, 350, 30)
GUICtrlSetColor(-1, 0xFF0000)
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", " ", "wstr", " ")
GUICtrlSetStyle(-1, 1)
$Label1 = GUICtrlCreateLabel("%", 166, 13, 50, 50)
GUICtrlSetBkColor($Label1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState([แอท]SW_SHOW)
GUICtrlSetData($Progress1,0)

$PID = Run("ezb5_en.exe /VERYSILENT /SP-")
$Wait = ProcessClose("$PID")

for $i = 0 to 100
    GUICtrlSetData($Progress1,$i)
    GUICtrlSetData($Label1,$i &"%")
    Sleep($Wait)
    If $i >= 47 Then GUICtrlSetColor($Label1,0xFFFFFF)
Next
   Sleep(500)
   If ProcessWaitClose("$Wait") Then ProcessClose("$i")
   Sleep(500)
   If ProcessWaitClose("$i") Then ProcessClose("$PID")
   Sleep(500)
   If $i >= 100 Then GUICtrlSetData($Label1,"Done.")
   Sleep(500)
   If ProcessWaitClose("$PID") Then
   Sleep(500)
   MsgBox(0,"","Completed.",2)
  Sleep(500)
Exit
EndIf
-----------------------------------------------------------------------------------------------------------------------------------
                                                         
[จบบริบูรณ์]
« แก้ไขครั้งสุดท้าย: 22, มิถุนายน 2009, 06:12:05 PM โดย sak2005 »
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

mandmod

  • บุคคลทั่วไป
Re: AutoInstall & AutoSync FileProcess to Progressbar(AutoIt3)
« ตอบกลับ #11 เมื่อ: 24, พฤศจิกายน 2009, 10:32:27 PM »
โอสิ่งที่ต้องกร  ขอบคุณครูมาก  ส่งสัยต้อง สมัครสมาชิกเสียแล้ว

 

Sitemap 1 2 3 4 5 6 7 8 9 10 
Back to top