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


รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

Share

autoitnew
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 13/08/2011

รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by autoitnew on 13/08/11, 01:22 am

คือมีโปรแกรมเกมส์เปิดอยู่หลายๆตัว เช่น a.exe b.exe c.exe
แล้ว Title ของแต่ละอันจะเหมือนกันหมดเลย เช่นแสดงชื่อTitle ว่าzzzz ถ้าอยากให้แต่ละอัน ใช้คำสั่งWinSetTitle ให้Titleต่างกัน เป็น a b c โดยโปรแกรมย่ออยุ่บนtaskbarจะต้องเขียนคริปยังไงดีครับ
เพราะลองหลายแบบแล้วแต่ต้องมายกจอขึ้นแล้วกดเปลี่ยนเองตลอดเลย ขอบคุณครับ

POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by POS on 13/08/11, 06:44 am

ลองสคริปต์ด้านล่างนี้ เปิดโปรแกรมขึ้นมาให้หมดก่อน

Code:
$a = 1
$winlist = WinList()
For $i = 1 To $winlist[0][0]
   If $winlist[$i][0] <> "" Then
      If $winlist[$i][0] = "xxx" Then ;ชื่อไตเติลโปรแกรมเดิม
         WinSetTitle($winlist[$i][0], "", "program" & $a) ;ชื่อไตเติลที่ต้องการเปลี่ยนใหม่
         $a += 1
      EndIf
   EndIf
Next


***เท่าที่อ่านดูปัญหาบรรทัดล่างสุดของคุณ โปรแกรมมีการป้องกันไม่ให้เปลี่ยนไตเติล ถ้าจะควบคุมโปรแกรมแบบแยกให้วิธีดึงเอาค่า pid ของโปรแกรมที่เปิดมาควบคุมอีกครั้ง เช่น

Code:
Global $pid1 = Run("aaa.exe")
Sleep(1000);กะหน่วงเวลาจนกว่าจะเปิดโปรแกรมเสร็จ

    $WinList=WinList()
    for $i=1 to $WinList[0][0]
        if WinGetProcess($WinList[$i][1])=$pid1 then
          $pid1 = $WinList[$i][1]
        EndIf
    Next

 
   WinActivate($pid1);สั่งเด้งหน้าต่างขึ้นมา

;เขียนสคริปต์ควบคุมอื่นๆ  อ้างอิงหน้าต่างโดยใช้ $pid1
;เขียนสคริปต์ควบคุมอื่นๆ อ้างอิงหน้าต่างโดยใช้ $pid1
;เขียนสคริปต์ควบคุมอื่นๆ อ้างอิงหน้าต่างโดยใช้ $pid1


เวลาจะควบคุมก็สั่งที่ $pid1 แทนการสั่งที่ชื่อไตเติลโปรแกรม


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
https://www.facebook.com/groups/AutoItThai/

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

autoitnew
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 13/08/2011

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by autoitnew on 13/08/11, 11:35 pm

POS พิมพ์ว่า:ลองสคริปต์ด้านล่างนี้ เปิดโปรแกรมขึ้นมาให้หมดก่อน

Code:
$a = 1
$winlist = WinList()
For $i = 1 To $winlist[0][0]
   If $winlist[$i][0] <> "" Then
      If $winlist[$i][0] = "xxx" Then ;ชื่อไตเติลโปรแกรมเดิม
         WinSetTitle($winlist[$i][0], "", "program" & $a) ;ชื่อไตเติลที่ต้องการเปลี่ยนใหม่
         $a += 1
      EndIf
   EndIf
Next


***เท่าที่อ่านดูปัญหาบรรทัดล่างสุดของคุณ โปรแกรมมีการป้องกันไม่ให้เปลี่ยนไตเติล ถ้าจะควบคุมโปรแกรมแบบแยกให้วิธีดึงเอาค่า pid ของโปรแกรมที่เปิดมาควบคุมอีกครั้ง เช่น

Code:
Global $pid1 = Run("aaa.exe")
Sleep(1000);กะหน่วงเวลาจนกว่าจะเปิดโปรแกรมเสร็จ

    $WinList=WinList()
    for $i=1 to $WinList[0][0]
        if WinGetProcess($WinList[$i][1])=$pid1 then
          $pid1 = $WinList[$i][1]
        EndIf
    Next

 
   WinActivate($pid1);สั่งเด้งหน้าต่างขึ้นมา

;เขียนสคริปต์ควบคุมอื่นๆ  อ้างอิงหน้าต่างโดยใช้ $pid1
;เขียนสคริปต์ควบคุมอื่นๆ อ้างอิงหน้าต่างโดยใช้ $pid1
;เขียนสคริปต์ควบคุมอื่นๆ อ้างอิงหน้าต่างโดยใช้ $pid1


เวลาจะควบคุมก็สั่งที่ $pid1 แทนการสั่งที่ชื่อไตเติลโปรแกรม


ผมได้ลองเอาไปใช้แล้วครับสคริปแรกตัวนี้ กลายเป็นว่ามันเจอtitle ที่กำหนดทั้งหมดและทำการเปลี่ยนชื่อให้แล้วเรียงตามตัวเลข แต่ดันมีปัญหาคือว่ามันเรียงเลขจากขวามาซ้าย เช่นในtasbar จะเรียงดังนี้
10 9 8 7 6 5 4 3 2 1
โดยที่ผมต้องการคือให้มันเรียง
1 2 3 4 5 6 7 8 9 10
ไม่ทราบว่าต้องแก้ตรงส่วนไหนครับ ขอบคุณครับ

aut
PSsix Powerful Scripting Class
PSsix Powerful Scripting Class

PSsix Game Coder
จำนวนข้อความ : 472
ความนิยม : 125
เข้าร่วมเมื่อ : 24/07/2010

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by aut on 14/08/11, 11:54 am

มี10อันใช่เป่าก้อแก้$aนะตามนี่เลยนาย

$a = 10
$winlist = WinList()
For $i = 1 To $winlist[0][0]
If $winlist[$i][0] <> "" Then
If $winlist[$i][0] = "xxx" Then ;ชื่อไตเติลโปรแกรมเดิม
WinSetTitle($winlist[$i][0], "", "program" & $a) ;ชื่อไตเติลที่ต้องการเปลี่ยนใหม่
$a -= 1
EndIf
EndIf
Next

autoitnew
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 13/08/2011

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by autoitnew on 14/08/11, 05:46 pm

aut พิมพ์ว่า:มี10อันใช่เป่าก้อแก้$aนะตามนี่เลยนาย

$a = 10
$winlist = WinList()
For $i = 1 To $winlist[0][0]
If $winlist[$i][0] <> "" Then
If $winlist[$i][0] = "xxx" Then ;ชื่อไตเติลโปรแกรมเดิม
WinSetTitle($winlist[$i][0], "", "program" & $a) ;ชื่อไตเติลที่ต้องการเปลี่ยนใหม่
$a -= 1
EndIf
EndIf
Next

ได้ละคับ แต่ติดปัญหาตรงชื่อtitleถ้าเราจะใช้แค่บางส่วนที่หมือนชื่อtitleแล้วให้มันเปลี่ยนตามที่กำหนด จะต้องแก้ตรงไหนครับ เพราะตามscriptด้านบนจะเปลี่ยนไมได้ถ้าไม่ตรงทั้งหมดครับ ขอบคุณครับ สอบถามเพิ่มเติมครับ ถ้าเราอยากให้ทำฟังชั่นซ้ำกันเป็นจำนวนครั้งเช่น ให้ทำ5ครั้ง
จะเขียนในคริปอย่างไรครับ ขอบคุณครับ

เพิ่มเติมครับ อีกปัญหาคือcontrolclickเวลาผมส่งคำสั่งไปหลายๆหน้าจอ จะเกิดการส่งไม่ครบ
และpixelsearchแบบ
$coord = PixelSearch( 681,206, 1097,500, 0xD59158 )
If Not @error Then
MouseClick("right",$coord[0] ,$coord[1],1,0)
Sleep (500)

บางเครื่องใช้สีเดียวกันเกมส์เดียวกันสคริปเดียวกันก้อเช๊คสีได้ไม่ถูกต้อง
บางเครื่องจะคลิกบางเครื่องจะไม่คลิกทั้งที่ใส่หลายสีแล้วล่ะครับ

ขอบคุณครับ

aut
PSsix Powerful Scripting Class
PSsix Powerful Scripting Class

PSsix Game Coder
จำนวนข้อความ : 472
ความนิยม : 125
เข้าร่วมเมื่อ : 24/07/2010

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by aut on 15/08/11, 03:01 pm

ทำแบบ5ทีก้อเอาforคอบคำสั่งไว้นะ

for $i =1 to 5 ;ทำ5ทีนะจาทำ10ก้อเปลี่ยน5เป็น10

;ยัดคำสั่งไรก้อได้ตงนี้
;ยัดคำสั่งไรก้อได้ตงนี้
;ยัดคำสั่งไรก้อได้ตงนี้

Next

aut
PSsix Powerful Scripting Class
PSsix Powerful Scripting Class

PSsix Game Coder
จำนวนข้อความ : 472
ความนิยม : 125
เข้าร่วมเมื่อ : 24/07/2010

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by aut on 15/08/11, 03:11 pm

controlclickส่งไม่ครบนายก้อเขียนสั่งให้มานตรวจดิปรามาณสั่งกดไปในเกมมานก้อต้องมีอะไรเปี่ยนไปใช่เปล่านายก้อgetcolorตงที่เปี่ยนอะดูว่าเปี่ยนอะยังถ้ายังไม่เปี่ยนก้อสั่งกดอีกทีปรามานนี้



$coord = PixelSearch(681, 206, 1097, 500, 0xD59158)
If Not @error Then

Do
$xx = PixelGetColor($coord[0], $coord[1]) ;getสีออกมาก่อน
MouseClick("right", $coord[0], $coord[1], 1, 0) ;สั่งกด
Sleep(500)
Until $xx <> 0xD59158 ;สีเปี่ยนอะหยังเปี่ยนก็เลิกทำ
EndIf

aut
PSsix Powerful Scripting Class
PSsix Powerful Scripting Class

PSsix Game Coder
จำนวนข้อความ : 472
ความนิยม : 125
เข้าร่วมเมื่อ : 24/07/2010

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by aut on 15/08/11, 03:14 pm

เกมที่มานมีeffectเยอะกาดจอคนละรุนสีก้อไม่ตงอ่านะปิดำeffectทิ้งไปเลยนายถามเยอะวะตอบแค่นี้พอ555555ไม่เก็ตก้อถามใหม่นะนายเราจะได้แอบเนียนปั้ม5555

autoitnew
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 13/08/2011

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by autoitnew on 15/08/11, 04:01 pm

สคริปนี้อ่ะคับ
$a = 10
$winlist = WinList()
For $i = 1 To $winlist[0][0]
If $winlist[$i][0] <> "" Then
If $winlist[$i][0] = "xxx" Then ;ชื่อไตเติลโปรแกรมเดิม
WinSetTitle($winlist[$i][0], "", "program" & $a) ;ชื่อไตเติลที่ต้องการเปลี่ยนใหม่
$a -= 1
EndIf
EndIf
Next

ถ้าผมจะให้มันเปลี่ยนโดยจับกับtitleแค่บางส่วนต้องแก้ไขยังไงหรอครับ
เช่นเกมส์ชื่อvitamilk plusแต่ถ้าผมใส่แค่
If $winlist[$i][0] = "vita" Then ;ชื่อไตเติลโปรแกรมเดิม
มันจะไม่เปลี่ยนให้น่ะครับ แต่ถ้าใส่วาvitamilk plus มันเปลี่ยนให้ครับ ขอบคุณครับ

POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by POS on 16/08/11, 07:02 am

เปลี่ยนคำสั่งเป็น StringInStr แทนครับ ดังตัวอย่างสคริปต์ด้าล่างนี้

Code:
$a = 10
$winlist = WinList()
For $i = 1 To $winlist[0][0]
   If $winlist[$i][0] <> "" Then
      If StringInStr($winlist[$i][0], "xxx")  Then ;ชื่อไตเติลโปรแกรมเดิม
         WinSetTitle($winlist[$i][0], "", "program" & $a) ;ชื่อไตเติลที่ต้องการเปลี่ยนใหม่
         $a -= 1
      EndIf
   EndIf
Next


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
https://www.facebook.com/groups/AutoItThai/

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

thannam001
PSsix Member
PSsix Member


จำนวนข้อความ : 21
ความนิยม : 1
เข้าร่วมเมื่อ : 30/05/2012
อายุ : 23

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by thannam001 on 04/09/12, 06:22 pm

ขอลองเอาไปศึกษาด้วยนะครับ

Pochi
PSsix Member Class III
PSsix Member Class III


จำนวนข้อความ : 66
ความนิยม : 1
เข้าร่วมเมื่อ : 22/10/2010

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by Pochi on 22/09/12, 10:40 pm

em230

chaizaa2010
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 2
ความนิยม : 0
เข้าร่วมเมื่อ : 26/08/2013

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by chaizaa2010 on 26/08/13, 10:59 pm

อยากรู้การเขียนควบคุ้มโดนกดTab แล้วกดตัวเลข 1 ถึง10 งะครับผมจะเอาไปลองกับเกม
E
D
E
N

ครับ ใครช่วนแนะนำที

pakhoiz
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 7
ความนิยม : 0
เข้าร่วมเมื่อ : 17/08/2014
อายุ : 26

Re: รบกวนสอบถาม การควบคุมเกมส์ชื่อเดียวกันเปิดหลายหน้าต่าง

ตั้งหัวข้อ by pakhoiz on 17/08/14, 12:56 pm

อยากทำแบบนี้

    เวลาขณะนี้ 03/12/16, 02:58 am