首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

不显示隐藏窗体的消息框有关问题

2012-05-20 
不显示隐藏窗体的消息框问题背景:通过代码去读另外一个窗体上(调用的dll)的控件,先去加载那个窗体(dll),但

不显示隐藏窗体的消息框问题
背景:通过代码去读另外一个窗体上(调用的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; 

热点排行