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

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

ผู้เขียน หัวข้อ: รวมผลงานบทความ+โค๊ดโปรแกรมเพื่อการศึกษาของ sak2005  (อ่าน 18997 ครั้ง)

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

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
ท่านใดที่สนใจศึกษาหาความรู้เกี่ยว Programming เบื้องต้น เพื่อปูพื้นฐานการเป็น Programmer ในอนาคต เข้ามาหาความรู้กับภาษาต่างๆได้ที่นี่

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


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

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
ความรู้เกี่ยวกับการเขียนไฟล์INI(*.ini)และการประยุกต์ใช้งาน by:AutoIt v3

สาเหตุที่ผมเลือก AutoIt v3(*.au3) ในการให้การศึกษา ก็เพราะว่าใช้งานค่อนข้างง่าย

ประกอบกับสามารถนำไปประยุกต์เขียนเป็น Visual Basic Script(AutoItX3*.vbs)ได้

ถ้าใครเข้าไปไฟล์ในโฟลเดอร์ Windows จะเห็นได้ว่่า มีไฟล์สกุล*.ini อยู่เต็มไปหมด

ก็เพราะว่าการใช้งานไฟล์ ini เพื่อบันทึกค่าการทำงานของโปรแกรมนั้นๆไว้ให้คงที่ (Memory Write) ทำได้ง่ายกว่าวิธีอื่นๆ

การเขียนไฟล์ ini ขึ้นมาใช้งานนั้น มักจะออกแบบเขียนคำสั่งขึ้นมาพร้อมๆกับการสร้างโปรแกรมโปรเจ็กต์

แต่ถึงกระนั้นเราก็ยังสามารถเขียนไฟล์ ini เพื่อควบคุมโปรแกรมหลังคอมไพล์ได้

วิธีการเขียนไฟล์ ini ไม่มีสูตรสำเร็จ ต้องใช้ไอเดียของท่านเอง ในออกแบบเขียนและประยุกต์ใช้งาน

« แก้ไขครั้งสุดท้าย: 23, พฤษภาคม 2011, 12:03:35 PM โดย sak2005 »
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
รูำปแบบคำสั่งต่างๆที่ใช้ในการจัดการไฟล์ ini

sinnex:

AutoIt v3 (*.au3) Programming
รูปแบบคำสั่ง:
โค๊ด: [Select]
IniDelete ( "filename", "section" [, "key"] )
โค๊ด: [Select]
IniRead ( "filename", "section", "key", "default" )
โค๊ด: [Select]
IniReadSection ( "filename", "section" )
โค๊ด: [Select]
IniReadSectionNames ( "filename" )
โค๊ด: [Select]
IniRenameSection ( "filename", "section", "new section" [, flag] )
โค๊ด: [Select]
IniWrite ( "filename", "section", "key", "value" )
โค๊ด: [Select]
IniWriteSection ( "filename", "section", "data" [, index ] )
อธิบาย:คำสั่งที่เป็นพารามิเตอร์

filename หมายถึง ชื่อของไฟล์ ini ที่สร้าง เช่น. settings.ini หรือชื่ออื่นๆ

[แอท]DesktopDir&"\settings.ini" หมายถึง ไฟล์ ini ถูกกำหนดเก็บไว้ที่เดสก์ทอป

section หมายถึง การกำหนดหัวข้อหลักให้ key และเมื่อมี key แล้วจึงจะกำหนด value ได้ 

key หมายถึง มักจะใช้กำหนดให้เป็นตัวแปรของ value อีกทีหนึ่ง (Operator Variable) เช่น. Red = 0xFF0000 เป็นต้น

โดยมีเครื่องหมายเท่ากับ =  ..ใส่คั่นไว้ระหว่าง key กับ value

ใน section หนึ่งๆ เราจะกำหนดให้มีกี่คีย์ก็ได้ ตามความต้องการ

และในทำนองเดียวกัน เราสามารถกำหนดให้มีหลายๆ section ได้ในไฟล์ ini ที่สร้าง.
 
เพื่อที่จะสามารถ ขยายการควบคุมไปได้หลายๆตำแหน่ง ตามต้องการ

value หมายถึง มักจะใช้เป็นส่วนที่แสดงผลของข้อมูลต่างๆออกมา เช่น.

Red = 0xFF0000 ..ถ้า Red ซึ่งเป็นส่วนของคีย์ ถูกนำออกไปใช้งาน เป็น ฺBackground color

ก็จะได้สีพื้นหลัง เป็นสีแดงออกมา

ยังมีวิธีเขียน section key ในรูปแบบอื่นๆอีกมากมายหลายรูปแบบ ขึ้นอยู่กับผู้เขียน จะต้องออกแบบเขียนคำสั่งเอง.

เพราะแต่ละโปรแกรม ..คำสั่งในไฟล์ ini ย่อมต้องเขียนคำสั่งที่แตกต่างกันออกไป ตามจุดประสงค์ของโปรแกรมนั้นๆ.
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
ตัวอย่างโค๊ดโปรแกรม Net indicator :: Programming by:AutoIt v3 (*.au3)
โค๊ด: [Select]
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>

Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1)

Global $guititle = 'Net indicator', $url = '[url=http://www.google.com]www.google.com[/url]'
Global $sINI = [แอท]DesktopDir & '\Net indicator\settings.ini'
If Not FileExists($sINI) Then _Create_Setting_INI()

$hForm = GUICreate($guititle, 325, 17, IniRead($sINI, 'GUI_POS', "Left", -1), IniRead($sINI, 'GUI_POS', "Top", -1), _
BitOR($WS_MINIMIZEBOX,$WS_CAPTION,$WS_POPUP,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
GUISetBkColor(0x575C64)
WinSetOnTop($guititle, "", 1)
$Progress = GUICtrlCreateProgress(30, 1, 254, 17)
GUICtrlCreateLabel("Send:", 0, 2, 30, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
$Label = GUICtrlCreateLabel(":0.ms", 286, 2, 50, 50)
GUICtrlSetColor(-1, 0xFFFFFF)

GUISetState([แอท]SW_SHOW)

Local $exititem = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "_Exit")
TraySetIcon([แอท]WindowsDir&"\Network Diagnostic\xpnetdiag.exe", -1)
TraySetState()

While 1
If [แอท]IPAddress1 <> "127.0.0.1" Then
        $curr = Ping($url, 4000)
    WinSetTitle($guititle, "", $guititle&" [Online]"&" IP: "&[แอท]IPAddress1)
GUICtrlSetData($Progress, $curr/100*10)
GUICtrlSetData($Label, ": "&GUICtrlRead($Progress)*10&".ms")
Sleep(1)
Else
WinSetTitle($guititle, "", $guititle&" [Offline]"&" IP: "&[แอท]IPAddress1)
GUICtrlSetData($Progress, 0)
Sleep(1)
EndIf
Sleep(100)
WEnd

Func _Create_Setting_INI()
    If Not FileExists([แอท]DesktopDir & '\Net indicator') Then DirCreate([แอท]DesktopDir & '\Net indicator')
IniWriteSection($sINI, 'GUI_POS', "Left=-1" & [แอท]LF & "Top=-1")
EndFunc

Func _Exit()
    Local $Position = WinGetPos($guititle)
IniWriteSection($sINI, 'GUI_POS', "Left=" & $Position[0] & [แอท]LF & "Top=" & $Position[1])
    Exit
EndFunc

อธิบาย:
ขั้นแรกต้องตรวจสอบว่า มีการสร้างไฟล์ ini ที่เกี่ยวกับโปรแกรมนั้นๆขึ้นมาแล้วหรือยัง ถ้ายัง ..โปรแกรมก็จะทำการสร้างให้
ส่วนที่ว่าจะเก็บไฟล์ ini ที่สร้างนั้น ไปไว้ที่ที่ปลอดภัย ที่ไหน? ผู้เขียนโปรแกรมจะต้องเป็นกำหนดสถานที่เก็บเอง
ดูจากคำสั่งจะเห็นได้ว่า.. เมื่อมีการเขียนและใช้งานไฟล์ ini เกิดขึ้นครั้งแรก จะมีการกำหนดวาวล์ไว้เบื้องต้นก่อน (Defult)
โดยให้โปรแกรมปรากฏ..ณ.ที่กึ่งกลางจอ (screen center) Left-Top Position คำสั่งที่ใช้คือ -1
หรือจะระบุเป็น Position อื่นๆก็ได้ตามชอบ
 
โค๊ด: [Select]
If Not FileExists($sINI) Then _Create_Setting_INI()
Func _Create_Setting_INI()
    If Not FileExists([แอท]DesktopDir & '\Net indicator') Then DirCreate([แอท]DesktopDir & '\Net indicator')
IniWriteSection($sINI, 'GUI_POS', "Left=-1" & [แอท]LF & "Top=-1")
EndFunc
-----------------------------------------------------------------------------------------------
เมื่อมีการเขียนไฟล์ ini ขึ้นมาใช้งานแล้ว ก็ต้องมีการอ่านไฟล์ ini เพื่อที่จะได้นำค่าที่ได้จากการอ่าน มากำหนดให้เกิดการเปลี่ยนต่อโปรแกรม
ดูจากคำสั่งจะเห็นได้ว่า.. คำสั่ง IniRead() ได้ถูกกำหนดไว้ในตำแหน่งที่อยากให้เกิดการเปลี่ยนแปลงแล้ว

โค๊ด: [Select]
$hForm = GUICreate($guititle, 325, 17, IniRead($sINI, 'GUI_POS', "Left", -1), IniRead($sINI, 'GUI_POS', "Top", -1)------------------------------------------------------------------------------------------------
สมมุติว่า.. เมื่อมีการจับโปรแกรมย้ายไปอยู่่ตำแหน่งอื่น Position ของโปรแกรมก็จะถูกเปลี่ยนแปลงไป
เมื่อมีการเลิกใช้งานโปรแกรม เวลาปิดโปรแกรม ก็จะต้องทำการบันทึกค่า Position ของโปรแกรมไว้
ด้วยการอ่านค่า Position ของโปรแกรมด้วยคำสั่ง WinGetPos() แล้วนำค่าที่ได้จากการอ่านมาใช้งาน
ด้วยการเขียนเป็นคำสั่งบันทึกลงไปในไฟล์ .ini ..เพราะทุกครั้งที่เราเปิดโปรแกรมขึ้นมา ไฟล์ ini จะถูกอ่านทุกครั้ง.

โค๊ด: [Select]
Func _Exit()
    Local $Position = WinGetPos($guititle)
IniWriteSection($sINI, 'GUI_POS', "Left=" & $Position[0] & [แอท]LF & "Top=" & $Position[1])
    Exit
EndFunc
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
ความรู้เพิ่มเติมเกี่ยวกับคำที่ใช้เขียนเป็น Section

จากการค้นคว้าทดลองการเขียนคำสั่ง ini ปรากฏว่า ถ้าไม่ระบุคำว่า Section ลงไปใน []

ถ้าไปเปลี่ยนเป็นชื่ออื่น เช่น [Config] ..ถ้านำไปใช้กับบางคำสั่งจะเกิด Error! หรือเกิดข้อผิดพลาดอื่นๆ

ฉนั้นควรเขียนให้ถูกต้อง ตัวอักษรที่ใช้เขียนจะเป็นพิมพ์เล็กหรือใหญ่ก็ได้ ถ้ามีหลายเซ็คชั่น

ท่านสามารถระบุหมายเลขต่อท้ายได้ เช่น. Section1, Section2, Section3 เป็นต้น
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
อันนี้เป็นโค๊ดโปรแกรมตัวอย่างการเขียน Memo Write รวมๆหลายๆคำสั่ง

ออกแบบไว้ให้ทุกท่านได้นำไปใช้ศึกษาแนวการเขียนการสร้าง Project

โค๊ด: [Select]
;======== INI Memory Section Sample ===========
;Create and design by: sak2005
;Copyright: May 2011
;============ end discription ===============

#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <Misc.au3>

;====== start operate variable ============>>
$GuiTitle = 'Color Memory Sample'
Global $iReturnType = 2, $iRefType = 2
$iColorRef_R = 0xFF0000
$iColorRef_G = 0x00FF00
$iColorRef_B = 0x0000FF
$filename = [แอท]DesktopDir&'\Settings_Color.ini'
$section1 = 'section1'
$section2 = 'section2'
$section3 = 'section3'
$section4 = 'section4'
$section5 = 'section5'
$data1 = 'COLOR1='&'0x'&Hex($iColorRef_R, 6)
$data2 = 'COLOR2='&'0x'&Hex($iColorRef_G, 6)
$data3 = 'COLOR3='&'0x'&Hex($iColorRef_B, 6)
$data4 = 'PostX='
$data5 = 'PostY='
;<<======= end operate variable =============

;========== start first write section ============>>
If Not FileExists($filename) Then
IniWriteSection($filename, $section1, $data1, 0)
IniWriteSection($filename, $section2, $data2, 1)
IniWriteSection($filename, $section3, $data3, 2)
IniWriteSection($filename, $section4, $data4&-1, 3)
IniWriteSection($filename, $section5, $data5&-1, 4)
EndIf
;<<========== end write section =====================

;================================= start GUI create programming script sample ==========================================;
Local $hWndOwnder = GUICreate($GuiTitle, 300, 50, IniRead($filename, $section4, "PostX", -1), _ ;read state GUI position.
                                                  IniRead($filename, $section5, "PostY", -1))
Local $Grap_red = GUICtrlCreateGraphic(0, 0, 100, 50)
$readcol_red = IniReadSection($filename, "section1") ;read state color section1
GUICtrlSetBkColor(-1, $readcol_red[0][1]&$readcol_red[1][1])
GUICtrlSetCursor(-1, 0)
Local $Grap_green = GUICtrlCreateGraphic(100, 0, 100, 50)
$readcol_green = IniReadSection($filename, "section2") ;read state color section2
GUICtrlSetBkColor(-1, $readcol_green[0][1]&$readcol_green[1][1])
GUICtrlSetCursor(-1, 0)
Local $Grap_blue = GUICtrlCreateGraphic(200, 0, 100, 50)
$readcol_blue = IniReadSection($filename, "section3") ;read state color section3
GUICtrlSetBkColor(-1, $readcol_blue[0][1]&$readcol_blue[1][1])
GUICtrlSetCursor(-1, 0)
GUISetState([แอท]SW_SHOW)

While 1
Local $nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
                        $btn = MsgBox(36, $GuiTitle, "ท่านต้องการปิดโปรแกรมใช่หรือไม่?", 0, $hWndOwnder)
If $btn = 7 Then ContinueLoop
$Wpos = WinGetPos($GuiTitle)
IniWriteSection($filename, $section4, $data4&$Wpos[0]) ;mem GUI position.
IniWriteSection($filename, $section5, $data5&$Wpos[1])
GUIDelete($hWndOwnder)
Exit
        Case $Grap_red
  ToolTip("")
  $color = _ChooseColor($iReturnType, $iColorRef_R, $iRefType, $hWndOwnder)
  If $color = -1 Then ContinueLoop
  GUICtrlSetBkColor($Grap_red, $color)
   IniDelete($filename, "section1", "COLOR1")
IniWriteSection($filename, "section1", "COLOR1="&$color, 1) ;mem color section1
Case $Grap_green
            ToolTip("")
$color = _ChooseColor($iReturnType, $iColorRef_G, $iRefType, $hWndOwnder)
   If $color = -1 Then ContinueLoop
   GUICtrlSetBkColor($Grap_green, $color)
IniDelete($filename, "section2", "COLOR2")
IniWriteSection($filename, "section2", "COLOR2="&$color, 2) ;mem color section2
Case $Grap_blue
ToolTip("")
$color = _ChooseColor($iReturnType, $iColorRef_B, $iRefType, $hWndOwnder)
       If $color = -1 Then ContinueLoop
   GUICtrlSetBkColor($Grap_blue, $color)
IniDelete($filename, "section3", "COLOR3")
IniWriteSection($filename, "section3", "COLOR3="&$color, 3) ;mem color section3
EndSwitch
$pos = MouseGetPos()
$col = PixelGetColor($pos[0], $pos[1]) ;mouse and color postion pixel search.
    ToolTip('X = '&$pos[0]&[แอท]CRLF&'Y = '&$pos[1]&[แอท]CRLF&'C = '&'0x'&Hex($col, 6))
WEnd
;========================== end programming script sample ==============================;
« แก้ไขครั้งสุดท้าย: 24, พฤษภาคม 2011, 11:58:50 AM โดย sak2005 »
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
ถ้าไม่มีการค้นคว้าศึกษาเกี่ยวกับปัญหาที่เกิดขึ้นขณะออกแบบเขียนคำสั่ง

ปัญญาจะไม่เกิดและจะไม่รู้วิธีการแก้ไขปัญหาก็ไม่สามารถสร้างโปรเจ็กต์ให้สำเร็จลุล่วงไปได้

ดังตัวอย่างการแยกคำสั่งออกจาก Case GUI Message ออกมาเขียนเป็น Function ไว้ภายนอกนั้น

เพื่อทำให้การแก้ไขหรือตรวจสอบคำสั่งต่างๆทำได้ง่ายขึ้น

ถ้าชุดคำสั่งนั้น ต้องอาศัย Loop ในการทำงานซ้ำๆ ไม่ควรแยกออกมาจากการใช้งาน Case Message Loop

เพราะจะทำให้เกิดข้อผิดพลาดบางประการได้

ถ้าเป็นชุดคำสั่งที่ทำงานครั้งเดียวต่อการสั่งงาน1ครั้งของในแต่ละครั้ง สามารถเขียนแยกออกมาเป็น Function ต่า่งหากได้

Event Control ที่ใช้ก็สำคัญ ถ้าใช้ event option เราจะไม่สามารถใช้ event message loop ปกติได้

ฉนั้น.. การสร้าง project ในแต่ละคราว ก็ต้องเลือก event อย่างใดอย่างหนึ่งที่เหมาะสม.
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
หาค่าและแสดงผลสีด้วยกราฟิก

โค๊ด: [Select]
;=================== start win mouse color pos ========================>>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

HotKeySet("{ESC}", "Terminate")

$hWnd = GUICreate("Form", 111, 40, 192, 124, _
BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_POPUP,$WS_GROUP,$WS_CLIPSIBLINGS))
WinSetOnTop("Form", "", 1)
$hGraphic = GUICtrlCreateGraphic(0, 0, 108, 35)
$hLabel = GUICtrlCreateLabel("Label1", 27, 29, 60, 17)

GUISetState([แอท]SW_SHOW)

Do
$iX = _WinAPI_GetMousePosX()
$iY = _WinAPI_GetMousePosY()
$iC = PixelGetColor($iX, $iY, $hWnd)
GUICtrlSetBkColor($hGraphic, $iC)
GUICtrlSetData($hLabel, '0x'&Hex($iC, 6))
_WinAPI_MoveWindow($hWnd, $iX+15, $iY+15, 100, 50, True)
Sleep(100)
Until GUIGetMsg() = -3
GUIDelete($hWnd)

Func Terminate()
    Exit 0
EndFunc
;<<=================== end win mouse color pos ========================
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
ความรู้เกี่ยวกับการใช้งานคำสั่ง Win และคำสั่ง Control

เป็นคำสั่งใช้งานโดยครงกับ โปรแกรมที่สร้างขึ้น และโปรแกรมอื่นที่ไม่ได้สร้าง เป็นคำสั่งควบคุมให้โปรแกรมทำงานตามจุดประสงค์

คำสั่งต่างๆเหล่านี้ ถ้าไม่รู้เทคนิคลึกๆ เกี่ยวกับแนวทางการเขียนคำสั่ง เวลาเขียนออกมา มักจะมีปัญหาต่างๆที่ต้องให้แก้ไขอยู่เป็นประจำ

เดี๋ยวท่านจะได้รู้ว่า เขามีเทคนิคการเขียนคำสั่งดังกล่าวกันยังไง ไม่ให้มีปัญหา ไม่ให้เกิด Error!

ก่อนอื่นเรามาดูกันว่า คำสั่ง Win นั้นมีอะไรกันบ้าง

WinActivate  หมายถึง คำสั่งเจาะจงจับ(focus)ไปที่หน้าต่างโปรแกรมโดยเฉพาะ
WinActive  หมายถึง  จับไปที่หน้าต่างโปรแกรม
WinClose  หมายถึง  คำสั่งปิดโปรแกรม
WinExists  หมายถึง  โปรแกรมมีอยู่จริง
WinFlash  หมายถึง ทำเอฟเฟคบางอย่างที่โปรแกรม
WinGetCaretPos
WinGetClassList 
WinGetClientSize  หมายถึง  รับค่าที่เป็นขนาดสัดส่วนของโปรแกม
WinGetHandle  หมายถึง  รับค่ามาจากการสร้างการควบคุมหรือการแสดงของโปรแกรมด้วยตนเอง
WinGetPos  หมายถึง  รับค่าตำแหน่งที่ตั้งของโปรแกรมที่แสดงผลอยู่บนเดสก์ทอป
WinGetProcess  หมายถึง  รับค่าID Process โปรแกรมที่กำลังทำงานอยู่
WinGetState รับค่าที่เป็นปฏิกริยาตอบสนองจากโปรแกรม
WinGetText หมายถึง  รับค่าที่เป็นข้อความจากโปรแกรม
WinGetTitle  หมายถึง  รับค่าที่เป็นข้อความปรากฏอยู่บนไตเติลบาร์
WinKill  หมายถึง การปิดโปรแกรมด้วยวิธีพิเศษ
WinList   
WinMenuSelectItem
WinMinimizeAll  หมายถึง  เก็บหน้าต่างโปรแกรม
WinMinimizeAllUndo
WinMove  หมายถึง  เคลื่อนย้ายตำแหน่งที่ตั้งของโปรแกรม
WinSetOnTop  หมายถึง  ทำให้โปรแกรมที่กำลังใช้งาน อยู่เหนือโปรแกรมอื่น
WinSetState หมายถึง การสร้างปฏิกริยาตอบสนองต่อโปรแกรม
WinSetTitle  หมายถึง  เปลี่ยนข้อความบนไตเติลบาร์ของโปรแกรม
WinSetTrans  หมายถึง ทำให้หน้าต่างโปรแกรมโปร่งใส
WinWait  หมายถึง หน่วงเวลาคำสั่งถัดไปให้ทำงานช้ากว่าโปรแกรม
WinWaitActive
WinWaitClose  หมายถึง  หน่วงเวลาจนกว่าโปรแกรมปิด แล้วให้ทำคำสั่งถัดไป
WinWaitNotActive  
-----------------------------------------------------------------------------------
กลุ่มคำสั่ง:Control

ControlClick  หมายถึง การควบคุมการคลิ๊กของเม๊าท์
ControlCommand  หมายถึง คำสั่งควบคุม Object
ControlDisable  หมายถึง  ระงับการใช้งาน Object
ControlEnable  หมายถึง  เปิดใช้งาน Object
ControlFocus  หมายถึง  เจาะจงเล็งจับไปที่ Object
ControlGetFocus  หมายถึง  รับค่าจากการเล็งจับ
ControlGetHandle  หมายถึง  รับค่าการควบคุมที่สร้า้้งขึ้นเองจาก Object
ControlGetPos  หมายถึง  รับค่าตำแหน่งที่ตั้งจาก Object
ControlGetText  หมายถึง  รับค่าที่เป็นข้อความมาจาก Object
ControlHide  หมายถึง  ทำให้ Object มองไม่เห็น
ControlListView  หมายถึง ควบคุมการทำงาน ListView Object
ControlMove  หมายถึง  เคลื่อนย้ายตำแหน่งที่ตั้งของ Object
ControlSend  หมายถึง การส่งคำสั่งควบคุม
ControlSetText  หมายถึง  ส่งข้อความลงบน Object
ControlShow  หมายถึง  ควบคุมการแสดงผลของ Object
ControlTreeView  หมายถึง ควบคุมการทำงาน TreeView Object
StatusbarGetText  หมายถึง  รับข้อความมาจาก StatusBar
------------------------------------------------------------------------------------
คำสั่งwin-controlเป็นคำสั่งต้องอาศัยการจับหน้าต่างของโปรแกรมนั้นๆ(program process)

โดยอ้างชื่อหรือข้อความที่ปรากฏบนไตเติลบาร์(title)

หรือข้อความที่ปรากฏบนส่วนอื่นๆของหน้าต่างโปรแกรม(text)

หรือชื่อข้อความของสิ่งต่างๆ(object)ที่ใช้งานอยู่บนหน้าต่างโปรแกรม(form)

หรือ Class:Form , ControlID:(CID)Object

คำสั่งwin-controlเป็นคำสั่งต้องอาศัยการหน่วงเวลาการทำงานให้เหมาะสม

ให้สัมพันธ์กันระหว่างโปรแกรมและคำสั่งที่ใช้ควบคุม
----------------------------------------------------------------------------
คำนิยามความหมายของคำว่า 'Focus' (โฟกัส) ที่ใช้เขียนเป็นคำสั่งคืออะไร?

โฟกัสในที่นี้คือการเจาะจงเล็งจับไปที่เป้าหมายใดเป้าหมายหนึ่งโดยเฉพาะ (จากหลายๆเป้าหมาย)

จากนั้นก็จะเข้าไปควบคุมเป้าหมายนั้นให้ทำงานตามสั่ง
----------------------------------------------------------------------------
ProcessID (PID)คืออะร?

โปรเซสไอดี คือ รหัสหมายเลขที่ได้มาจากการทำงานของโปรแกรม(processing)

ในการทำงานของโปรแกรมแต่ละครั้ง รหัสหมายเลข จะเปลี่ยนไปทุกครั้ง

เพราะช่วงเวลาในการโปรเซสในแต่ละครั้งไม่เท่ากัน

ถ้ารันโปรแกรมแล้ว แต่เกิด Error! โปรแกรมไม่สามารถทำงานตามสั่งได้  ..รหัสหมายเลข หรือ ProcessID จะ= 0

เดี๋ยวเขียนโปรแกรมมาให้ทดสอบ ID process
-------------------------------------------------
โค๊ดสำหรับรันทดสอบ ID process

โค๊ด: [Select]
Local $program = 'Notepad.exe'
Dim $i
MsgBox(64, "", "Total 5 Processes", 3)
For $i = 1 To 5
Local $pid = Run($program)
If ProcessExists($pid) Then
    MsgBox(64, "Processing.." & $i, "ProcessID = " & $pid, 3)
ProcessClose($pid)
EndIf
Sleep(1000)
Next
MsgBox(64, "", "Finish.", 3)





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

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
ความรู้เรื่อง:คำสั่งที่ประกอบด้วย Get หมายถึงอะไร? และ Set หมายถึงอะไร? พร้อมตัวอย่างการเขียนคำสั่ง

Get หมายถึง เป็นการรับค่าการทำงานการแสดงผลอะไรก็แล้วแต่ มาจาก Form หรือ Object หรือส่วนอื่นๆที่เกี่ยวข้อง

จากนั้นจะนำค่าที่ได้รับมากำหนดทำให้เกิดการเปลี่ยนแปลงอื่นๆต่อไป

Set หมายถึง การส่งค่าการทำงานการแสดงผลนั้นๆไปทำให้เเกิดการเปลี่ยนแปลงต่อ Form หรือ Object หรือส่วนอื่นๆที่เกี่ยวข้อง
--------------------------------------------------------------------------------------------------
เรามาลองดูตัวอย่างโค๊ด Get และ Set ไปพร้อมๆกัน

3ตัวอย่างโค๊ดด้านล่าง รันแล้วให้ผลเหมือนกัน แต่รูปแบบการเขียนคำสั่งไม่เหมือนกัน

โค๊ด: [Select]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Local $hWnd = GUICreate("Form1", 154, 195, -1, -1)
Local $Input1 = GUICtrlCreateInput("", 17, 24, 121, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))
GUICtrlCreateLabel("ชื่อ", 72, 7, 17, 17)
Local $Input2 = GUICtrlCreateInput("", 16, 72, 121, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))
GUICtrlCreateLabel("สกุล", 64, 55, 23, 17)
Local $Input3 = GUICtrlCreateInput("", 16, 120, 121, 21)
GUICtrlCreateLabel("ชื่อ - สกุล", 48, 103, 45, 17)
Local $Button1 = GUICtrlCreateButton("OK", 40, 160, 75, 25, $WS_GROUP)
GUICtrlSetCursor(-1, 0)
GUISetState([แอท]SW_SHOW)

While 1
Local $nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
        Case $Button1
If GUICtrlRead($Input1) = '' Then
MsgBox(0, "", "กรุณากรอกชื่อลงในช่อง.", 0, $hWnd)
ElseIf GUICtrlRead($Input2) = '' Then
    MsgBox(0, "", "กรุณากรอกสกุลลงในช่อง.", 0, $hWnd)
Else
                Local $name = ControlGetText("Form1", "", "Edit1")
    Local $sername = ControlGetText("Form1", "", "Edit2")
    ControlSetText("Form1", "", "Edit3", $name&' '&$sername)
EndIf
EndSwitch
WEnd

โค๊ด: [Select]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Local $hWnd = GUICreate("Form1", 154, 195, -1, -1)
Local $Input1 = GUICtrlCreateInput("", 17, 24, 121, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))
GUICtrlCreateLabel("ชื่อ", 72, 7, 17, 17)
Local $Input2 = GUICtrlCreateInput("", 16, 72, 121, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))
GUICtrlCreateLabel("สกุล", 64, 55, 23, 17)
Local $Input3 = GUICtrlCreateInput("", 16, 120, 121, 21)
GUICtrlCreateLabel("ชื่อ - สกุล", 48, 103, 45, 17)
Local $Button1 = GUICtrlCreateButton("OK", 40, 160, 75, 25, $WS_GROUP)
GUICtrlSetCursor(-1, 0)
GUISetState([แอท]SW_SHOW)

While 1
Local $nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
        Case $Button1
If GUICtrlRead($Input1) = '' Then
MsgBox(0, "", "กรุณากรอกชื่อลงในช่อง.", 0, $hWnd)
ElseIf GUICtrlRead($Input2) = '' Then
    MsgBox(0, "", "กรุณากรอกสกุลลงในช่อง.", 0, $hWnd)
Else
                Local $yourname = ControlGetText("Form1", "", "Edit1")&' '&ControlGetText("Form1", "", "Edit2")
    ControlSetText("Form1", "", "Edit3", $yourname)
EndIf
EndSwitch
WEnd

โค๊ด: [Select]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Local $hWnd = GUICreate("Form1", 154, 195, -1, -1)
Local $Input1 = GUICtrlCreateInput("", 17, 24, 121, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))
GUICtrlCreateLabel("ชื่อ", 72, 7, 17, 17)
Local $Input2 = GUICtrlCreateInput("", 16, 72, 121, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL))
GUICtrlCreateLabel("สกุล", 64, 55, 23, 17)
Local $Input3 = GUICtrlCreateInput("", 16, 120, 121, 21)
GUICtrlCreateLabel("ชื่อ - สกุล", 48, 103, 45, 17)
Local $Button1 = GUICtrlCreateButton("OK", 40, 160, 75, 25, $WS_GROUP)
GUICtrlSetCursor(-1, 0)
GUISetState([แอท]SW_SHOW)

While 1
Local $nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
        Case $Button1
If GUICtrlRead($Input1) = '' Then
MsgBox(0, "", "กรุณากรอกชื่อลงในช่อง.", 0, $hWnd)
ElseIf GUICtrlRead($Input2) = '' Then
    MsgBox(0, "", "กรุณากรอกสกุลลงในช่อง.", 0, $hWnd)
Else
                ControlSetText("Form1", "", "Edit3", ControlGetText("Form1", "", "Edit1")&' '&ControlGetText("Form1", "", "Edit2"))
EndIf
EndSwitch
WEnd
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
ผมจะลงโค๊ดตัวอย่างและอธิบายให้เป็นบางคำสั่งที่ใช้งานบ่อยนะครับ ที่เหลือท่านต้องศึกษาทำความเข้าใจเพิ่มเติมเอง.
----------------------------------------------------------------------------------------------------------------------
โค๊ดตัวอย่างคำสั่ง: WinWaitActive หมายถึง ให้รอจนกว่า หน้าต่างโปรแกรมจะโผล่ขึ้นมาให้จับ(Active)

โดยการอ้างชื่อหรือข้อความที่ปรากฏบน Title bar หรือ Class: ของโปรแกรม จากนั้นก็ให้ไปทำงานที่คำสั่งถัดไป

เนื่องด้วยเหตุที่ว่า.. คำสั่งบางคำสั่งต้องให้ทำงานไปตามขั้นตอนตามลำดับ ทำงานพร้อมๆกันหลายๆคำสั่งในเวลาเดียวกันไม่ได้

ไม่งั้นจะมีข้อผิดพลาด!ตามมาภายหลัง ดังตัวอย่างโค๊ดที่ลงไว้ให้ เช่น. คำสั่งถัดไปไม่ยอมทำงานให้ เป็นต้น ..ทดลองรันดูแล้วจะรู้
-------------------------------------------------------------------------------------------------------------------------------------
โค๊ดตรวจสอบชื่อโปรแกรมที่เราสั่งรัน ..ท่านลองต้ดคำสั่ง:WinWaitActive ออก ..จะเกิดข้อผิดพลาด!ขึ้นมาทันที.

โค๊ด: [Select]
#include <Process.au3>

$sPID = Run("Notepad.exe")
If WinWaitActive("[Class:Notepad]")Then
    $iPID = WinGetProcess("[Class:Notepad]")
    $pName = _ProcessGetName($iPID)
If Not [แอท]error Then
  MsgBox(4096, "", "Process Name: "& $Pname)
       ProcessClose($sPID)
    Else
        If [แอท]error = 1 Then
Sleep(200)
       MsgBox(48, "Error!", "Process doesn't exist")
ElseIf [แอท]error = 2 Then
       Sleep(200)
MsgBox(48, "Error!", "Error getting process list")
ElseIf [แอท]error = 3 Then
Sleep(200)
MsgBox(48, "Error!", "No processes found")
EndIf
EndIf
EndIf

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

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
WinWaitNotActive หมายถึง ถ้าหน้าต่างโปรแกรมที่จับไว้นั้น(Active) หายไปหรือถูกปิดไปเมื่อใด ก็ให้ไปทำงานที่คำสั่งถัดไป

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

โค๊ด: [Select]
#include <Process.au3>

$sPID = Run("Notepad.exe")
If WinWaitActive("[Class:Notepad]")Then
    $iPID = WinGetProcess("[Class:Notepad]")
    $pName = _ProcessGetName($iPID)
If Not [แอท]error Then
  MsgBox(4096, "", "Process Name: "& $Pname)
        _Exit_Notepad()
    Else
        If [แอท]error = 1 Then
Sleep(200)
       MsgBox(48, "Error!", "Process doesn't exist")
ElseIf [แอท]error = 2 Then
       Sleep(200)
MsgBox(48, "Error!", "Error getting process list")
ElseIf [แอท]error = 3 Then
Sleep(200)
MsgBox(48, "Error!", "No processes found")
EndIf
EndIf
EndIf

Func _Exit_Notepad()
    ProcessClose($sPID)
If WinWaitNotActive("[Class:Notepad]")Then
MsgBox(4096, "", "Exit Notepad Successful.")
Else
MsgBox(0, "", "Notepad Processing..")
EndIf
EndFunc
-----------------------------------------------------------------------
อันนี้ท่านต้องรันโปรแกรม Notepad ขึ้นมาทดสอบเอง

โค๊ด: [Select]
#include <Process.au3>

While 1
   If Not ProcessExists("Notepad.exe")Then
        ToolTip("Open Notepad to Test.")
Else
        ExitLoop
    EndIf
Sleep(100)
WEnd

ToolTip("")

If WinWaitActive("[Class:Notepad]")Then
    $iPID = WinGetProcess("[Class:Notepad]")
    $pName = _ProcessGetName($iPID)
If Not [แอท]error Then
   MsgBox(4096, "", "Process Name: "& $Pname)
If WinClose("[Class:Notepad]")Then MsgBox(64, "", "Exit Notepad Successful.")
    Else
    If [แอท]error = 1 Then
Sleep(200)
        MsgBox(48, "Error!", "Process doesn't exist")
    ElseIf [แอท]error = 2 Then
        Sleep(200)
MsgBox(48, "Error!", "Error getting process list")
    ElseIf [แอท]error = 3 Then
Sleep(200)
MsgBox(48, "Error!", "No processes found")
    EndIf
EndIf
EndIf

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

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
มาดูตัวอย่างคำสั่ง Control ต่างๆกันบ้าง

ใช้คำสั่ง: ControlFocus บวกเลขอัตโนมัติ ..ตั้งโจทย์ให้ดังนี้ 1234567890+0987654321 = ?!?

ถ้าต้องการบวกลบคูณหารตามตัวเลขที่เรากำหนดให้ ท่านต้องออกแบบคำสั่งใหม่ โดยใช้คำสั่ง: ContinueLoop เืพื่อกระโดดข้ามตัวเลขที่ไม่ต้องการไป

โค๊ด: [Select]
Run("Calc.exe")
WinWait("[Class:Edit1]", "", 1)
ControlFocus("[Class:Edit1]", "", "Edit1")
For $i = 0 To 9
Send($i)
Sleep(1000)
Next
Send("{+}")
For $i = 9 To 0 Step -1
Send($i)
Sleep(1000)
Next
Sleep("1000")
Send("{ENTER}")
« แก้ไขครั้งสุดท้าย: 07, มิถุนายน 2011, 05:18:18 PM โดย sak2005 »
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
The Matrix by Notepad ..สร้าง effect บน Text editor ..รับรองว่าแปลก! ไม่มีใครทำได้เหมือน.

โค๊ด: [Select]
Run("Notepad")
AdlibRegister("_Timer", 1000)
ControlSetText("[Class:Notepad]", "", "Edit1", [แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]TAB&[แอท]TAB&"The Matrix by Neo")
Sleep(1000)
Func _Timer()
WinMove("[Class:Notepad]", "", 242, 138, 525, 318)
$i = 0
While $i < 1
$i +=1
ControlSetText("[Class:Notepad]", "", "Edit1", [แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]TAB&[แอท]TAB&"The Matrix by Neo")
Sleep(250)
ControlSetText("[Class:Notepad]", "", "Edit1", [แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]TAB&[แอท]TAB&"")
Sleep(250)
ControlSetText("[Class:Notepad]", "", "Edit1", [แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]TAB&[แอท]TAB&"The Matrix by Neo")
Sleep(250)
ControlSetText("[Class:Notepad]", "", "Edit1", [แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]TAB&[แอท]TAB&"")
Sleep(250)
ControlSetText("[Class:Notepad]", "", "Edit1", [แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]TAB&[แอท]TAB&"The Matrix by Neo")
Sleep(1000)
WEnd
WinWait("[Class:Notepad]")
ControlSetText("[Class:Notepad]", "", "Edit1", [แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]TAB&[แอท]TAB&"")
Sleep(1000)
While 1
ControlSend("[Class:Notepad]", "", "Edit1", [แอท]CRLF&[แอท]CRLF&[แอท]CRLF&[แอท]TAB&[แอท]TAB&"T")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "h")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "e ")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "M")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "a")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "t")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "r")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "i")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "x ")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "b")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "y ")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "N")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "e")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", "o")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", ".")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", ".")
Sleep(500)
ControlSend("[Class:Notepad]", "", "Edit1", ".")
Sleep(1000)
If Not ProcessExists("[Class:Notepad]")Then ExitLoop
WEnd
EndFunc
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

ออฟไลน์ sak2005

  • You Are Just Member
  • ******
  • กระทู้: 683
  • เห็นด้วย&ขอบคุณ: 79
  • เพศ: ชาย
  • The Matrix by Neo
PingPong on the desktop ..ปิงปองหลากสีวิ่งอยู่บนหน้าจอ

โค๊ด: [Select]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$title = 'PingPong'
$hForm = GUICreate($title, 73, 68, 0, 300, _
BitOR($WS_POPUP,$WS_CLIPSIBLINGS,$DS_MODALFRAME, _
$DS_SETFOREGROUND,$DS_CONTEXTHELP), BitOR($WS_EX_ACCEPTFILES, _
$WS_EX_APPWINDOW,$WS_EX_CONTEXTHELP,$WS_EX_TOOLWINDOW,$WS_EX_TOPMOST))
GUISetBkColor(0xFFFFFF)
GUISetState([แอท]SW_SHOW)
$width = 73
$height = 68
$posY = 300
Dim $i
Do
    For $i = 0 To [แอท]DesktopWidth-70 Step 10
    WinMove($title, "", $i, $posY, $width, $height)
GUISetBkColor(0xFF0000, $hForm)
    Sleep(10)
Next
For $i = [แอท]DesktopWidth-70 To 0 Step -10
WinMove($title, "", $i, $posY, $width, $height)
    GUISetBkColor(0x0000FF, $hForm)
    Sleep(10)
Next
For $i = 0 To [แอท]DesktopWidth-300 Step 10
    WinMove($title, "",$posY+150, $i, $width, $height)
GUISetBkColor(0x00FF00, $hForm)
    Sleep(10)
Next
For $i = [แอท]DesktopWidth-300 To 0 Step -10
WinMove($title, "", $posY+150, $i, $width, $height)
    GUISetBkColor(0xFFFF00, $hForm)
    Sleep(10)
Next

For $i = 0 To [แอท]DesktopWidth-70 Step 10
    WinMove($title, "", $i, $posY, $width, $height)
GUISetBkColor(0xFFFF00, $hForm)
    Sleep(10)
Next
For $i = [แอท]DesktopWidth-70 To 0 Step -10
WinMove($title, "", $i, $posY, $width, $height)
    GUISetBkColor(0xFF0000, $hForm)
    Sleep(10)
Next
For $i = 0 To [แอท]DesktopWidth-300 Step 10
    WinMove($title, "",$posY+150, $i, $width, $height)
GUISetBkColor(0x00FF00, $hForm)
    Sleep(10)
Next
For $i = [แอท]DesktopWidth-300 To 0 Step -10
WinMove($title, "", $posY+150, $i, $width, $height)
    GUISetBkColor(0x0000FF, $hForm)
    Sleep(10)
Next

For $i = 0 To [แอท]DesktopWidth-70 Step 10
    WinMove($title, "", $i, $posY, $width, $height)
GUISetBkColor(0x00FF0F, $hForm)
    Sleep(10)
Next
For $i = [แอท]DesktopWidth-70 To 0 Step -10
WinMove($title, "", $i, $posY, $width, $height)
    GUISetBkColor(0xFF00F0, $hForm)
    Sleep(10)
Next
For $i = 0 To [แอท]DesktopWidth-300 Step 10
    WinMove($title, "",$posY+150, $i, $width, $height)
GUISetBkColor(0x0F0F00, $hForm)
    Sleep(10)
Next
For $i = [แอท]DesktopWidth-300 To 0 Step -10
WinMove($title, "", $posY+150, $i, $width, $height)
    GUISetBkColor(0x0FF0FF, $hForm)
    Sleep(10)
Next
Until GUIGetMsg()= -3
คำคม: หาความชอบ ความสามารถ ในตนเองให้เจอ แล้วลงมีอทำ ก็จะประสบความสำเร็จ.

 

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