dll封装的模态窗体Windows任务栏不显示,而非模态窗体不能截获,怎么办?

xinghesnake 2008-03-25 02:11:13
本人自己做了一个ActiveX Dll文件,里面含有窗体Form1,现另做一个EXE文件调用此Dll并显示Form1。但是遇到如下难题:

如果用Form1.show 0 方式加载Dll里的Form1,运行Exe后窗体一闪即逝,程序认为Exe是Form1的父级控件,随着Exe的运行完,窗体也被卸载了
如果用Form1.show 1 方式加载Dll里的Form1,窗体能成功被截获,但是任务栏里不显示窗体按钮,不方便用户操作

现征求大家帮忙,寻找既能正常显示窗体,又能在任务栏里有窗体按钮的方法,多谢!在线等。。。。。。
...全文
32 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Sandrer 2008-03-27
[Quote=引用楼主 xinghesnake 的帖子:]
如果用Form1.show 0 方式加载Dll里的Form1,运行Exe后窗体一闪即逝,程序认为Exe是Form1的父级控件,随着Exe的运行完,窗体也被卸载了
[/Quote]

看你的意思,好象是在Exe调用Dll中的窗体后,Exe立刻退出让Dll单独运行?
你这个又不是标准DLL,怎么可能独立运行?
再说了,你的代码中也不知道有没有进行HOOK
回复
xinghesnake 2008-03-26
自己顶一下,盼望有回复啦!
回复
xinghesnake 2008-03-25
楼上的高手,用ActivexEXE既能调用其窗体,又能当EXE直接运行,不过为了由于已经有了一个引导用的EXE文件,不希望再用第二个可执行文件了,我还是希望做成DLL,望大家能再给我出出主意
回复
CathySun118 2008-03-25
ActiveX Dll改成进程外的ActiveX Exe
回复
xinghesnake 2008-03-25
恩,谢谢楼上的朋友,不过需要VB的解决方法啦,在baidu上搜了半天也没有......
回复
这方法在VC中倒是成熟的,就是VB中不知道是否可用,VC中用CoCreateInstance来操作CLSID_TaskbarList,可以方便的操作,使自己的程序在任务栏中出现多个按钮。不管是什么样的窗体,都可以。

void
showintaskbar( HWND hwnd, int bshow )
{
HRESULT hr;
ITaskbarList* pTaskbarList;

hr = CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_ITaskbarList, ( void** )&pTaskbarList );

pTaskbarList->HrInit( );

if( bshow )
{
pTaskbarList->AddTab( hwnd );
}
else
{
pTaskbarList->DeleteTab( hwnd );
}

pTaskbarList->Release();
}


回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7491

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2008-03-25 02:11
社区公告
暂无公告