在DLL中打开的表单在任务管理器中显示,如何隐藏?

时间:2012-09-25 17:21:22

标签: delphi c++builder vcl c++builder-xe2

我有很多通过COM在XE2 DLL中启动的表单。调用者是VC 6应用程序。

每个打开的表单都显示为TaskManager中的应用程序,我不希望这样,这些窗口只是对话框,而不是应用程序。

我可以使用一个设置来不显示这些窗口吗?

我正在使用C ++ Builder XE2,但Delphi解决方案可能对我有用。

2 个答案:

答案 0 :(得分:3)

TaskManager显示顶级无主窗口。您的DLL窗口没有指定任何所有者窗口。这就是他们出现的原因。

答案 1 :(得分:1)

将TForm.BorderStyle设置为bsToolWindow或bsSizeToolWin。 这将导致Win32窗口样式中包含WS_EX_TOOLWINDOW

如果您覆盖CreateParams方法,也可以手动设置。

我还认为要在CreateParams中设置WS_POPUPWINDOW,它的描述建议它。

最后但并非最不重要的是,我尝试从C ++应用程序传递main window handle,然后将其作为parent hwnd分配给对话框窗口,如果这些窗口不是模态的。