|
发表于 2011-1-29 11:43:30
|
显示全部楼层
本帖最后由 smartzbs 于 2011-1-29 12:02 编辑
是提示已注册,这段程序只是判断DllOpen($sDll_Filename)是否成功,即使你卸载了,因为文件仍存在于系统文件夹,所以DllOpen仍然是成功的,无需注册即可使用,既然能使用了,当然也就无需再注册了.
如果你的代码用的是ObjCreate ,那就判断当返回的不是一个OBJ就需注册. if not isobj($o) then
如果你担心200多个DLL要注册影响时间,把你判断的时间拿来注册也够了:
$sDll = "WSHom.Ocx"
_RegisterServer($sDll)
Func _RegisterServer($sDll)
Local $fInit, $fError
Local $aCall = DllCall("ole32.dll", "long", "OleInitialize", "ptr", 0)
If Not @error Then $fInit = $aCall[0] <> 1 ; The COM library is already initialized
$aCall = DllCall($sDll, "long", "DllRegisterServer")
If @error Then $fError = True
If $fInit Then DllCall("ole32.dll", "none", "OleUninitialize")
If $fError Then Return SetError(2, 0, False)
Return SetError($aCall[0] <> 0, $aCall[0], $aCall[0] = 0)
EndFunc |
|