Salve a tutti, sto provando a gestire i tasti del cellulare e ho trovato questi link utili al mio scopo:

http://msdn.microsoft.com/en-us/library/bb431783.aspx

http://msdn.microsoft.com/en-us/library/ms912123.aspx

ho provato quindi a implementare il seguente codice:

codice:
ON_MESSAGE(WM_HOTKEY, &CTestSerialLibPDADlg::OnHotKey)

void CTestSerialLibPDADlg::SetKeys() {
  
 SendMessage(SHCMBM_OVERRIDEKEY, VK_TTALK, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NODEFAULT |  SHMBOF_NOTIFY)); 
  SendMessage(SHCMBM_OVERRIDEKEY, VK_TEND, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NODEFAULT |  SHMBOF_NOTIFY)); 
  SendMessage(SHCMBM_OVERRIDEKEY, VK_TBACK, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NODEFAULT |  SHMBOF_NOTIFY)); 
  SendMessage(SHCMBM_OVERRIDEKEY, VK_THOME, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NODEFAULT |  SHMBOF_NOTIFY)); 
  SendMessage(SHCMBM_OVERRIDEKEY, VK_TPOWER, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NODEFAULT |  SHMBOF_NOTIFY)); 

}

void CTestSerialLibPDADlg::RestoreKeys() {
  SendMessage(SHCMBM_OVERRIDEKEY, VK_TTALK, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, 0)); 
  SendMessage(SHCMBM_OVERRIDEKEY, VK_TEND, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, 0)); 
  SendMessage(SHCMBM_OVERRIDEKEY, VK_TBACK, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, 0)); 
  SendMessage(SHCMBM_OVERRIDEKEY, VK_THOME, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, 0)); 
  SendMessage(SHCMBM_OVERRIDEKEY, VK_TPOWER, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, 0)); 
}

LRESULT CTestSerialLibPDADlg::OnHotKey(WPARAM wParam, LPARAM lParam) {
   SendDlgItemMessage(IDC_LIST1, LB_RESETCONTENT, 0, 0));
   

   switch (wParam)  {
	 case 0:
	   SendDlgItemMessage(IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) L"TSOFT1 Pressed");
	   break;

     default:
	   SendDlgItemMessage(IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) L"HotKey Pressed");
	   break;
   }
	
UpdateWindow();    
return 0;
}
Con l'idea di evitare che, premendo un tasto (tipo power o la chiamata) durante l'esecuzione dell'applicazione, venga eseguita la funzione del tasto medesimo.
Sembra pero' che la cosa non funzioni a dovere.

Sto provando su un Samsung con Windows mobile 5 e su HTC Touch HD (WinMobile 6.1) e HTC Touch HD2 (WinMobile 6.5) questi ultimi due programmati con Windows Mobile 6.5 Professional.

Quello che succede e' che se premo, ad esempio, il tasto chiamata sembra inattivo pero' la OnHotKey non fa assolutamente nulla, mentre ad esempio il pulsante del power continua a fare quello che fa sempre.
Dove sbaglio?

ciao e grazie
Sandro