使用regsvr32注册ocx后,如何才能不弹出注册成功的提示框

月光莫利亚 2004-06-13 09:45:19
我在编写的安装程序中调用ShellExecute注册控件,代码如下:ShellExecute(NULL, "open", "regsvr32.exe", "MSWINSCK.OCX", NULL, SW_HIDE);,执行之后程序弹出"DllRegisterServer in MSWINSCK.OCX succeeded."的对话框,点确定继续,请问如何才能不弹出这个对话框,望高手指点!!!!
...全文
1177 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
B2China 2004-06-18
  • 打赏
  • 举报
回复
我顶!

请问楼主:你的注册控件ShellExecute(NULL, "open", "regsvr32.exe", "MSWINSCK.OCX", NULL, SW_HIDE),是在你程序的什么地方调用的?或什么函数中调用?
aiirii 2004-06-18
  • 打赏
  • 举报
回复
regsvr32 /s xxx.ocx
就可
qwertasdfg123 2004-06-18
  • 打赏
  • 举报
回复
楼上说的不错
hopen 2004-06-18
  • 打赏
  • 举报
回复
//注册
bool Onregocx(LPCTSTR m_FileName)
{

LPCTSTR pszDllName;

if(m_FileName!="")
pszDllName=m_FileName;
else
{
return false;
}

HINSTANCE hLib = LoadLibrary(pszDllName);
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
return false;
}

//调用dll
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,"DllRegisterServer");
//判断DllRegisterServer
if(lpDllEntryPoint!=NULL)
{
if(FAILED((*lpDllEntryPoint)()))
{
FreeLibrary(hLib);
return false;
}

FreeLibrary(hLib);
return true;
}
else
return false;
}
//注销
bool OnUnregocx(LPCTSTR m_FileName)
{
LPCTSTR pszDllName;

if(m_FileName!="")
pszDllName=m_FileName;
else
{
return false;
}

HINSTANCE hLib = LoadLibrary(pszDllName);
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
return false;
}

FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,("DllUnregisterServer"));
if(lpDllEntryPoint!=NULL)
{
if(FAILED((*lpDllEntryPoint)()))
{
FreeLibrary(hLib);
return false;
}

FreeLibrary(hLib);
return true;
}
else
return false;
}
owen_2001 2004-06-18
  • 打赏
  • 举报
回复 1
“regsvr32 [/u] [/s] [/n] [/i(:cmdline)] dllname”。其中dllname为ActiveX控件文件名,建议在安装前拷贝到System文件夹下。

  参数有如下意义:

  /u——反注册控件
  /s——不管注册成功与否,均不显示提示框
  /c——控制台输出
  /i——跳过控件的选项进行安装(与注册不同)
  /n——不注册控件,此选项必须与/i选项一起使用
zoid 2004-06-18
  • 打赏
  • 举报
回复
::WinExec("regsvr32 /s MSWINSCK.ocx", SW_HIDE);
不会有对话框弹出
/s silent;display no messagebox
gracezhu 2004-06-18
  • 打赏
  • 举报
回复
调用该控件的DllRegisterServer方法
zhtrue 2004-06-18
  • 打赏
  • 举报
回复
这样就可以了
ShellExecute(NULL, "open", "regsvr32.exe", "MSWINSCK.OCX -s", NULL, SW_HIDE);
月光莫利亚 2004-06-18
  • 打赏
  • 举报
回复
我做的是安装程序,运行后点击开始安装,在这个过程中调用shellExecute()的。
月光莫利亚 2004-06-14
  • 打赏
  • 举报
回复
高手指点呀!拜求!!!!!!!
月光莫利亚 2004-06-13
  • 打赏
  • 举报
回复
没人帮忙吗,自己顶一下!!

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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