2008.10.15

˵



һcameraϢ

Ϣͣ
	WM_KEYDOWN:     WM_KEYUP:
Ϣݣ
	 wParam: ֵVK_F1

Ӧþ

    switch (message) 
    {
	case WM_KEYDOWN:
		switch(wParam)
		{
			case VK_F1
				MessageBox (NULL, TEXT VK_F1 camera_key is DOWN!"), TEXT ("kbdtest"), 0);
			break;  
		}
	case WM_KEYUP:
		switch(wParam)
		{
			case VK_F1
				MessageBox (NULL, TEXT VK_F1 camera_key is UP!"), TEXT ("kbdtest"), 0);
			break;  
		}

}	



holdϢ
    900ĶУҪһholdʵĽӿڣwinceУǽĴ޷ðϢһµ
ӿڣ֤ǵǰĽ㣬Ҳܻãhold/ϵ״̬ýӿӿƣMMIͨRegisterWindowMessage()
һڵϢidȻͨDeviceIoControl()idݸholdʱ򣬼˷wm_keydown/
wm_keyupwm_charϢ⣬㲥һϢеĴڣϢ֮ǰMMIϢ

Ϣͣ
    ӦóҪʹRegisterWindowsMessage()ϢIDϢƿ"MMI/HoldKeyNotifyMsgId/Message"ͨ
DeviceIoControl()IDݸϵͳ(PSM1:)

ӦóϢ´

switch(Msg)
{
... ...
case WM_CREATE:
    // get msg id
    g_dwHoldKeyNotifyMsgId = RegisterWindowMessage(TEXT("MMI/HoldKeyNotifyMsgId/Message"))

    // set msg id
    ... ...
    break;
case WM_DESTROY:
    PostQuitMessage(0);
    break;
default:
    if(message == g_dwHoldKeyNotifyMsgId)
    {
	// hold key message comes in.
	break;
    }else{
	 return DefWindowProc(hWnd, message, wParam, lParam);
    }			
}

Ϣݣ

    lParam: ǰholdǱ»ͷţ1--hold£0--holdͷ



ϢIDݸĽӿڣ
dwIoControlCode((DWORD)((0x101<<16) | ((6000+3)<<2)))
/ΪͨRegisterWindowMessage()õϢID
               û


ο£
{
	HANDLE hHandle = NULL;

	hHandle = CreateFile(TEXT("PSM1:"), GENERIC_READ | GENERIC_WRITE, 0,NULL,
		OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL );

	if(hHandle != INVALID_HANDLE_VALUE)
	{
		DeviceIoControl(hHandle, ((DWORD)((0x101<<16) | ((6000+3)<<2))), &g_dwHoldKeyNotifyMsgId, sizeof(DWORD), NULL, 0,
			NULL, NULL);
		CloseHandle(hHandle);
	}
}




ߡػϢ
    ھɵİ汾Уpowerػʵɼɵģ°汾УʵתƵshellɣpower³3룬
㲥һϢϲ㴰ڣǵùػӿڡMMIͨRegisterWindowMessage()һڵϢidȻͨDeviceIoControl()
idݸҪעǣMMIûüϢid͸ʱûͰpower3룬ʱ򣬼ϵͳ
ȡ

Ϣͣ
    ӦóҪʹRegisterWindowsMessage()ϢIDϢƿ"MMI/PowerOffNotifyMsgId/Message"ͨ
DeviceIoControl()IDݸϵͳ(PSM1:)

ӦóϢ´

switch(Msg)
{
... ...
case WM_CREATE:
    // get msg id
    g_dwNotifyMsgId = RegisterWindowMessage(TEXT("MMI/PowerOffNotifyMsgId/Message"))

    // set msg id
    ... ...
    break;
case WM_DESTROY:
    PostQuitMessage(0);
    break;
default:			
    if(message == g_dwNotifyMsgId)
    {
	// hold key message comes in.
	break;
    }else{
	 return DefWindowProc(hWnd, message, wParam, lParam);
    }			
}

Ϣݣ
    wParam: 
    lParam: 



ϢIDݸĽӿڣ
dwIoControlCode((DWORD)((0x101<<16) | ((6000+6)<<2)))
/ΪͨRegisterWindowMessage()õϢID
               û


ο£
{
	HANDLE hHandle = NULL;

	hHandle = CreateFile(TEXT("PSM1:"), GENERIC_READ | GENERIC_WRITE, 0,NULL,
		OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL );

	if(hHandle != INVALID_HANDLE_VALUE)
	{
		DeviceIoControl(hHandle, ((DWORD)((0x101<<16) | ((6000+6)<<2))), &g_dwHoldKeyNotifyMsgId, sizeof(DWORD), NULL, 0,
			NULL, NULL);
		CloseHandle(hHandle);
	}
}
