запретить перемещать окно с некоторым заголовком - PullRequest
0 голосов
/ 26 ноября 2011

Мне нужно запретить перемещение окна с некоторым заголовком. // Hooks.cpp: определяет экспортируемые функции для приложения DLL. //

#include "stdafx.h"

extern "C" __declspec(dllexport) TCHAR s[50];
extern "C" __declspec(dllexport) HHOOK hHook;
extern "C" __declspec(dllexport) LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam);

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
    return 1;
}

TCHAR s[50];
HHOOK hHook;

LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
//   HDC hdc;
if (nCode < 0)  
    return CallNextHookEx(hHook, nCode, wParam, lParam);

//  hdc = GetDC(hWnd);
CBT_CREATEWND* cbt=(CBT_CREATEWND*)lParam;
if (nCode==HCBT_MOVESIZE)
    if (!lstrcmp(s,cbt->lpcs->lpszName)) return 1; 
return CallNextHookEx(hHook, nCode, wParam, lParam); 
return 0; 
} 

но у меня появляется ошибка при перемещении окна. Когда я меняю свою позицию, она меняется, но тогда у меня появляется ошибка - нарушение прав доступа по адресу 67471040 в модуле Hooks.dll (моя dll). Чтение адреса 00000116

1 Ответ

1 голос
/ 27 ноября 2011

Вы приводите lParam в указатель на CBT_CREATEWND, но это только в случае, если nCode==HCBT_CREATEWND, и это, очевидно, не так.Когда nCode==HCBT_MOVESIZE, то lParam указывает на RECT структуру.

Сначала вы должны обработать HCBT_CREATEWND, отфильтровать его и сохранить соответствующий HWND, чтобы выполнить условие, когда происходит HCBT_MOVESIZE.Это не будет работать, если окно меняет заголовок, однако.

Кстати, вы не можете просто позвонить GetWindowText(), чтобы получить заголовок окна?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...