mirror of
https://github.com/reactos/reactos.git
synced 2025-04-21 04:37:15 +00:00
cleanup of latest RegisterShellHookWindow() changes
svn path=/trunk/; revision=14182
This commit is contained in:
parent
846dc1aebe
commit
a5b6da0234
2 changed files with 22 additions and 32 deletions
|
@ -53,29 +53,20 @@ TaskBarMap::~TaskBarMap()
|
||||||
|
|
||||||
|
|
||||||
TaskBar::TaskBar(HWND hwnd)
|
TaskBar::TaskBar(HWND hwnd)
|
||||||
: super(hwnd)
|
: super(hwnd),
|
||||||
|
WM_SHELLHOOK(RegisterWindowMessage(TEXT("SHELLHOOK")))
|
||||||
{
|
{
|
||||||
HMODULE Module;
|
|
||||||
_last_btn_width = 0;
|
_last_btn_width = 0;
|
||||||
|
|
||||||
Module = LoadLibraryA("User32.dll");
|
|
||||||
if (Module && GetProcAddress(Module, "RegisterShellHookWindow")) {
|
|
||||||
_HasShellHook = TRUE;
|
|
||||||
} else {
|
|
||||||
_HasShellHook = FALSE;
|
|
||||||
if (Module)
|
|
||||||
FreeLibrary(Module);
|
|
||||||
}
|
|
||||||
LOG (_HasShellHook ? L"Has shell hooks.\n" : L"Does not have shell hooks.\n");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskBar::~TaskBar()
|
TaskBar::~TaskBar()
|
||||||
{
|
{
|
||||||
if (!_HasShellHook)
|
DynamicFct<BOOL (WINAPI*)(HWND hwnd)> DeregisterShellHookWindow(TEXT("user32"), "DeregisterShellHookWindow");
|
||||||
KillTimer(_hwnd, 0);
|
|
||||||
|
|
||||||
//DeinstallShellHook();
|
if (DeregisterShellHookWindow)
|
||||||
|
(*DeregisterShellHookWindow)(_hwnd);
|
||||||
|
else
|
||||||
|
KillTimer(_hwnd, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
HWND TaskBar::Create(HWND hwndParent)
|
HWND TaskBar::Create(HWND hwndParent)
|
||||||
|
@ -108,26 +99,23 @@ LRESULT TaskBar::Init(LPCREATESTRUCT pcs)
|
||||||
|
|
||||||
_next_id = IDC_FIRST_APP;
|
_next_id = IDC_FIRST_APP;
|
||||||
|
|
||||||
//InstallShellHook(_hwnd, PM_SHELLHOOK_NOTIFY);
|
DynamicFct<BOOL (WINAPI*)(HWND hwnd)> RegisterShellHookWindow(TEXT("user32"), "RegisterShellHookWindow");
|
||||||
|
|
||||||
|
if (RegisterShellHookWindow) {
|
||||||
|
LOG(TEXT("Using shell hooks for notification of shell events."));
|
||||||
|
(*RegisterShellHookWindow)(_hwnd);
|
||||||
|
} else {
|
||||||
|
LOG(TEXT("Shell hooks not available."));
|
||||||
|
SetTimer(_hwnd, 0, 200, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
Refresh();
|
Refresh();
|
||||||
|
|
||||||
if (_HasShellHook)
|
|
||||||
RegisterShellHookWindow(_hwnd);
|
|
||||||
else
|
|
||||||
SetTimer(_hwnd, 0, 200, NULL);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT TaskBar::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
LRESULT TaskBar::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||||
{
|
{
|
||||||
static UINT ShellHookNmsg = 0;
|
|
||||||
|
|
||||||
if (!ShellHookNmsg) {
|
|
||||||
ShellHookNmsg = RegisterWindowMessage(TEXT("SHELLHOOK"));
|
|
||||||
LOG (FmtString(TEXT("Nmsg == %#x"), ShellHookNmsg));
|
|
||||||
}
|
|
||||||
switch(nmsg) {
|
switch(nmsg) {
|
||||||
case WM_SIZE:
|
case WM_SIZE:
|
||||||
SendMessage(_htoolbar, WM_SIZE, 0, 0);
|
SendMessage(_htoolbar, WM_SIZE, 0, 0);
|
||||||
|
@ -167,9 +155,10 @@ LRESULT TaskBar::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
|
||||||
return (LRESULT)(HWND)_last_foreground_wnd;
|
return (LRESULT)(HWND)_last_foreground_wnd;
|
||||||
|
|
||||||
default: def:
|
default: def:
|
||||||
if (nmsg == RegisterWindowMessage(TEXT("SHELLHOOK"))) {
|
if (nmsg == WM_SHELLHOOK) {
|
||||||
LOG(FmtString(TEXT("SHELLHOOK %x"), wparam));
|
LOG(FmtString(TEXT("SHELLHOOK %x"), wparam));
|
||||||
switch (wparam) {
|
|
||||||
|
switch(wparam) {
|
||||||
case HSHELL_WINDOWCREATED:
|
case HSHELL_WINDOWCREATED:
|
||||||
case HSHELL_WINDOWDESTROYED:
|
case HSHELL_WINDOWDESTROYED:
|
||||||
case HSHELL_WINDOWACTIVATED:
|
case HSHELL_WINDOWACTIVATED:
|
||||||
|
|
|
@ -84,8 +84,9 @@ protected:
|
||||||
TaskBarMap _map;
|
TaskBarMap _map;
|
||||||
int _next_id;
|
int _next_id;
|
||||||
WindowHandle _last_foreground_wnd;
|
WindowHandle _last_foreground_wnd;
|
||||||
int _last_btn_width;
|
int _last_btn_width;
|
||||||
BOOL _HasShellHook;
|
|
||||||
|
const UINT WM_SHELLHOOK;
|
||||||
|
|
||||||
LRESULT Init(LPCREATESTRUCT pcs);
|
LRESULT Init(LPCREATESTRUCT pcs);
|
||||||
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
|
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
|
||||||
|
|
Loading…
Reference in a new issue