Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > ###SendKeys.Send() กับ SendKeys.SendWait() มันต่างกันยังไงหรอครับ



 

###SendKeys.Send() กับ SendKeys.SendWait() มันต่างกันยังไงหรอครับ

 



Topic : 079667

Guest




คือผมไม่ได้ต้องการที่จะกำหนดให้มันไปทำงานที่โปรแกรมใดโปรแกรมหนึ่งอ่ะครับ แต่ให้ทำมันหมดเลย เช่นตอนกดปุ่ม A(Hook Keyboard) ก็สั่งให้มันกดปุ่ม B ด้วย อะไรแบบนี้อ่ะครับ พอลองใช้ SendKeys.Send() ดันขึ้น

SendKeys cannot run inside this application because the application is not handling Windows messages. Either change the application to handle messages, or use the SendKeys.SendWait method.

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

แต่พอผมใช้ SendKeys.SendWait() ดันใช้ได้ซะงั้น ผมเลยอยากทราบครับว่า SendKeys.Send() กับ SendKeys.SendWait() มันต่างกันยังไงหรอครับ แล้วในกรณีของผมควรจะใช้ตัวไหนหรอครับ



Tag : .NET, C#, VS 2008 (.NET 3.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-06-11 20:12:09 By : neww View : 2754 Reply : 6
 

 

No. 1



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Hi5

SendKeys.SendWait() แค่อ่านชื่อ ฟังชั่น ก็รู้แล้วว่า มันมีการรอให้พร้อมก่อนแล้วค่อยส่ง
SendKeys.Send() เป็นการบ้งคับให้ส่งข้อมูลครับ

คิดว่าน่ะ รอผู้รู้มาตอบแล้วกัน






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-11 21:21:32 By : dekkuza
 


 

No. 2

Guest


ตอบความคิดเห็นที่ : 1 เขียนโดย : dekkuza เมื่อวันที่ 2012-06-11 21:21:32
รายละเอียดของการตอบ ::
นั่นแหละครับ ผมไม่เข้าใจว่ามันรออะไรอ่ะสิครับ สมมุติว่าผมจะทำให้ปุ่ม Ctrl เป็นปุ่ม PrintScreen เงี้ยอ่ะครับ ผมใช้ SendKeys.SendWait() ไปเรียกปุ่ม PrintScreen ได้เลย เมื่อมีการกดปุ่ม Ctrl แต่พอไปเปลี่ยนคำสั่งเป็น SendKeys.Send() มันก็ดันขึ้น

Code
SendKeys cannot run inside this application because the application is not handling Windows messages. Either change the application to handle messages, or use the SendKeys.SendWait method.


มันก็อาจจะเป็นเพราะผมไม่ได้กำหนดให้มันทำงานกับโปรแกรมแบบเฉพาะเจาะจงหล่ะมั้งครับ(เดาเอา) ก็เพราะว่าปุ่ม PrintScreen มันต้องทำงานได้ตลอดอยู่แล้ว ไม่ว่าจะใช้โปรแกรมอะไร ความต้องการผมมันเป็นอย่างเงี้ยอ่ะครับ แต่กลัวใช้มันไปแบบไม่ค่อยเข้าใจว่ามันต่างกันยังไง กลัวมันจะไปทำอะไรที่ผมไม่รู้อ่ะสิครับ อิอิ^^

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-11 22:00:33 By : จขกท
 

 

No. 3



โพสกระทู้ ( 100 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ถ้าเขียนโปรแกรมแบบ multithreading หรือใช้พวก background worker
ต้องใช้ sendwait() เท่านั้น

ถ้าเขียนแบบปรกติใช้ Send() หรือ sendwait() ก็ได้ครับ

ส่วนรายละเอียดการทำงานเชิงลึก คุณ PaPaSEK อธิบายใว้แล้วที่
http://www.blognone.com/node/33232
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-12 13:10:11 By : SandKing
 


 

No. 4

Guest


ตอบความคิดเห็นที่ : 3 เขียนโดย : SandKing เมื่อวันที่ 2012-06-12 13:10:11
รายละเอียดของการตอบ ::
ขอบคุณมากครับผม แล้วในกรณีของผมอ่ะครับ ความต้องการของผมคือ ต้องการที่จะเรียกใช้ปุ่ม PrintScreen ตอนที่กดปุ่ม Ctrl

ผมก็เลยใช้ Hook Keyboard ไปดักจับการกดปุ่ม Ctrl แล้วให้มันไปทำ SendKeys.SendWait("{PRTSC}");
คือมันก็ทำได้อย่างที่ผมต้องการแล้วหล่ะครับ แต่ผมสงสัยตรงคำว่า wait อ่ะครับ กลัวมันไปอะไรเกินจากที่ผมต้องการอ่ะสิครับ

เลยอยากถามครับว่า ผมทำแบบนี้ถูกต้องและมันไม่ได้ไปทำอะไรเกินความต้องการของผมแล้วใช่ไหมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-12 15:41:47 By : จขกท
 


 

No. 5



โพสกระทู้ ( 100 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

ปกติเขียนพวก keylogger แบบนี้จะใช้วิธีแบบนี้
1. เปิด thread
2. ใน thread เขียนลูปอมตะ ประเภท while true / go to
3. ในลูปเรียกฟังก์ชัน getAsyncKeystate
4. ตรวจสอบ key ที่ได้ว่าเป็นปุ่ม Ctrl รึเปล่าถ้าใช่ก็ sendkey printscreen

ผมไม่ค่อยแน่ใจว่าฟังก์ชัน hook keyboard ของคุณมีการเปิด thread รึเปล่า
(ซึ่งปกติควรจะมี) ถ้ามีก็ต้องใช้ sendwait อย่างเดียวครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-12 20:40:23 By : SandKing
 


 

No. 6

Guest


ตอบความคิดเห็นที่ : 5 เขียนโดย : SandKing เมื่อวันที่ 2012-06-12 20:40:23
รายละเอียดของการตอบ ::
ผมยังไม่ได้ใช้ thread อ่ะครับ ว่าจะทดสอบการทำงานของมันดูก่อน แล้วตอนนี้ผมก็ได้พบอะไรบางอย่างจากการทดสอบการใช้งาน SendKeys.Send() กับ SendKeys.SendWait() อย่างง่ายๆ เพราะผมหล่ะ งง สุดๆว่า ทำไมตัวอย่างมากมายจากใน internet มันดันทำได้แบบชิวๆ แต่ทำไมผมก็ดูแล้วดูอีก มันก็ทำไม่ได้ ผมเลยลองสร้างปุ่มกดเรียก SendKeys.Send("{PRTSC}") ไปเลย ระหว่าง WinForm กับ WPF เริ่มต้นด้วย WinForm มันก็ทำได้แบบชิวๆ ต่อมาก็เลยลองกับ WPF ดูบ้าง ชัดเจนเลยครับ มันทำไม่ได้ มันขึ้น

SendKeys cannot run inside this application because the application is not handling Windows messages. Either change the application to handle messages, or use the SendKeys.SendWait method.

สรุปคือใน WPF มันเรียกใช้ SendKeys.Send() แบบตรงๆเหมือน WinForm ไม่ได้แน่นอน ส่วนมันจะมีวิธีทำให้ใช้ได้หรือเปล่า อันนี้ผมไม่รู้ละ อิอิ

พอเรื่องมันเป็นแบบนี้ สรุปคือเอาง่ายๆและทำได้แน่นอนใน WPF ก็ใช้ SendWait() ไปเลย ผมเลยอยากรู้ครับว่า ในกรณีของผมนี้ผมเอา SendWait() มาใช้แทน Send() ได้เลยใช่หรือเปล่าหรอครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-12 21:54:21 By : จขกท
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ###SendKeys.Send() กับ SendKeys.SendWait() มันต่างกันยังไงหรอครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่