コード例 #1
0
BOOL DeskBandWindow::CreateDeskBand(HWND hParentWnd, HINSTANCE hInstance, LPVOID pData)
{
	    WNDCLASS wc;
		UnregisterClass(DB_CLASS_NAME,NULL);
		if (!GetClassInfo(hInstance, DB_CLASS_NAME, &wc))
		{
			wc = { 0 };
			wc.style = CS_HREDRAW | CS_VREDRAW;
			wc.hCursor = LoadCursor(NULL, IDC_ARROW);
			wc.hInstance = hInstance;
			wc.lpfnWndProc = WndProc;
			wc.lpszClassName = DB_CLASS_NAME;
			wc.hbrBackground = (HBRUSH)0;
			if (!RegisterClass(&wc))
				return FALSE;
		}
		mHwnd = CreateWindowEx(
			0,
			DB_CLASS_NAME,
			NULL,
			WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
			0,//rc.left,
			0,//rc.top,
			30,//rc.right - rc.left,
			24,//rc.bottom - rc.top,
			hParentWnd,
			NULL,
			hInstance,
			pData);
		mHookHwnd = mHwnd;
		Shell = RegisterWindowMessage(TEXT("SHELLHOOK"));
		RegisterShellHookWindow(mHookHwnd);
	return (NULL != mHwnd);
};
コード例 #2
0
ファイル: taskBarApp.cpp プロジェクト: akhildabral/AppGrabber
BOOL SetShellHook(HWND hwndHook)
{
    WM_SHELLHOOKMESSAGE = RegisterWindowMessage(TEXT("SHELLHOOK"));
    if (WM_SHELLHOOKMESSAGE) {
	if (RegisterShellHookWindow(hwndHook)) {
	    return TRUE;
	}
    }
    return FALSE;
}
コード例 #3
0
/*
 * Callback method that creates the hidden window on initialization to receive
 * any WM_HOTKEY messages and process them.
 */
void JIntellitypeHandler::doInitialize()
{
	// Register window class
	WNDCLASSEX l_Class;
	l_Class.cbSize = sizeof( l_Class );
	l_Class.style = CS_HREDRAW | CS_VREDRAW;
	l_Class.lpszClassName = TEXT( "JIntellitypeHandlerClass" );
	l_Class.lpfnWndProc = WndProc;
	l_Class.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
	l_Class.hCursor = NULL;
	l_Class.hIcon = NULL;
	l_Class.hIconSm = NULL;
	l_Class.lpszMenuName = NULL;
	l_Class.cbClsExtra = 0;
	l_Class.cbWndExtra = 0;
	l_Class.hInstance = m_instance;

	if( !RegisterClassEx( &l_Class ) )
		return;

	// Create window
	m_window = CreateWindow
	(
		TEXT( "JIntellitypeHandlerClass" ),
		TEXT( "JIntellitypeHandler" ),
		WS_OVERLAPPEDWINDOW,
		0, 0, 0, 0,
		NULL,
		NULL,
		m_instance,
		NULL
	);

	if( !m_window )
		return;

	 //Set pointer to this object inside the Window's USERDATA section
	SetWindowLong( m_window, GWL_USERDATA, (LONG) this );
	
	// hide the window
	ShowWindow(m_window, SW_HIDE);
	UpdateWindow(m_window);
	
	//register this window as a shell hook to intercept WM_APPCOMMAND messages
	WM_SHELLHOOK = RegisterWindowMessage(TEXT("SHELLHOOK"));
	BOOL (__stdcall *RegisterShellHookWindow)(HWND) = NULL;
	RegisterShellHookWindow = (BOOL (__stdcall *)(HWND))GetProcAddress(GetModuleHandle("USER32.DLL"), "RegisterShellHookWindow");
	
	//make sure it worked
	if (!RegisterShellHookWindow(m_window)) {
        // throw exception
		jclass JIntellitypeException = g_JIntellitypeThread.m_env->FindClass("com/melloware/jintellitype/JIntellitypeException");
        g_JIntellitypeThread.m_env->ThrowNew(JIntellitypeException,"Could not register window as a shell hook window.");                                     
    }
}
コード例 #4
0
ファイル: ShellHook.cpp プロジェクト: gaozan198912/myproject
DWORD WINAPI ShellHookThread(PVOID pParam)
{

	HWND hWnd = CreateWindowW(L"Button", NULL, WS_OVERLAPPED,0, 0, 10, 10, HWND_MESSAGE, NULL, NULL, NULL);

#if defined(WIN64) || defined(_WIN64)
	SetWindowLongPtrW(hWnd,GWLP_WNDPROC,(LONG)ShellHookWndProc);
#else
	SetWindowLongW(hWnd,GWL_WNDPROC,(LONG)ShellHookWndProc);
#endif
	BOOL bRes = RegisterShellHookWindow(hWnd);

	MSG msg;
	// Ö÷ÏûϢѭ»·:
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return 0;
}
コード例 #5
0
ファイル: main.cpp プロジェクト: movsb/wndlog
BOOL SetShellHook(HWND hwndHook)    //需要安装钩子的窗口句柄
{
    WM_SHELLHOOKMESSAGE = RegisterWindowMessage("SHELLHOOK");
    return WM_SHELLHOOKMESSAGE && RegisterShellHookWindow(hwndHook);
}