不显示隐藏窗体的消息框问题
背景:通过代码去读另外一个窗体上(调用的dll)的控件,先去加载那个窗体(dll),但是在那个窗体的create事件里面有消息框提示,而我不需要显示这个消息框,这个怎么去做?
或者有什么好的办法去读取窗体上的控件?
[解决办法]
- Delphi(Pascal) code
var H: HHOOK;function CBTProc( nCode: Integer; wParam: WPARAM; lParam: LPARAM): Integer; stdcall;var c, w: PChar;// array[0..99] of Char;begin if nCode = HCBT_CREATEWND then begin c := PCBTCreateWnd(lParam)^.lpcs^.lpszClass; w := PCBTCreateWnd(lParam)^.lpcs^.lpszName; if lstrcmp(c, 'TMessageForm') = 0 then //ShowMessage方式 begin//如果是消息窗口 PostMessage(wParam, WM_CLOSE, 0, 0);//关闭它 Result := 0; Exit; end; if lstrcmp(w, 'ddd') = 0 then//MessageBox方式 begin//如果是消息窗口 Result := 1;//直接销毁窗口 Exit end; end; Result := CallNextHookEx(H, nCode, wParam, lParam)end;procedure TForm3.Button1Click(Sender: TObject);begin ShowMessage('abc'); //MessageBox(0, 'abc', 'ddd', 0)end;procedure TForm3.Button2Click(Sender: TObject);begin H := SetWindowsHookEx(WH_CBT, @CBTProc, 0, GetCurrentThreadId)end;procedure TForm3.FormDestroy(Sender: TObject);begin if H <> 0 then UnhookWindowsHookEx(H)end;