本人自己做了一个ActiveX Dll文件,里面含有窗体Form1,现另做一个EXE文件调用此Dll并显示Form1。但是遇到如下难题:如果用Form1.show 0 方式加载Dll里的Form1,运行Exe后窗体一闪即逝,程序认为Exe是Form1的父级控件,随着Exe的运行完,窗体也被卸载了
如果用Form1.show 1 方式加载Dll里的Form1,窗体能成功被截获,但是任务栏里不显示窗体按钮,不方便用户操作现征求大家帮忙,寻找既能正常显示窗体,又能在任务栏里有窗体按钮的方法,多谢!在线等

解决方案 »

  1.   

    这方法在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();
    }
      

  2.   

    恩,谢谢楼上的朋友,不过需要VB的解决方法啦,在baidu上搜了半天也没有......
      

  3.   

    ActiveX Dll改成进程外的ActiveX Exe
      

  4.   

    楼上的高手,用ActivexEXE既能调用其窗体,又能当EXE直接运行,不过为了由于已经有了一个引导用的EXE文件,不希望再用第二个可执行文件了,我还是希望做成DLL,望大家能再给我出出主意
      

  5.   


    看你的意思,好象是在Exe调用Dll中的窗体后,Exe立刻退出让Dll单独运行?
    你这个又不是标准DLL,怎么可能独立运行?
    再说了,你的代码中也不知道有没有进行HOOK