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,窗体能成功被截获,但是任务栏里不显示窗体按钮,不方便用户操作

现征求大家帮忙,寻找既能正常显示窗体,又能在任务栏里有窗体按钮的方法,多谢!在线等。。。。。。
...全文
56 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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上搜了半天也没有......
用户 昵称 2008-03-25
  • 打赏
  • 举报
回复
这方法在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();
}


7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧