PDA

View Full Version : อยากทราบวิธีกำหนดhotkey สำหรับโปรแกรมครับ



ar3s
28-07-2004, 10:32 AM
ต้องการกำหนด hotkey สำหรับโปรแกรม เวลาที่เปิดโปรแกรมอยู่ แล้ว switch ไปทำงานโปรแกรมอื่น เมื่อต้องการเรียกใช้โปรแกรมเราให้กดปุ่ม hotkey แล้วจะ switch กลับมาที่โปรแกรมเรา หรือถ้าไม่ใช้ hotkey เรากำหนดให้โปรแกรมเราดักจับการกดปุ่มที่เรากำหนด เมื่อมีการกดปุ่มที่เรากำหนดแล้ว จะ switch กลับมาที่โปรแกรมเรา แบบนี้พอมีวิธีไหมครับ

ar3s
22-08-2004, 11:31 PM
งง... ครับ

คือใช้วิธีการ CaptureKey เพื่อดักจับปุ่มกดหรือเปล่าครับ เมื่อมีการกดปุ่มนั้น ก็ให้โปรแกรมเรา ฺBringToForeground ใช่ไหม
ถ้าแบบนี้ก็พอมีอยู่อะครับ
คือก่อนอื่นก็ต้องดักจับปุ่มกดก่อน
ยกตัวอย่างเช่นต้องการดักจับปุ่มกด ดินสอ+C

ประกาศไว้ใน handle file ว่า
TInt32 iCallBackHandle;

ใน source cpp ในส่วนของ ConstructL
TUint aModifierMask=EModifierShift|EModifierCtrl;
TUint aModifier=EModifierShift;
RWindowGroup iWindowGroup=iCoeEnv->RootWin();
iCallBackHandle = iWindowGroup.CaptureKey(EKeyBackspace,aModifierMask,aModifier));

เมื่อต้องการยกเลิกดักจับ
RWindowGroup iWindowGroup=iCoeEnv->RootWin();
iWindowGroup.CancelCaptureKey(iCallBackHandle);

เมื่อมีการกดปุ่ม แล้วจะไปเรียก funtion OfferKeyEventL มาเองครับ

ผมจำไม่ได้ว่าต้อง include หรือเพิ่ม library อะไรบ้างนะครับ ลองหาเอานะครับ :wob:

ส่วนการทำให้โปรแกรม switch กลับมาง่ายมากๆ
iCoeEnv->RootWin().SetOrdinalPosition(0);
หรือจะใช้วิธีนี้
RWsSession ws;
User::LeaveIfError( ws.Connect() );
TApaTaskList taskList( ws );
TApaTask task = taskList.FindByApp(_L("AppName")); //AppName คือชื่อโปรแกรมเรา
task.BringToForeground();

labyrinth
25-08-2004, 07:27 PM
ถ้างั้นคงต้องให้โปรแกรมเราเริ่มทำงานตั้งแต่เริ่มเปิดเครื่อง
ซึ่งสามารถทำได้โดยใช้ Recognizer
อ่านได้ที่นี่ http://www.newlc.com/article.php3?id_article=221