ฟอรั่มของบล็อก http://pssix.blogspot.com


[Code]เมื่อสีที่กำหนดหายไป กดคีย์ ที่กดหนด [ช่วยวิจารย์ทีครับ]

Share

kobtadam
PSsix Member Class II
PSsix Member Class II


จำนวนข้อความ : 41
ความนิยม : 6
เข้าร่วมเมื่อ : 28/12/2013

[Code]เมื่อสีที่กำหนดหายไป กดคีย์ ที่กดหนด [ช่วยวิจารย์ทีครับ]

ตั้งหัวข้อ by kobtadam on 02/01/14, 05:27 am

Code:
Global $GameHD

Func _PSsixLoadH($gtitle)
$GameHD = WinGetHandle($gtitle)
If @error Then
MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม")
Else
Return 1
EndIf
EndFunc


If _PSsixLoadH("GAMES") Then WinActivate($GameHD)



While 1
If PixelGetColor(201, 58) = 0x212031 Then    
Send("{F4}")
EndIf
Sleep(10)


If PixelGetColor(182, 65) = 0x314552 Then    
Send("{F3}")
EndIf
Sleep(10)

If PixelGetColor(182, 72) = 0x29384A Then
Send("{F2}")
EndIf
Sleep(10)

WEnd


เรื่องที่ผมไม่ค่อยแน่ใจมี ผมเพ่งเคยเห็นโปรแกรมนี้อะครับ
1.Sleep 1000 = 1 วินาทีใช้ไหมคับ
2.มีวิธีที่ทำให้กดคีย์รัว ไวกว่า นี้อีกได้ไหม ในกรณี ใช้ 3 คีย์แบบนี้ โปรแกรมจะ รันจาก บนลงล่าง ใช้ไหมคับ
เช่น สีที่กำหนด A หายไป กดคีย์ 1 หลังจากนั้น 1 วิ สีB หายไป กดคีย์2 หลังจากนั้น1 วิ
แต่ถ้า
----------------------------------------
If PixelGetColor(201, 58) = 0x212031 Then    
Send("{F4}")
EndIf
Sleep(10)
------------------------------------------
แบบนี้อันเดียวไวกว่าใช้ไหม ผมลองแว้วแบบนี้เหมือนไวกว่าอะคับ
*คำถามคือ ในสคริปเดียวกัน มีวิธีทำให้มันกดคีย์ไวกว่านี้ได้ไหม ถ้า 3 คีย์เหมือนมันช้าลง งะ คับ มัน A B C A B C วนแบบนี้

3.ทำไงถึงจะให้ โค๊ดตัวนี้ ทำงานในขณะ พับจอ อะคับ ไม่ใช้ ย่อไว้มุมขวาเล็กๆนะคับ แค่ -  พับหน้าต่างอะ
แล้วให้มันทำงานในหน้าต่างที่เรากำหนดอะคับ  คือผมอ่อนมากอะคับ ผมเพ่งมาเห็นแล้วลงหัดอะ ผมไม่รู้

*สรุป เป้าหมายของผมคือ
อยากให้มันทำงานหน้าต่างเดียวอะคับ เช่นเวลาเราเปิด2จอ มันจะได้ไม่มาทำงานอีกจอซึ้งเป็นหน้าต่างโปรแกรมเหมือนกันtitle bar โปรแกรมอะคับ ผมลองใช้ autoit ตรวจ มันขึ้น title เดียวกานเลย  แล้วก็สุดท้ายอยากให้ทำงานไ้ด้ในขณะพับหน้าต่างได้อะคับ  
แนะนำผมทีงับ ผมกรากโคตรมหาประลัยIII = ="

ขอบคุณครับ


flapjack
PSsix Member Super Class III
PSsix Member Super Class III

PSsix Moderator PSsix Master PSsix Game Coder
จำนวนข้อความ : 311
ความนิยม : 74
เข้าร่วมเมื่อ : 05/10/2010

Re: [Code]เมื่อสีที่กำหนดหายไป กดคีย์ ที่กดหนด [ช่วยวิจารย์ทีครับ]

ตั้งหัวข้อ by flapjack on 02/01/14, 04:52 pm

1.ใช่แล้วครับ
2.ถ้าอยากให้กด Key ไวกว่านี้ ก็กำหนด
Code:
Opt("SendKeyDelay", 5)
โปรแกรมจะทำงานตั้งแต่บรรทัดบนลงล่าง ครับ (งงกับคำถามที่ 2 น่ะครับ)
3.เรื่องการกด key แบบส่งไปหน้าต่างโดยกำหนด  ลองดูลิงค์ดูน่ะครับ

ปล.ในกรณีที่มีชื่อหน้าต่างเหมือนกัน แต่ต้องการส่ง key ไปที่หน้าต่างใดหน้าต่าง 1
ต้องหา PID ของหน้าต่างอันนั้นให้ได้ก่อนครับ เพื่อให้ระบุตำแหน่ง



หลังจากนั้นเราต้อง หาค่าของ hand ของหน้าต่างนั้นโดยใช้ PID เป็นการอ้างอิง (ลองศึกษาจากเว็บนี้เลยครับ)

kobtadam
PSsix Member Class II
PSsix Member Class II


จำนวนข้อความ : 41
ความนิยม : 6
เข้าร่วมเมื่อ : 28/12/2013

Re: [Code]เมื่อสีที่กำหนดหายไป กดคีย์ ที่กดหนด [ช่วยวิจารย์ทีครับ]

ตั้งหัวข้อ by kobtadam on 02/01/14, 05:26 pm

ขอบคุณพี่มากเลยครับ ผมเข้าไปอ่านก่อน

พี่ผมหาได้แว้ว PID  = ="



แก้ไขล่าสุดโดย kobtadam เมื่อ 02/01/14, 05:58 pm, ทั้งหมด 1 ครั้ง

kobtadam
PSsix Member Class II
PSsix Member Class II


จำนวนข้อความ : 41
ความนิยม : 6
เข้าร่วมเมื่อ : 28/12/2013

Re: [Code]เมื่อสีที่กำหนดหายไป กดคีย์ ที่กดหนด [ช่วยวิจารย์ทีครับ]

ตั้งหัวข้อ by kobtadam on 02/01/14, 05:57 pm

Code:
Global $GameHD

Func _PSsixLoadH($gtitle)
$GameHD = WinGetHandle($gtitle)
If @error Then
MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม")
Else
Return 1
EndIf
EndFunc

If _PSsixLoadH("GAMES") Then WinActivate($GameHD)




Func BusyWaitOnWindow($processPID, $windowTitle, $timeoutSeconds)

    Local $multiplierValue = 1000;
    Local $timeOut = $timeoutSeconds;

    Local $puttyHWND = -1;

    While ((0 <> $timeOut) AND (-1 == $puttyHWND))

 

        Winwait($windowTitle)
        Local $matchingWindows = WinList($windowTitle)

        If 0 == $matchingWindows[0][0] Then

            MsgBox(0, "Details", "NO matching window titles! Will continue busy wait for " & $timeOut & " more seconds..", 1)

      $timeOut -= 1;
      Sleep($multiplierValue);

            ContinueLoop
        EndIf

        For $dx = 1 to $matchingWindows[0][0]

            If WinGetProcess($matchingWindows[$dx][1]) == $processPID Then

                $puttyHWND = $matchingWindows[$dx][1];
                ExitLoop
            EndIf
        Next

  WEnd

  If NOT IsHWnd($puttyHWND) Then

[b]  ใส่ตรงนี้ปะงับค่าหน้าต่าง PID --->[/b]  MsgBox(3664, "", $PuttyHWND & " - It's not a HWND")
      $puttyHWND = -1;
    EndIf

  return $puttyHWND;

EndFunc


While 1
If PixelGetColor(201, 58) = 0x212031 Then    
Send("{F4}")
EndIf
Opt("SendKeyDelay", 5)


If PixelGetColor(182, 65) = 0x314552 Then    
Send("{F3}")
EndIf
Opt("SendKeyDelay", 5)

If PixelGetColor(182, 72) = 0x29384A Then
Send("{F2}")
EndIf
Opt("SendKeyDelay", 5)

WEnd

แบบนี้ใช้ได้ไหม งับพี่ผิดตรงไหน มั่วตรงไหน บอกผมหน่อยเน๊อ

flapjack
PSsix Member Super Class III
PSsix Member Super Class III

PSsix Moderator PSsix Master PSsix Game Coder
จำนวนข้อความ : 311
ความนิยม : 74
เข้าร่วมเมื่อ : 05/10/2010

Re: [Code]เมื่อสีที่กำหนดหายไป กดคีย์ ที่กดหนด [ช่วยวิจารย์ทีครับ]

ตั้งหัวข้อ by flapjack on 02/01/14, 10:16 pm

kobtadam พิมพ์ว่า:
Code:
Global $GameHD

Func _PSsixLoadH($gtitle)
$GameHD = WinGetHandle($gtitle)
If @error Then
MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม")
Else
Return 1
EndIf
EndFunc

If _PSsixLoadH("GAMES") Then WinActivate($GameHD)




Func BusyWaitOnWindow($processPID, $windowTitle, $timeoutSeconds)

    Local $multiplierValue = 1000;
    Local $timeOut = $timeoutSeconds;

    Local $puttyHWND = -1;

    While ((0 <> $timeOut) AND (-1 == $puttyHWND))

  

        Winwait($windowTitle)
        Local $matchingWindows = WinList($windowTitle)

        If 0 == $matchingWindows[0][0] Then

            MsgBox(0, "Details", "NO matching window titles! Will continue busy wait for " & $timeOut & " more seconds..", 1)

      $timeOut -= 1;
      Sleep($multiplierValue);

            ContinueLoop
        EndIf

        For $dx = 1 to $matchingWindows[0][0]

            If WinGetProcess($matchingWindows[$dx][1]) == $processPID Then

                $puttyHWND = $matchingWindows[$dx][1];
                ExitLoop
            EndIf
        Next

  WEnd

  If NOT IsHWnd($puttyHWND) Then

[b]  ใส่ตรงนี้ปะงับค่าหน้าต่าง PID --->[/b]  MsgBox(3664, "", $PuttyHWND & " - It's not a HWND")
      $puttyHWND = -1;
    EndIf

  return $puttyHWND;

EndFunc


While 1
If PixelGetColor(201, 58) = 0x212031 Then    
Send("{F4}")
EndIf
Opt("SendKeyDelay", 5)


If PixelGetColor(182, 65) = 0x314552 Then    
Send("{F3}")
EndIf
Opt("SendKeyDelay", 5)

If PixelGetColor(182, 72) = 0x29384A Then
Send("{F2}")
EndIf
Opt("SendKeyDelay", 5)

WEnd

แบบนี้ใช้ได้ไหม งับพี่ผิดตรงไหน มั่วตรงไหน บอกผมหน่อยเน๊อ
Code:

Opt("SendKeyDelay", 5)
ไว้บนสุดแค่บรรทัดเดียว ก็พอครับ
โค๊ดด้านล่างเป็นการ ดึงค่า handle  ลองประยุกต์ ดูน่ะครับ
พอได้ ค่า handle ก็สามารถอ้างอิงการส่ง Key ได้แล้วครับ
Code:


#Include <Array.au3>
#Include <WinAPIEx.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ###
$Form1 = GUICreate("Form1", 271, 109, 192, 124)
$Button1 = GUICtrlCreateButton("เลือก PID", 160, 32, 97, 33)
$Combo1 = GUICtrlCreateCombo("เลือก", 24, 40, 97, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData($Combo1,seach_Return_PID())
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit

      Case $Button1
         If GUICtrlRead($Combo1) <> "" And  select_PID_ReTurn_handle(GUICtrlRead($Combo1)) <> 0 Then
            MsgBox(0,"Return : handle ",select_PID_ReTurn_handle(GUICtrlRead($Combo1)))
        EndIf
   EndSwitch
WEnd


Func seach_Return_PID()
   Local $str
$list = ProcessList("notepad.exe"); เปลี่ยนตาม ชื่อ Process
For $i = 1 To $list[0][0]
   $str = $str&$list[$i][1]&'|'

Next
Return $str

EndFunc
Func select_PID_ReTurn_handle($PID)

Local $Data = _WinAPI_EnumProcessWindows($PID)
If IsArray($Data) Then

   Return  $Data[1][0]
Else
    Return 0
EndIf
EndFunc


kobtadam
PSsix Member Class II
PSsix Member Class II


จำนวนข้อความ : 41
ความนิยม : 6
เข้าร่วมเมื่อ : 28/12/2013

Re: [Code]เมื่อสีที่กำหนดหายไป กดคีย์ ที่กดหนด [ช่วยวิจารย์ทีครับ]

ตั้งหัวข้อ by kobtadam on 05/01/14, 02:48 am

flapjack พิมพ์ว่า:
kobtadam พิมพ์ว่า:
Code:
Global $GameHD

Func _PSsixLoadH($gtitle)
$GameHD = WinGetHandle($gtitle)
If @error Then
MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม")
Else
Return 1
EndIf
EndFunc

If _PSsixLoadH("GAMES") Then WinActivate($GameHD)




Func BusyWaitOnWindow($processPID, $windowTitle, $timeoutSeconds)

    Local $multiplierValue = 1000;
    Local $timeOut = $timeoutSeconds;

    Local $puttyHWND = -1;

    While ((0 <> $timeOut) AND (-1 == $puttyHWND))

  

        Winwait($windowTitle)
        Local $matchingWindows = WinList($windowTitle)

        If 0 == $matchingWindows[0][0] Then

            MsgBox(0, "Details", "NO matching window titles! Will continue busy wait for " & $timeOut & " more seconds..", 1)

      $timeOut -= 1;
      Sleep($multiplierValue);

            ContinueLoop
        EndIf

        For $dx = 1 to $matchingWindows[0][0]

            If WinGetProcess($matchingWindows[$dx][1]) == $processPID Then

                $puttyHWND = $matchingWindows[$dx][1];
                ExitLoop
            EndIf
        Next

  WEnd

  If NOT IsHWnd($puttyHWND) Then

[b]  ใส่ตรงนี้ปะงับค่าหน้าต่าง PID --->[/b]  MsgBox(3664, "", $PuttyHWND & " - It's not a HWND")
      $puttyHWND = -1;
    EndIf

  return $puttyHWND;

EndFunc


While 1
If PixelGetColor(201, 58) = 0x212031 Then    
Send("{F4}")
EndIf
Opt("SendKeyDelay", 5)


If PixelGetColor(182, 65) = 0x314552 Then    
Send("{F3}")
EndIf
Opt("SendKeyDelay", 5)

If PixelGetColor(182, 72) = 0x29384A Then
Send("{F2}")
EndIf
Opt("SendKeyDelay", 5)

WEnd

แบบนี้ใช้ได้ไหม งับพี่ผิดตรงไหน มั่วตรงไหน บอกผมหน่อยเน๊อ
Code:

Opt("SendKeyDelay", 5)
ไว้บนสุดแค่บรรทัดเดียว ก็พอครับ
โค๊ดด้านล่างเป็นการ ดึงค่า handle  ลองประยุกต์ ดูน่ะครับ
พอได้ ค่า handle ก็สามารถอ้างอิงการส่ง Key ได้แล้วครับ
Code:


#Include <Array.au3>
#Include <WinAPIEx.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ###
$Form1 = GUICreate("Form1", 271, 109, 192, 124)
$Button1 = GUICtrlCreateButton("เลือก PID", 160, 32, 97, 33)
$Combo1 = GUICtrlCreateCombo("เลือก", 24, 40, 97, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData($Combo1,seach_Return_PID())
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
 Case $GUI_EVENT_CLOSE
 Exit

 Case $Button1
         If GUICtrlRead($Combo1) <> "" And  select_PID_ReTurn_handle(GUICtrlRead($Combo1)) <> 0 Then
            MsgBox(0,"Return : handle ",select_PID_ReTurn_handle(GUICtrlRead($Combo1)))
     EndIf
 EndSwitch
WEnd


Func seach_Return_PID()
 Local $str
$list = ProcessList("notepad.exe"); เปลี่ยนตาม ชื่อ Process
For $i = 1 To $list[0][0]
 $str = $str&$list[$i][1]&'|'

Next
Return $str

EndFunc
Func select_PID_ReTurn_handle($PID)

Local $Data = _WinAPI_EnumProcessWindows($PID)
If IsArray($Data) Then

 Return  $Data[1][0]
Else
    Return 0
EndIf
EndFunc



หูยยยยย พี่ขอบใจมากๆ เลยคับพี่ flapjack

พี่ครับผม รันแล้วมันขึ้นแบบนี้อะ


นี้โค๊ดที่เอามาผสม อะคับ พี่ดูให้ผมที  ส่วนโปรเซต ผมเปลี่ยนชื่อแล้ว คราวนี้ มันเลย แสดง PID ของโปรเซตที่มันเจอรันอยู่กี่ PID ผมเปิด2 คับ ก็มีให้เลือก 2 ผมพยายามอธิบายตามที่ผมคิดว่ามันเปนงี้อะ ผมรู้ว่าโปรเซตไหน ชื่อไร เพราะ
กด Windows task manager ดู แล้วผมก็เลือก 1 อัน คราวนี้ ผมคิดว่า พอเลือก แล้ว มันก็จะทำงาน ขั้นต่อไป
เลยเอาโค๊ด ที่ กด ตามพิกัดเมื่อสีที่กำหนดหายไป มาต่อ ผมคิดว่ามันจะทำงานโค๊ดต่อไปเมื่อเลือกโปรเสตแล้ว เพราะมี 2
แต่มันขึ้นแบบนั้นอะคับตามรูป ผมเลยไม่รู้ว่าที่คิดถูกไหม พี่บอกผมหน่อยนะ
Code:

#Include <Array.au3>
#Include <WinAPIEx.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ###
$Form1 = GUICreate("Form1", 271, 109, 192, 124)
$Button1 = GUICtrlCreateButton("เลือก PID", 160, 32, 97, 33)
$Combo1 = GUICtrlCreateCombo("เลือก", 24, 40, 97, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData($Combo1,seach_Return_PID())
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit

      Case $Button1
         If GUICtrlRead($Combo1) <> "" And  select_PID_ReTurn_handle(GUICtrlRead($Combo1)) <> 0 Then
            MsgBox(0,"Return : handle ",select_PID_ReTurn_handle(GUICtrlRead($Combo1)))
        EndIf
   EndSwitch
WEnd


Func seach_Return_PID()
   Local $str
$list = ProcessList("elementclient.exe")
For $i = 1 To $list[0][0]
   $str = $str&$list[$i][1]&'|'

Next
Return $str

EndFunc
Func select_PID_ReTurn_handle($PID)

Local $Data = _WinAPI_EnumProcessWindows($PID)
If IsArray($Data) Then

   Return  $Data[1][0]
Else
    Return 0
EndIf
EndFunc


Global $GameHD

Func _PSsixLoadH($gtitle)
$GameHD = WinGetHandle($gtitle)
If @error Then
MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม")
Else
Return 1
EndIf
EndFunc

If _PSsixLoadH("ZhuXian") Then WinActivate($GameHD)



While 1
If PixelGetColor(215, 54) = 0x212031 Then
Opt("SendKeyDelay", 1)
Send("{F4}")
EndIf


WEnd

loveapple244
PSsix Member Super Class II
PSsix Member Super Class II

PSsix Game Coder
จำนวนข้อความ : 160
ความนิยม : 9
เข้าร่วมเมื่อ : 15/07/2011

Re: [Code]เมื่อสีที่กำหนดหายไป กดคีย์ ที่กดหนด [ช่วยวิจารย์ทีครับ]

ตั้งหัวข้อ by loveapple244 on 25/01/14, 08:51 am

มีสี3กลุ่มปุ่มกด3ปุ่ม 345 จะให้มันกดพร้อมกันต้องทำ3โปรแกรมถ้า1โปรแกรมมันจะไล่ จากบนลงล่างจากค่าที่นายเขียนวิธีจะให้มันทำงานในเวลาเดียวกันได้ก็คือแยกโปรแกรมมาโดยIf PixelGetColor(182, 72) = 0x29384A Then Send("{F2}")
EndIf Sleep(10) เป็นโปรแกรมที่1 2 3 เวลาเปิดก็คลิ๊กๆ3โปรแกรมในรูปแปลงไฟลเป็นexe แล้วข้อดีคือมันแบ่งห้องการทำงานเป็นF2 3 4 ไปแต่ข้อเสียคือตอนที่นายไปคลิ๊กที่โปรแกรมมันจะต้องกดโปรแกรมที่1 2 3 อยู่ดีก็คือมันก็จะแบ่ง 1 2 3 แต่ก็จะได้ค่าที่แน่นอนกว่าข้างบนเพราะข้างบนเวลาเกิดถ้ามอนหรืออะไรลุมหรือสะดุดโอกาศตายมี10%แต่ที่แยกออกมามันก็จะลดช่องว่างไปแต่มันก็จะทำให้เพิ่มมือให้คอมอีกจาก1เป็น 2 3 แต่ถ้าจะเขียนในโปรแกรมเดียวกันมันจะเป็นรูปแบบที่ว่า หามอน1ฟัังก์ชั่น เจอแล้วตีเพิ่มค่าตีมอนลงไปฟังชั่นที่2 ก็จะใช้ในรูปfor ลืมบอกว่าควรมีคำสั่งปิดโปรแกรมไว้ซะ1ปุ่มในHotKeySetก็ได้แล้วใส่ค่าesc ไว้ปิดโปรแกรมไรงี้เผื่อโปรแกรมเร็วเกินไปอาจจะเป็นทีว่ามันค้าง-*-จะกดแล้วมันดันไม่กดเำีพราะบางทีส่งค่าไวไปถ้าลงเป็นคีแค่1มันไม่น่าจะมีปัญหาซ้อนทับฉะนั้นอาจจะเป็นการรวนหรือคีไม่ส่งเข้าสู้เกมส์ให้ลองสั่งsendง่ายๆก่อนว่ามันส่งไปที่เกมส์หรือไม่อย่างเราก็สั่งแบบนายอะแต่เราใช้ไว้สแกนหาว่ากดปุ่มดังกล่าวหรือไม่ถ้าไม่กดปุ่มก็ทำงานต่อไรงี้โดยสรุปไว้นี้น่าจะเป็นประโยชน์เพราะดูจากโปรแกรมที่นายเขียนเป็นจุดเริ่มเต้นหาค่า pidแล้วได้ค่า Handlesนั้นๆมา-*-โดยการเลือกpidซึ่งเท่ากับว่าพึ่งจะหาว่าใช่หน้าต่างโปรแกรมที่ต้องการหรือเปล่าหรือแค่ว่าโปรแกรมดังกล่าวHandlesอะไีร-*-ซึ่งFunc_PSsixLoadH($gtitle)มันก็บอกแล้วว่าหาหน้าต่างนั้นถ้าเจอก็เปิดถ้าไม่เจอก็error-*-ก็จบแล้ว--จากที่ดูแล้วคนสอนก็บอกให้ทำคือเขารู้ึลึกซึ้งแล้วว่าหาpidไปเพื่อหาพอได้ ค่า handle ก็จะง่ายคือไม่เกิดการซ้อนทับโปรแกรมเดียวกันมักใช้ในกรณีที่เปิดโปรแกรมชื่อเหมือนๆกันแล้วทานค่าหน้าต่างเดียวกันแล้วไม่ส่งไปทำงานหน้าต่างที่2 3 4เลยใช้handleอย่างแรกเลยยากให้มองก่อนว่าทำงาน1หน้าจอให้ผ่านแล้วค่อยทำหน้าจอที่2 3 4ไ่ล่พื้นๆไปก่อน-*-เพราะpidมันไม่ได้ไปช่วยในการแบ่งว่าหน้าต่างนั้นๆจะไล่ค่า 1 2 3พร้อมกันได้มันก็ไล่เหมือนที่นายทำข้างบนนะจุดเริ่มต้นนั้นละ-*-Opt("SendKeyDelay", 5)สำหรับผู้ชำนาญและเล่นเกมส์นั้นๆเป็นเวลานานๆจะรู้ว่าดีเลเกมส์หรือโปรแกรมมันเข้ากันหรือไม่เพราะบางทีบางเกมส์ก็ใช้ได้ดีและอย่างบางทีก็ใช้ได้กลางๆแต่ถ้าจะให้มันกดจากสี3สีรัวๆเราขอสรุปตรงนี้ว่าให้ทำในรูปจริงเท็จเป็น3โปรแกรมจะทำงานได้ไวมากๆเพราะอ่านๆดูไล่จากที่อ่านดูแล้วสรุปได้ว่านายหาสี3สีแบ่งให้กดสีละ1ปุ่มก็คือกำหนดโปรแกรมที่1ว่าหาสีขาวเจอแล้วให้กดF1สมมุติถ้าไม่เจอหากลับไปหาสีแบบนี้จะชัวกว่าถ้าไม่เจอสีกดF1เลยมันจะค้างและกดไปเป็นชั่วโมงๆโหแม่เจ้า-*-เพื่อให้รวน-*-พื้นฐานจะให้ดีเราแนะนำให้ไล่อ่านของพี่posแล้วหัดทำตามให้คล่องแล้วลองดูของพี่autและของคนอื่นๆดูว่าทำแบบเขาได้แล้วทีนี้นายจะเป็นเหมือนๆเราคืออ๋อ จบ-0-ยาวมาก-*-เราไม่สอนนะว่าเขียนอย่างไรเพราะของพี่posมันครอบเรื่องของนายถามเลยอะลองดูให้ดีๆมีทุกอย่างที่หาๆมาไม่เกินบทที่6เลยด้วย-*-


kobtadam
PSsix Member Class II
PSsix Member Class II


จำนวนข้อความ : 41
ความนิยม : 6
เข้าร่วมเมื่อ : 28/12/2013

Re: [Code]เมื่อสีที่กำหนดหายไป กดคีย์ ที่กดหนด [ช่วยวิจารย์ทีครับ]

ตั้งหัวข้อ by kobtadam on 27/01/14, 06:16 am

loveapple244 พิมพ์ว่า:มีสี3กลุ่มปุ่มกด3ปุ่ม 345 จะให้มันกดพร้อมกันต้องทำ3โปรแกรมถ้า1โปรแกรมมันจะไล่ จากบนลงล่างจากค่าที่นายเขียนวิธีจะให้มันทำงานในเวลาเดียวกันได้ก็คือแยกโปรแกรมมาโดยIf PixelGetColor(182, 72) = 0x29384A Then Send("{F2}")
EndIf Sleep(10) เป็นโปรแกรมที่1 2 3 เวลาเปิดก็คลิ๊กๆ3โปรแกรมในรูปแปลงไฟลเป็นexe แล้วข้อดีคือมันแบ่งห้องการทำงานเป็นF2 3 4 ไปแต่ข้อเสียคือตอนที่นายไปคลิ๊กที่โปรแกรมมันจะต้องกดโปรแกรมที่1 2 3 อยู่ดีก็คือมันก็จะแบ่ง 1 2 3 แต่ก็จะได้ค่าที่แน่นอนกว่าข้างบนเพราะข้างบนเวลาเกิดถ้ามอนหรืออะไรลุมหรือสะดุดโอกาศตายมี10%แต่ที่แยกออกมามันก็จะลดช่องว่างไปแต่มันก็จะทำให้เพิ่มมือให้คอมอีกจาก1เป็น 2 3 แต่ถ้าจะเขียนในโปรแกรมเดียวกันมันจะเป็นรูปแบบที่ว่า หามอน1ฟัังก์ชั่น เจอแล้วตีเพิ่มค่าตีมอนลงไปฟังชั่นที่2 ก็จะใช้ในรูปfor ลืมบอกว่าควรมีคำสั่งปิดโปรแกรมไว้ซะ1ปุ่มในHotKeySetก็ได้แล้วใส่ค่าesc ไว้ปิดโปรแกรมไรงี้เผื่อโปรแกรมเร็วเกินไปอาจจะเป็นทีว่ามันค้าง-*-จะกดแล้วมันดันไม่กดเำีพราะบางทีส่งค่าไวไปถ้าลงเป็นคีแค่1มันไม่น่าจะมีปัญหาซ้อนทับฉะนั้นอาจจะเป็นการรวนหรือคีไม่ส่งเข้าสู้เกมส์ให้ลองสั่งsendง่ายๆก่อนว่ามันส่งไปที่เกมส์หรือไม่อย่างเราก็สั่งแบบนายอะแต่เราใช้ไว้สแกนหาว่ากดปุ่มดังกล่าวหรือไม่ถ้าไม่กดปุ่มก็ทำงานต่อไรงี้โดยสรุปไว้นี้น่าจะเป็นประโยชน์เพราะดูจากโปรแกรมที่นายเขียนเป็นจุดเริ่มเต้นหาค่า pidแล้วได้ค่า Handlesนั้นๆมา-*-โดยการเลือกpidซึ่งเท่ากับว่าพึ่งจะหาว่าใช่หน้าต่างโปรแกรมที่ต้องการหรือเปล่าหรือแค่ว่าโปรแกรมดังกล่าวHandlesอะไีร-*-ซึ่งFunc_PSsixLoadH($gtitle)มันก็บอกแล้วว่าหาหน้าต่างนั้นถ้าเจอก็เปิดถ้าไม่เจอก็error-*-ก็จบแล้ว--จากที่ดูแล้วคนสอนก็บอกให้ทำคือเขารู้ึลึกซึ้งแล้วว่าหาpidไปเพื่อหาพอได้ ค่า handle ก็จะง่ายคือไม่เกิดการซ้อนทับโปรแกรมเดียวกันมักใช้ในกรณีที่เปิดโปรแกรมชื่อเหมือนๆกันแล้วทานค่าหน้าต่างเดียวกันแล้วไม่ส่งไปทำงานหน้าต่างที่2 3 4เลยใช้handleอย่างแรกเลยยากให้มองก่อนว่าทำงาน1หน้าจอให้ผ่านแล้วค่อยทำหน้าจอที่2 3 4ไ่ล่พื้นๆไปก่อน-*-เพราะpidมันไม่ได้ไปช่วยในการแบ่งว่าหน้าต่างนั้นๆจะไล่ค่า 1 2 3พร้อมกันได้มันก็ไล่เหมือนที่นายทำข้างบนนะจุดเริ่มต้นนั้นละ-*-Opt("SendKeyDelay", 5)สำหรับผู้ชำนาญและเล่นเกมส์นั้นๆเป็นเวลานานๆจะรู้ว่าดีเลเกมส์หรือโปรแกรมมันเข้ากันหรือไม่เพราะบางทีบางเกมส์ก็ใช้ได้ดีและอย่างบางทีก็ใช้ได้กลางๆแต่ถ้าจะให้มันกดจากสี3สีรัวๆเราขอสรุปตรงนี้ว่าให้ทำในรูปจริงเท็จเป็น3โปรแกรมจะทำงานได้ไวมากๆเพราะอ่านๆดูไล่จากที่อ่านดูแล้วสรุปได้ว่านายหาสี3สีแบ่งให้กดสีละ1ปุ่มก็คือกำหนดโปรแกรมที่1ว่าหาสีขาวเจอแล้วให้กดF1สมมุติถ้าไม่เจอหากลับไปหาสีแบบนี้จะชัวกว่าถ้าไม่เจอสีกดF1เลยมันจะค้างและกดไปเป็นชั่วโมงๆโหแม่เจ้า-*-เพื่อให้รวน-*-พื้นฐานจะให้ดีเราแนะนำให้ไล่อ่านของพี่posแล้วหัดทำตามให้คล่องแล้วลองดูของพี่autและของคนอื่นๆดูว่าทำแบบเขาได้แล้วทีนี้นายจะเป็นเหมือนๆเราคืออ๋อ จบ-0-ยาวมาก-*-เราไม่สอนนะว่าเขียนอย่างไรเพราะของพี่posมันครอบเรื่องของนายถามเลยอะลองดูให้ดีๆมีทุกอย่างที่หาๆมาไม่เกินบทที่6เลยด้วย-*-



ขอบคุณครับ เราก็อ่านทุกบทเลยอะ = =" แต่เราไม่เข้าใจเราก็กลับไปอ่านอีก สงสัยต้องอ่านไปแว้วทำไปแล้วมาอ่านอีก

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

kobtadam
PSsix Member Class II
PSsix Member Class II


จำนวนข้อความ : 41
ความนิยม : 6
เข้าร่วมเมื่อ : 28/12/2013

Re: [Code]เมื่อสีที่กำหนดหายไป กดคีย์ ที่กดหนด [ช่วยวิจารย์ทีครับ]

ตั้งหัวข้อ by kobtadam on 27/01/14, 06:17 am

โค๊ดตัวบน ผมเริ่มจะเข้าใจแล้วหละว่ามันเอาไปใช้ยังไง กะทู้นี้ผมโพสตอนหัดวันแรกเลยงะ ตอนนั้นไม่รู้ว่า นี้คือ GUI = ="

    เวลาขณะนี้ 07/12/16, 12:55 am