社区
ATL
帖子详情
高分求教:只知道ocx存放的地点(full path), 怎么创建对象?
smilemac
2005-05-06 11:47:54
rt
...全文
271
20
打赏
收藏
高分求教:只知道ocx存放的地点(full path), 怎么创建对象?
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hzwjt
2005-05-09
打赏
举报
回复
如何注册控件?直接在系统注册表中注册还是在程序中用代码注册?
Frank123
2005-05-08
打赏
举报
回复
请使用这个工具查看OCX的定义(IDL)
vc->tools->ole/com object viewer
打开工具后采单file->view typelib... 选择你的ocx 会生成IDL,在那里面你可以轻松找到你的CLSID和PorgID
smilemac
2005-05-08
打赏
举报
回复
我用“project->Add to project->Componends and Controls”的方式使用我的控件没有问题。但如果动态加载就有问题,我的主程序是一个Console程序,没有窗口,会不会有问题呢?
jerry
2005-05-07
打赏
举报
回复
要使用 OCX控件要么要知道它的 CLSID 要么就是 PorgID
只知道 OCX 文件,你怎么知道是什么控件? 再说这样的控件怎么用?
用#import 引入试试,就能知道它的 CLSID 了
反正你在写程序的时候得知道,不然没办法编译,除非动态创建.
smilemac
2005-05-07
打赏
举报
回复
但是需求是不知道ocx的CLSID和ProgID,只知道在哪里放着。请问怎么办?需要遍历所有注册的控件吗?
Kudeet
2005-05-07
打赏
举报
回复
regsvr32 /s c:\***.ocx
注册控件后,在注册表里HKEY_CLASSES_ROOT会写入相关的信息,你仔细看看变化。
GOOD LUCK
jerry
2005-05-07
打赏
举报
回复
不用知道OCX放在哪里.OCX使用前都要注册的,注册好了就行了,可以加载进来了
HNET
2005-05-07
打赏
举报
回复
regsvr32 ocx_path
初始化com库后,就可以queryinterface了
xjjyx
2005-05-07
打赏
举报
回复
#include <objbase.h>
好像还要引入ole32.dll
smilemac
2005-05-07
打赏
举报
回复
加了也不行.而且我找了个MSDN里的sample client 程序,访问它自己的ocx没问题,但将CLSID和接口GUID换成我的ocx的,马上出现同样错误, "memory access violation, 试图访问0x0000005(有时是别的值)". 但我的ocx我用test container检查过,没问题啊.
jerry
2005-05-07
打赏
举报
回复
AfxEnableControlContainer ();
调用了吗?
smilemac
2005-05-07
打赏
举报
回复
老大,帮我看看我的控件函数为什么不能访问?谢谢了.
sinall
2005-05-07
打赏
举报
回复
你根本就不需要知道ocx的路径,因为,这正是com技术所要解决的一个问题。
当然“只知道ocx存放的地点(full path)”我想这是不可能的。起码你知道它是干什么的吧?
不过不知道也无所谓。
VC或者VB等工具可以读取注册表,然后将系统内注册在注册表中的组件列出来。
即:“注册表项->GUID->文件路径”就可以找到ocx了。
那么你可以选择“project->Add to project->Componends and Controls”来找到并使用它。
xjjyx
2005-05-07
打赏
举报
回复
我只能想到以下的地步,
因为ocx文件都有一个DllRegisterServer的导出文件,用LoadLibraryEx引入ocx,再用GetProcAddress得到DllRegisterServer的地址,再通过地址调用这个文件,就注册了组件,再用得到DllGetClassObject的地址,然后,用别的方法得到 CLSID什么的数据,用DllGetClassObject得到接口,再调用接口,下面是一些示例代码。不能拿来就用。至于ocx文件有没有枚举接口的功能,只能找文件的详细资料了。
HINSTANCE hLib = LoadLibraryEx(pszDllName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
(FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, pszDllEntryPoint);
(*lpDllEntryPoint)();
smilemac
2005-05-07
打赏
举报
回复
哪位高手帮一下忙.谢谢了
smilemac
2005-05-07
打赏
举报
回复
跟进去后,看到是这一句出的问题
STDMETHODIMP COleDispatchImpl::GetTypeInfoCount(UINT* pctinfo)
{
METHOD_PROLOGUE_EX_(CCmdTarget, Dispatch)
*pctinfo = pThis->GetTypeInfoCount();//**********************
return S_OK;
}
smilemac
2005-05-07
打赏
举报
回复
这是客户端代码,每次到了调用Test函数的时候,就弹出“试图访问不可访问的内存,程序退出”。
控件检查用test container检查过没看出有什么不对的地方.其实那个控件很简单,就是直接用VC6.0的ActiveX Wizard生成的,然后加了一个method,里面什么都不作.
CLSID clsid;
HRESULT hr = CLSIDFromProgID(T2COLE("TESTOCX3.TestOcx3Ctrl.1"), &clsid);
const IID IID_IX3 =
{ 0x60528975, 0xD388, 0x477F,
{ 0xB9, 0x82, 0x11, 0x60, 0xCE, 0x97, 0x05, 0x08 } };
hr = ::CoCreateInstance(clsid,
NULL,
CLSCTX_INPROC_SERVER,
IID_IX3,
(void**)&pIX) ;
if (SUCCEEDED(hr))
{
trace("Succeeded creating component.") ;
pIX->Test() ; //*********************************
//试图访问不可访问的内存,程序退出
pIX->Release() ;
}
jerry
2005-05-07
打赏
举报
回复
请先确定你的控件的没有问题? 这个可以通过 ActiveX Container 来测试一下
smilemac
2005-05-07
打赏
举报
回复
动态创建是指什么?
另外有一个救命的问题请教,就是我的程序可以成功query出接口的指针,但只要一调用它里面的函数就会产生一个异常。我的控件没问题,用静态的方法直接insert到程序里试过。请问可能是什么问题?
greenabc
2005-05-07
打赏
举报
回复
project->Add to project->Componends and Controls
弹出对话框中双击“Registered ActiveX Controls”
然后在这个文件夹中找到你要加的对象(前提是你已经注册了ocx),选中->点击 “Insert”
然后,看者提示,一步一步做,相信你能够使用了。
DSOFramer.
ocx
2.3
DSOFramer.
ocx
2.3版本。读写word控件
TeeChart8.
ocx
破解中文版
很著名的一个图标空间 用regsvr32.exe来注册和反注册控件 发布程序的时候记得要和本机上做同样的操作
海康摄像头
OCX
控件(2015)exe安装集成版+网页demo
海康威视的摄像头在网页中进行集成时候需要安装
OCX
控件,此资源为exe版本,安装之后打开index.html这个demo文件。会提示下载安装cab,再次点击安装,即可使用。index.html这个demo中提供了海康摄像头集成的大部分...
mscomm32.
ocx
提示没注册,需要将此文件下载放入windows中
VS2010/2008/2005 MSCOMM串口控件
mscomm32.
ocx
MSCOMM32.oca MSCOMM32.DEP MSCOMM.SRG 将这几个文件拷贝到一个固定的目录下然后注册就可以在MFC里正常使用串口控件了。 注册:开始->运行 输入Regsvr32 "C:\WINDOWS\system32\MSCOMM32.
OCX
" 根据自己...
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章