含有ACTIVEX控件的DLL问题。
我做了一个含有TCPPWEBBROWERS控件的DLL,但生成的DLL却只能使用RUNTIME PACKAGE ,如果不选RUNTIME PACKAGE,则DLL运行出错,而将同样的源码用来生成exe,不选build RUNTIME PACKAGE也可以独立运行。那位知道原因,高分酬谢。
另:可否利用 API 直接调用TCPPWEBBROWERS,并子类化。从而绕过VCL。敬请一并指教。
问题点数:100、回复次数:4Top
1 楼kingcaiyao(aking)回复于 2003-06-03 22:55:24 得分 100
1.如果在dll中编译器一定要求运行期包,这可能是正常的,不过在应用程序中调用这一dll就不应该一定要runtime packages,应该是可以独立运行。
2.在application中,即使用上TCppWebBrowser也可独立运行,而无需Build with runtime package,原因在于TCppWebBorowser这个控件本身就是对Microsoft IWebBrowser2 interface 接口的封装,这个接口的定义位于SHDOCVW.DLL中,shdocvw.dll属于操作Windows操作系统,这就象在程序中使用API函数一样,因此应用程序可以独立运行。
3.TCppWebBrowser是对Microsoft IWebBrowser接口的封装,实质上你可以在你的dll中不使用TCppWebBrowser控件,直接用相关的api来实现和TCppWebBrowser相似的功能,不过记得在dll的入口处(即DllMain中)加上:
switch(reason)
{
case DLL_PROCESS_ATTACH:
CoInitialize(NULL);
break;
case DLL_PROCESS_DETACH:
CoUnInitialize();
break;
}
return 1;
....................
Top
2 楼bfq(bfq)回复于 2003-06-04 21:47:47 得分 0
谢谢
可能还有些问题。先结贴了Top
3 楼qibo999(行路者)回复于 2003-06-04 21:53:28 得分 0
学习下Top
4 楼bfq(bfq)回复于 2003-06-04 22:39:53 得分 0
不好意思,问题来了。
直接使用Microsoft IWebBrowser的头文件在哪儿,我在cb6中没发现,其shdocvw.hpp仍要使用vcl。是不是只能使用LoadLibrary来进行操作Top




