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


ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

Share

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


จำนวนข้อความ : 17
ความนิยม : 0
เข้าร่วมเมื่อ : 17/04/2015

ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

ตั้งหัวข้อ by Ghost46764 on 06/08/15, 02:39 pm

แบบว่าเราเปิดโฟลเดอร์ที่ชื่อว่า A แล้วกด Hotkey เลข1
แล้วไฟล์ที่เราจะก็อปมันก็จะมาอยู่ในโฟลเดอร์ A ที่เราเปิดไว้
แบบนี้พอจะทำได้ไหมครับ รบกวนหน่อยครับ
ขอบคุณครับ

thunmor
PSsix Member
PSsix Member


จำนวนข้อความ : 26
ความนิยม : 22
เข้าร่วมเมื่อ : 06/08/2012

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

ตั้งหัวข้อ by thunmor on 07/08/15, 01:34 am

ลองสคริปนี้ดูครับ
Code:
HotKeySet("{NUMPAD1}", "test")

While 1
   Sleep(1000)
WEnd

Func test()
   FileCopy(@WindowsDir & "\media\tada.wav", ControlGetText(WinGetTitle("[ACTIVE]"), "", "Edit1"), 1) ;copy ไฟล์ชื่อ tada.wav ไปยังโฟลเดอร์ที่เปิดไว้
EndFunc

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


จำนวนข้อความ : 17
ความนิยม : 0
เข้าร่วมเมื่อ : 17/04/2015

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

ตั้งหัวข้อ by Ghost46764 on 07/08/15, 10:59 am

thunmor พิมพ์ว่า:ลองสคริปนี้ดูครับ
Code:
HotKeySet("{NUMPAD1}", "test")

While 1
   Sleep(1000)
WEnd

Func test()
   FileCopy(@WindowsDir & "\media\tada.wav", ControlGetText(WinGetTitle("[ACTIVE]"), "", "Edit1"), 1) ;copy ไฟล์ชื่อ tada.wav ไปยังโฟลเดอร์ที่เปิดไว้
EndFunc

ไม่ได้ครับ

thunmor
PSsix Member
PSsix Member


จำนวนข้อความ : 26
ความนิยม : 22
เข้าร่วมเมื่อ : 06/08/2012

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

ตั้งหัวข้อ by thunmor on 07/08/15, 12:12 pm

ต้องคลิกไปที่หน้าต่างไฟล์ให้หน้าต่างActiveอยู่หน้าแรกก่อนนะครับ แล้วค่อยกดเลข1
ถ้ายังไม่ได้แสดงว่าชื่อClassของคุณไม่เหมือนของผม WinXPของผมมันชื่อEdit1

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


จำนวนข้อความ : 17
ความนิยม : 0
เข้าร่วมเมื่อ : 17/04/2015

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

ตั้งหัวข้อ by Ghost46764 on 07/08/15, 09:38 pm

thunmor พิมพ์ว่า:ต้องคลิกไปที่หน้าต่างไฟล์ให้หน้าต่างActiveอยู่หน้าแรกก่อนนะครับ แล้วค่อยกดเลข1
ถ้ายังไม่ได้แสดงว่าชื่อClassของคุณไม่เหมือนของผม WinXPของผมมันชื่อEdit1

แก้ชื่อ Class แล้วก็ไม่ได้ครับ

thunmor
PSsix Member
PSsix Member


จำนวนข้อความ : 26
ความนิยม : 22
เข้าร่วมเมื่อ : 06/08/2012

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

ตั้งหัวข้อ by thunmor on 07/08/15, 11:18 pm

ก่อนอื่นพยายามเขียนสคริปดึงtext จากช่องAddressออกมาให้ได้ก่อน
Code:
HotKeySet("{SPACE}", "test") ; ใช้spacebar เป็นHotKey

While 1
   Sleep(1000)
WEnd

Func test()
   ; ดึงชื่อหน้าต่างที่กำลังACTIVE
   $wintitle = WinGetTitle("[ACTIVE]")
   ; ดึงtextในหน้าต่างจากช่องaddressbar (classnameNN Edit1)
   $text = ControlGetText($wintitle, "", "Edit1")
   ; เอา text ที่ดึงมา แสดงในmsgbox เพื่อดูว่าถูกต้องหรือไม่
   MsgBox(0, "ทดสอบ", "ชื่อแฟ้มคือ" & @CRLF & $wintitle & @CRLF & @CRLF & "textที่ดึงจากaddressbarคือ" & @CRLF & $text)
EndFunc
ใส่ชื่อclassให้ถูกแล้วลองดูว่าดึงออกมาได้หรือปล่าว
[You must be registered and logged in to see this image.]


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


จำนวนข้อความ : 17
ความนิยม : 0
เข้าร่วมเมื่อ : 17/04/2015

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

ตั้งหัวข้อ by Ghost46764 on 08/08/15, 01:32 am

thunmor พิมพ์ว่า:ก่อนอื่นพยายามเขียนสคริปดึงtext จากช่องAddressออกมาให้ได้ก่อน
Code:
HotKeySet("{SPACE}", "test") ; ใช้spacebar เป็นHotKey

While 1
   Sleep(1000)
WEnd

Func test()
   ; ดึงชื่อหน้าต่างที่กำลังACTIVE
   $wintitle = WinGetTitle("[ACTIVE]")
   ; ดึงtextในหน้าต่างจากช่องaddressbar (classnameNN Edit1)
   $text = ControlGetText($wintitle, "", "Edit1")
   ; เอา text ที่ดึงมา แสดงในmsgbox เพื่อดูว่าถูกต้องหรือไม่
   MsgBox(0, "ทดสอบ", "ชื่อแฟ้มคือ" & @CRLF & $wintitle & @CRLF & @CRLF & "textที่ดึงจากaddressbarคือ" & @CRLF & $text)
EndFunc
ใส่ชื่อclassให้ถูกแล้วลองดูว่าดึงออกมาได้หรือปล่าว
[You must be registered and logged in to see this image.]


นี้ครับ [You must be registered and logged in to see this image.]

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


จำนวนข้อความ : 17
ความนิยม : 0
เข้าร่วมเมื่อ : 17/04/2015

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

ตั้งหัวข้อ by Ghost46764 on 08/08/15, 01:39 am

โอเคตอนนี้ขึ้นมาแล้วครับ

[You must be registered and logged in to see this image.]

แล้วต้องทำยังไงต่อละครับ

thunmor
PSsix Member
PSsix Member


จำนวนข้อความ : 26
ความนิยม : 22
เข้าร่วมเมื่อ : 06/08/2012

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

ตั้งหัวข้อ by thunmor on 08/08/15, 11:50 am

อ่อ ผมเข้าใจปัญหาแล้ว คือWin7พอดึงtextออกมากมันติดคำว่า"Address: "ออกมาด้วย (WinXPจะไม่ติด)
วิธีแก้คือเมื่อดึงtextออกมาแล้ว ต้องตัดคำว่า"Address: "ออกก่อนให้เหลือแต่path
Code:
HotKeySet("{SPACE}", "test") ; ใช้spacebar เป็นHotKey

While 1
   Sleep(1000)
WEnd

Func test()
   $text = ControlGetText(WinGetTitle("[ACTIVE]"), "", "DirectUIHWND3") ; ดึงtextจากช่องaddressbar
   $dir = StringTrimLeft($text, 9) ; ตัดอักษร9ตัวแรกออก (ต้องการตัดคำว่า "Address: " ทิ้ง)
   FileCopy(@WindowsDir & "\media\tada.wav", $dir, 1) ;copy ไฟล์ชื่อ tada.wav ไปยังโฟลเดอร์ที่เปิดไว้ (เลข1=เขียนทับหากมีไฟล์อยู่แล้ว 0=ไม่เขียนทับไฟล์เดิม)
EndFunc

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


จำนวนข้อความ : 17
ความนิยม : 0
เข้าร่วมเมื่อ : 17/04/2015

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

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

thunmor พิมพ์ว่า:อ่อ ผมเข้าใจปัญหาแล้ว คือWin7พอดึงtextออกมากมันติดคำว่า"Address: "ออกมาด้วย (WinXPจะไม่ติด)
วิธีแก้คือเมื่อดึงtextออกมาแล้ว ต้องตัดคำว่า"Address: "ออกก่อนให้เหลือแต่path
Code:
HotKeySet("{SPACE}", "test") ; ใช้spacebar เป็นHotKey

While 1
   Sleep(1000)
WEnd

Func test()
   $text = ControlGetText(WinGetTitle("[ACTIVE]"), "", "DirectUIHWND3") ; ดึงtextจากช่องaddressbar
   $dir = StringTrimLeft($text, 9) ; ตัดอักษร9ตัวแรกออก (ต้องการตัดคำว่า "Address: " ทิ้ง)
   FileCopy(@WindowsDir & "\media\tada.wav", $dir, 1) ;copy ไฟล์ชื่อ tada.wav ไปยังโฟลเดอร์ที่เปิดไว้ (เลข1=เขียนทับหากมีไฟล์อยู่แล้ว 0=ไม่เขียนทับไฟล์เดิม)
EndFunc

ก็ยังไม่ได้อยู่ดีครับ

thunmor
PSsix Member
PSsix Member


จำนวนข้อความ : 26
ความนิยม : 22
เข้าร่วมเมื่อ : 06/08/2012

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

ตั้งหัวข้อ by thunmor on 08/08/15, 04:54 pm

เวลาเขียนสคริปคุณต้องรู้วิธีหาข้อผิดพลาดด้วย ว่าผิดพลาดในขั้นตอนไหนเพื่อจะได้แก้ให้ถูก เป็นการยากที่ผมเดาได้ว่าคุณทำพลาดขั้นตอนไหน
Code:
HotKeySet("{SPACE}", "test") ; ใช้spacebar เป็นHotKey

While 1
   Sleep(1000)
WEnd

Func test()

   $winname = WinGetTitle("[ACTIVE]") ; ดึงชื่อหน้าต่างที่ACTIVE
   If $winname = "" Then
      MsgBox(0, "เก็บชื่อหน้าต่างล้มเหลว", "ไม่พบหน้าต่าง")
      Exit
   Else
      MsgBox(0, "เก็บชื่อหน้าต่างสำเร็จ", "ชื่อหน้าต่างที่เก็บได้คือ  " & $winname & @CRLF & @CRLF & "คุณต้องดูด้วยว่าชื่อหน้าต่างที่เก็บมาใช่ชื่อหน้าต่างไฟล์หรือปล่าว ถ้าไม่ใช่แสดงว่าคุณFocusผิดหน้าต่างและแน่นอนจะเกิดความผิดพลาดในขั้นตอนต่อๆไป")
   EndIf

   $text = ControlGetText($winname, "", "DirectUIHWND3") ; ดึงtextจากช่องaddressbar
   If $text = "" Then
      MsgBox(0, "เก็บtextจากaddressล้มเหลว", "ปัญหาอาจเกิดจากชื่อclassผิด หรือ คุณไม่ได้Focusไปที่หน้าต่างไฟล์ก่อนกดHotKey spacebar")
      Exit
   Else
      MsgBox(0, "เก็บtextจากaddressสำเร็จ", "textที่เก็บมาได้คือ " & $text)
   EndIf

   $dir = StringTrimLeft($text, 9) ; ตัดอักษร9ตัวแรกออก (ต้องการตัดคำว่า "Address: " ทิ้ง)
   MsgBox(0, "", "ผลจากการตัดออกแล้วเหลือเป็น " & $dir & @CRLF & @CRLF & "คุณต้องดูว่าการตัดคำว่าAddress: ออกหมดหรือตัดออกเกินไปหรือไม่ ถ้าตัดออกไม่หมด หรือตัดออกเกินไปแม้ตัวเดียวขั้นตอนต่อไปจะผิดพลาด")

   $i = FileCopy(@WindowsDir & "\media\tada.wav", $dir, 1) ;copy ไฟล์ชื่อ tada.wav ไปยังโฟลเดอร์ที่เปิดไว้ (เลข1=เขียนทับหากมีไฟล์อยู่แล้ว 0=ไม่เขียนทับไฟล์เดิม)
   If $i = 0 Then
      MsgBox(0, "", "ถ้าคุณเห็นหน้าต่างนี้แสดงว่า การcopyผิดพลาด อาจเกิดจากกำหนดไฟล์ต้นทาง/ปลายทางผิด" & @CRLF & "วิธีแก้ปัญหาคือ คุณต้องระบุไฟล์ต้นทางให้ถูกต้อง และดูให้แน่ใจว่าในขั้นตอนตัดอักษร ตัดtextที่ไม่ต้องการออกหมดไม่ขาดและไม่เกิน")
      Exit
   Else
      MsgBox(0, "", "Copy ไฟล์สำเร็จเรียบร้อย")
   EndIf

EndFunc
ลองรันสคริปนี้ดู มันอาจช่วยให้รู้ว่าทำพลาดขัั้นตอนไหน

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


จำนวนข้อความ : 17
ความนิยม : 0
เข้าร่วมเมื่อ : 17/04/2015

Re: ขอถามเรื่องสร้าง Hotkey ไว้ก็อปไฟล์

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

thunmor พิมพ์ว่า:เวลาเขียนสคริปคุณต้องรู้วิธีหาข้อผิดพลาดด้วย ว่าผิดพลาดในขั้นตอนไหนเพื่อจะได้แก้ให้ถูก เป็นการยากที่ผมเดาได้ว่าคุณทำพลาดขั้นตอนไหน
Code:
HotKeySet("{SPACE}", "test") ; ใช้spacebar เป็นHotKey

While 1
   Sleep(1000)
WEnd

Func test()

   $winname = WinGetTitle("[ACTIVE]") ; ดึงชื่อหน้าต่างที่ACTIVE
   If $winname = "" Then
      MsgBox(0, "เก็บชื่อหน้าต่างล้มเหลว", "ไม่พบหน้าต่าง")
      Exit
   Else
      MsgBox(0, "เก็บชื่อหน้าต่างสำเร็จ", "ชื่อหน้าต่างที่เก็บได้คือ  " & $winname & @CRLF & @CRLF & "คุณต้องดูด้วยว่าชื่อหน้าต่างที่เก็บมาใช่ชื่อหน้าต่างไฟล์หรือปล่าว ถ้าไม่ใช่แสดงว่าคุณFocusผิดหน้าต่างและแน่นอนจะเกิดความผิดพลาดในขั้นตอนต่อๆไป")
   EndIf

   $text = ControlGetText($winname, "", "DirectUIHWND3") ; ดึงtextจากช่องaddressbar
   If $text = "" Then
      MsgBox(0, "เก็บtextจากaddressล้มเหลว", "ปัญหาอาจเกิดจากชื่อclassผิด หรือ คุณไม่ได้Focusไปที่หน้าต่างไฟล์ก่อนกดHotKey spacebar")
      Exit
   Else
      MsgBox(0, "เก็บtextจากaddressสำเร็จ", "textที่เก็บมาได้คือ " & $text)
   EndIf

   $dir = StringTrimLeft($text, 9) ; ตัดอักษร9ตัวแรกออก (ต้องการตัดคำว่า "Address: " ทิ้ง)
   MsgBox(0, "", "ผลจากการตัดออกแล้วเหลือเป็น " & $dir & @CRLF & @CRLF & "คุณต้องดูว่าการตัดคำว่าAddress: ออกหมดหรือตัดออกเกินไปหรือไม่ ถ้าตัดออกไม่หมด หรือตัดออกเกินไปแม้ตัวเดียวขั้นตอนต่อไปจะผิดพลาด")

   $i = FileCopy(@WindowsDir & "\media\tada.wav", $dir, 1) ;copy ไฟล์ชื่อ tada.wav ไปยังโฟลเดอร์ที่เปิดไว้ (เลข1=เขียนทับหากมีไฟล์อยู่แล้ว 0=ไม่เขียนทับไฟล์เดิม)
   If $i = 0 Then
      MsgBox(0, "", "ถ้าคุณเห็นหน้าต่างนี้แสดงว่า การcopyผิดพลาด อาจเกิดจากกำหนดไฟล์ต้นทาง/ปลายทางผิด" & @CRLF & "วิธีแก้ปัญหาคือ คุณต้องระบุไฟล์ต้นทางให้ถูกต้อง และดูให้แน่ใจว่าในขั้นตอนตัดอักษร ตัดtextที่ไม่ต้องการออกหมดไม่ขาดและไม่เกิน")
      Exit
   Else

      MsgBox(0, "", "Copy ไฟล์สำเร็จเรียบร้อย")
   EndIf

EndFunc
ลองรันสคริปนี้ดู มันอาจช่วยให้รู้ว่าทำพลาดขัั้นตอนไหน

ได้แล้วครับ ขอบคุณมากๆๆๆๆๆๆๆๆๆๆๆ em238 em238 em238

    เวลาขณะนี้ 26/09/17, 05:52 pm