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

请问:制作ActiveX控件出现的有关问题

2012-03-23 
请教:制作ActiveX控件出现的问题制作的是ActiveX控件,也就是在IE中弹出一个窗口,最终的文件是DLL。在网页中

请教:制作ActiveX控件出现的问题
制作的是ActiveX控件,也就是在IE中弹出一个窗口,最终的文件是DLL。在网页中引用时,窗口能正确弹出,功能也很正常。但是有一个地方不爽,就是该控件窗体和IE在任务栏是两个分开的程序,感觉不是一体的(在控件中我已经用ShowModal显示窗体了),请问各位大侠,有没有方法让它们成为真实的一体?

[解决办法]
showwindow(application.handle,sw_hide);
hide;
[解决办法]
Delphi下让窗口不显示在任务栏的另类方法 (转)
http://blog.csdn.net/tonylk/archive/2005/09/30/492843.aspx

刚才看到了这篇东西《使窗口不在任务栏上显示(利用ITaskbarList接口)》,作者用ITaskList接口实现了隐藏窗口在任务栏按钮的功能,想起我好多年以前做的程序也有这样的功能,但是绝不是用这些接口之类的做的,只是一个API函数就搞定了(好像是SetWindowLong()中传个什么参数吧,真的想不起来了),可惜程序实在是找不到了,当然ITaskbarList的功能要稍许比以前的那个API强一些。觉得挺好玩,就用Delphi重新实现了一遍,把代码贴出来,以便今后做什么程序的时候还可以用。

uses
..., ActiveX;

type
ITaskbarList = interface(IUnknown)
[ '{56FDF344-FD6D-11d0-958A-006097C9A090} ']
function HrInit():HRESULT;stdcall;
function AddTab(hwnd:HWND):HRESULT;stdcall;
function DeleteTab(hwnd:HWND):HRESULT;stdcall;
function ActivateTab(hwnd:HWND):HRESULT;stdcall;
function SetActiveAlt(hwnd:HWND):HRESULT;stdcall;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
hr:HResult;
TaskbarList:ITaskbarList;
const
CLSID_TaskbarList:TGUID= '{56FDF344-FD6D-11d0-958A-006097C9A090} ';
IID_ITaskbarList:TGUID= '{602D4995-B13A-429b-A66E-1935E44F4317} ';
begin
hr:=CoCreateInstance(CLSID_TaskbarList,Nil,CLSCTX_INPROC_SERVER,
IID_ITaskbarList,TaskbarList);
TaskbarList.HrInit();
TaskbarList.DeleteTab(Application.Handle);
end;


这样就可以隐藏Application在Taskbar上的按钮了,但是由于Delphi自己在Taskbar的消息上做了很多处理,所以一旦把主窗口最小化,那个被删除的按钮就又出来了,不太理想。

热点排行