if PCWPSTRUCT(lp)^.message = WM_CREATE then
begin
GetClassName(PCWPSTRUCT(lp)^.hwnd,szClass,MAX_PATH); if szClass = 'TForm2' then
begin
ShowMessage('T');
DESTROYWINDOW(PCWPSTRUCT(lp)^.hwnd); //加上这句出错..是不是窗口未建立?还是怎么了.用CLOSEWINDOW就可以..该用什么关闭它.
end;
end//上面是钩子过程中的一段.
//安装的是WH_CALLWNDPROC类的HOOK.
请问:如何关掉窗口?2.本来用WH_CBT中的HCBT_ACTIVATE捕获后,用SENDMESSAGE(HWND,WM_CLOSE...)
可是有些会有一对话框,询问是否要关闭..?有没有直接关闭,不让询问的..
谢谢...
begin
GetClassName(PCWPSTRUCT(lp)^.hwnd,szClass,MAX_PATH); if szClass = 'TForm2' then
begin
ShowMessage('T');
DESTROYWINDOW(PCWPSTRUCT(lp)^.hwnd); //加上这句出错..是不是窗口未建立?还是怎么了.用CLOSEWINDOW就可以..该用什么关闭它.
end;
end//上面是钩子过程中的一段.
//安装的是WH_CALLWNDPROC类的HOOK.
请问:如何关掉窗口?2.本来用WH_CBT中的HCBT_ACTIVATE捕获后,用SENDMESSAGE(HWND,WM_CLOSE...)
可是有些会有一对话框,询问是否要关闭..?有没有直接关闭,不让询问的..
谢谢...
解决方案 »
- 哪位同仁帮帮小女吧:有人自己编写过画曲线图控件吗?
- SPComm控件在发送十六进制数11的时候会丢失??高手指点啊
- EXE主窗体改变尺寸时,窗体中的Panel也会跟着变(Panel.Align设为了alClient),但其中嵌入的DLL窗体不会跟着变
- 请问有谁知道怎么打开rmf格式的报表文件
- 急!同时查询出明细并分组统计的SQL如何写?
- 高分求一问题!
- 在求解:数据库操作和Fastreport的协调工作问题
- 如何获取网页上的文字信息
- 三个问题
- 在Delphi的类型库中如何引用在另一个类型库中声明的接口?
- SendMessage的问题..有答案立马给100分.
- 通过137端口得到MAC?(求救啊)
ghHook: HHook;function MyCBTHookProc(nCode: Integer; wp: wParam; lp: lParam): LResult; stdcall;
var
H : THandle;
hwndToNewWindow: HWND;
szClass: Array[0..MAX_PATH] Of Char;
szTitle: Array[0..MAX_PATH] Of Char;
dwThreadId,dwProcessId: DWORD;
hProcess: THandle;
begin
Result := 0; if nCode < 0 then
begin
Result:= CallNextHookEx( ghHook, nCode, wP, lP);
exit;
end; if nCode = HCBT_ACTIVATE Then //HCBT_CREATEWND
begin
hwndToNewWindow := HWND(wP);
GetClassName(hwndToNewWindow, szClass, MAX_PATH);
GetWindowText(hwndToNewWindow, szTitle, MAX_PATH); if StrComp(szClass, pchar('Afx:400000:0')) = 0 Then
begin
//杀死该进程
dwThreadId := GetWindowThreadProcessId(hwndToNewWindow,dwProcessId);
hProcess := OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessId);
if (hProcess <> 0) then TerminateProcess(hProcess,0);
end
else
Result:= CallNextHookEx( ghHook, nCode, wP, lP);
end
else
Result:= CallNextHookEx( ghHook, nCode, wP, lP);end;
//----------------------------------------------------------------------------//procedure SetHook;export;
begin
ghHook := SetWindowsHookEx( WH_CBT, MyCBTHookProc, hInstance, 0);
end;
procedure EndHook;export;
begin
UnhookWindowsHookEx( ghHook );
end;procedure HotKeyHookExit;
begin
if ghHook <> 0 then EndHook;
end;
==================
于是找到它的class, Class Name:Afx:400000:0可是QQ那些家伙的Class也是这个..这下连QQ一块被俺杀死了。。这可不行的.
------------------
看来还得发个命令来个强制关闭..大伙有没有什么方法?
这样返回-1一样会创建了窗体了..function MyCBTHookProc(nCode: Integer; wp: wParam; lp: lParam): LResult; stdcall;
var
hwndToNewWindow: HWND;
szClass: Array[0..MAX_PATH] Of Char;
szTitle: Array[0..MAX_PATH] Of Char;
begin
Result := 0; if nCode < 0 then
begin
Result:= CallNextHookEx( ghHook, nCode, wP, lP);
exit;
end; GetClassName(PCWPSTRUCT(lp)^.hwnd,szClass,MAX_PATH); if (PCWPSTRUCT(lp)^.message = WM_CREATE) and (szClass = 'TForm2' ) then
begin
ShowMessage('T');
//DESTROYWINDOW(PCWPSTRUCT(lp)^.hwnd);
//SendMessage(PCWPSTRUCT(lp)^.hwnd,WM_CLOSE,0,0);
// DestroyWindow(PCWPSTRUCT(lp)^.hwnd);
Result := -1; end
else
Result:= CallNextHookEx( ghHook, nCode, wP, lP);end;
//----------------------------------------------------------------------------//procedure SetHook;export;
begin
ghHook := SetWindowsHookEx( WH_CALLWNDPROC, MyCBTHookProc, hInstance, 0);
end;
procedure EndHook;export;
begin
UnhookWindowsHookEx( ghHook );
end;