แต่ยังไงก็ตามวิธีนี้คุณต้องดัก event mouse move เสมอ หากมีการใช้คีย์บอร์ดในการเลื่อน menu ล่ะก็อาจจะต้องใช้ function GetCursorPos (ผมไม่เคยใช้กับ menu นะไม่รู้ใช้ได้ไหม - -!)
แล้วจะเป็นไปได้ไหมครับ ถ้าเกิดผมอยากจะดู source code ของ context menu ต่างๆ ของ windows explorer มันจะมีให้ดูไหมครับเนี่ย แบบว่าอยากจะดึงค่าอะไรบางอย่างของมันมาใช้ซักหน่อยอ่ะครับ ^^
คงต้องใช้วิธี hook window เอาล่ะมั้งครั้ง แล้วก็คอยดัก event ของ window นั้น แต่การที่จะ hook ได้คุณต้องสร้าง dll (native dll นะครับ) ขึ้นมาเพื่อใช้สำหรับ hook
หรือไม่ก็สร้างเมนูใหม่ขึ้นมาเลย
ตาม link นี้จะเป็นการสร้าง Shell Extension เพื่อ Add menu เพิ่มเข้าไปนะครับ
http://blogs.msdn.com/b/codefx/archive/2010/09/14/writing-windows-shell-extension-with-net-framework-4-c-vb-net-part-1.aspx
แล้วคุณก็ใช้ function ของ winapi ที่ชื่อ SendMessage เพื่อส่งคำสั่ง refresh อีกที แล้วค่อยทำ process ที่คุณต้องการ
ขอบคุณมากครับ
แล้วมันพอจะมีวิธีแบบว่า เทียบ Text จากเมนูเลยได้ไหมครับ..
อ่าจะเอาแบบนั้นเลยเหรอครับ
ผมจำได้ว่ามีโปรแกรม dictionary ของไทยโปรแกรมนึงสามารถอ่านศัพท์จาก lable button menu ต่างๆบนหน้่าจอได้โดยการเอา mouse ไปชี้
เท่าที่ผมลองค้นหาดูมันก็คงใช้ function ใน winapi ชื่อ WindowFromPoint และ ChildWindowFromPoint ในการดึงค่า hwnd (window handler)
และขั้นตอนหลังจากนี้ ผมไม่รู้ครับ เพราะผมไม่เคยทำการดึง text ออกมาจาก popupmenu (- -!)
ผมเดาเอาว่าคุณควรใช้ function GetSystemMenu และ GetMenuItemInfo เพื่อดึงข้อมูลของ popupmenu ออกมา
หรืออาจจะใช้ EnumChildWindows เพื่อดึง child window ออกมาแล้วใช้ GetWindowText เพื่อดึง text ของmenu ออกมา (รึเปล่า)
แต่ยังไงก็ตามวิธีนี้คุณต้องดัก event mouse move เสมอ หากมีการใช้คีย์บอร์ดในการเลื่อน menu ล่ะก็อาจจะต้องใช้ function GetCursorPos (ผมไม่เคยใช้กับ menu นะไม่รู้ใช้ได้ไหม - -!)
ขอบคุณมากๆอีกครั้งคร๊าบบบ
แล้วจะเป็นไปได้ไหมครับ ถ้าเกิดผมอยากจะดู source code ของ context menu ต่างๆ ของ windows explorer มันจะมีให้ดูไหมครับเนี่ย แบบว่าอยากจะดึงค่าอะไรบางอย่างของมันมาใช้ซักหน่อยอ่ะครับ ^^