我想编一个DLL,能用VB实现的,还是能象标准API一样调用DLL内的函数。这个方法网上已经有介绍了,就是VB实现能导出的DLL。但现在有二个问题无法实现:
1、在调用EXE退出后后DLL能继续运行,直到定时器触发后再退出。
2、我在activex DLL中有一个窗体,窗体中有一个定时器,到时能自动退出。用不导出函数的情况下,用导入DLL能调用函数,让窗体显示,并退出。但用导出函数调用时,窗体不能出现。
请问如何实现?用导出的函数调用DLL中的窗体?

解决方案 »

  1.   

    不能,除非把DLL注入到别的进程中。。
      

  2.   

    由于我的LINK.EXE可能有问题。
    调用:"D:\Program Files\Microsoft Visual Studio\VB98\Link2.exe" "E:\Project\Temp\DLL\新建文件夹\Class1.obj" "E:\Project\Temp\DLL\新建文件夹\Module1.obj" "E:\Project\Temp\DLL\新建文件夹\Project1.obj" "D:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:__vbaS /EXPORT:mathadd /OUT:"E:\Project\Temp\DLL\新建文件夹\Math.dll" /BASE:0x11000000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /Dll /INCREMENTAL:NO /OPT:REF /MERGE:.rdata=.text /IGNORE:4078>Output.txt
    pause
    结果为: LINK2 : fatal error LNK1181: cannot open input file "E:\Project\Temp\DLL\新建文件夹\Project1.obj"无法帮你看看了。
      

  3.   

    可以的。     Do While GetMessage(lpMsg, 0&, 0&, 0&)
            TranslateMessage lpMsg
            DispatchMessage lpMsg
            If 条件 = True Then PostQuitMessage 0&  '退出进程
         Loop
    你用这个来保证实例的运行就行了。
      

  4.   

    dll要有宿主的,宿主就是他的载体,载体没了他还怎么活?
      

  5.   

    赞同!能否调用系统的RUNDLL做宿主.
      

  6.   

    其实我就想在程序退出后,DLL能够在四十分钟后执行一个过程,然后退出,当然DLL能够注入在其他程序中,比如explorer.exe
      

  7.   

    所以,谁指导一下,如何写一个DLL,然后注入explorer.exe。这个DLL,最好是vb6的,最好是可导出的,因为否则调用程序退出后,DLL可能也退出了。DLL中能够支持定时调用本身中的一段过程,然后退出。
      

  8.   

    DLL是动态链接库,EXE都没了,谁来链接?你再编写一个EXE邑!
      

  9.   

    搂住就让你的Exe晚40分钟再退出不就行了?
      

  10.   

    修改注册表,dll注入explorer.exe中,40分钟时,执行过程后再改回注册表
      

  11.   

    dll注入可以有很多途径吧,不一定就得是explorer,楼主在网上找找看吧
      

  12.   

    不赞成使用VB来写标准DLL,如果非要使用VB来写,那就尽量不使用UI。
      

  13.   

    3楼的
    ooohooo
     
    (ooohooo) 
    正解,有人调用那个DLL即可