마우스 전역후킹(WH_MOUSE_LL)을 설치 후에 윈도우의 시스템버튼(최소화/최대화/닫기)을 누르면 딜레이가 생기는 경우가 있는데 이것을 해결하는 레지스트리 코드입니다.
(저는 XP에서 이 증상이 나오는데 검색을 해보니 Vista 이상의 OS에 대한 레지스트리 팁에 해당 내용이 있네요...)

레지스트리 경로
[HKEY_CURRENT_USER\Control Panel\Desktop]

설정값
(DWORD)LowLevelHooksTimeout=100
(값은 1/1000초 단위로 셋팅)


자세한 내용은 아래 MSDN을 참고하세요.
Posted by Gungume
,
현재 마우스 커서의 상태를 얻는 방법입니다.

뭔가 플래그연산을 통해서 얻을 수 있을 것 같은데 못 찾겠고 일단 아래의 코드를 사용하면 작동합니다.
 
// 상태를 알고 싶은 커서 모양(예:IDC_IBEAM)으로 임시 커서 생성
HCURSOR loadCursor = LoadCursor(NULL, IDC_IBEAM);

// 현재 커서를 얻어 옴
CURSORINFO ci;
ci.cbSize = sizeof(CURSORINFO);
GetCursorInfo(&ci);
			
if( loadCursor == ci.hCursor )
{
	// 조건이 True이면 현재 커서는 IDC_IBEAM
}

참고자료는 아래 사이트에 있는 내용인데 이상하게 전 아래 사이트에 있는 코드로는 작동이 안되더군요.

Posted by Gungume
,

주요 기능과 사용키는 버전2랑 동일합니다.

기존에 MFC에서 만들었던 것을 WIN32 API를 이용해서 만들었고, 불필요한 코드를 제거함으로써 기존 버전보다 조금 가벼워졌을꺼라 생각합니다.

참고로 종료방법은 트레이 아이콘에서 왼쪽 또는 오른쪽 마우스 버튼을 누르시면 종료할 수 있는 메뉴가 나옵니다.

사용 방법은 이전 버전의 글을 참고해주세요.

(사용언어 및 제작툴 : WIN32 API / VS2008)

이전 버전 받기
Posted by Gungume
,
#include <windows.h>
#include "resource.h"

BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{ 
	DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),HWND_DESKTOP,DlgProc);
	return 0;
}

BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
			return TRUE;
		
		case WM_COMMAND:
			switch (LOWORD(wParam))
			{
				case IDOK:
				case IDCANCEL:
					EndDialog(hDlg,0);
					return TRUE;
			}
			break;
	}
	return FALSE;
}

Posted by Gungume
,