返回列表 发帖

[问题求助] [已解决]注册dynwrap.dll成功但仍旧无法创建对象:dynamicwrapper

本帖最后由 tonyabbs 于 2017-10-8 20:27 编辑

下面这段代码,试图通过dynwrap.dll去调用windows api,但regsvr32 dynwrap.dll 注册成功后,仍旧出现 无法创建对象:dynamicwrapper
'取前景窗体标题
GetForeWindowCaption
Sub GetForeWindowCaption()
Const WM_GETTEXT = &HD
Set Wrap = CreateObject("DynamicWrapper")
Wrap.Register "USER32.DLL", "GetForegroundWindow", "f=s", "r=l"
Wrap.Register "USER32.DLL", "SendMessage", "i=lllr", "f=s", "r=l"
Title = Space(100)
res = Wrap.SendMessage(Wrap.GetForegroundWindow(), WM_GETTEXT , 100, Title)
GetForeWindowCaption = Title
End Sub
'MsgBox GetForeWindowCaptionCOPY

换DWX呗,别就抱着DW不放啊

TOP

@yu2n 3楼代码在我这里win10 X64 运行的结果是
前景窗体标题为:
VBS取前景窗口标题
请按任意键继续...

TOP

"改用 C:\Windows\SysWOW64\wscript.exe 来运行 vbs 就好了" 谢谢!

TOP

CommandModeX64("VBS 取前景窗体标题")
WScript.Sleep(2000)
WScript.Echo("前景窗体标题为:" & vbCrLf & GetForeWindowCaption())
'************************************************************************
'取前景窗体标题
'************************************************************************
Function GetForeWindowCaption()
Const WM_GETTEXT = &HD
Set Wrap = CreateObject("DynamicWrapper")
Wrap.Register "USER32.DLL", "GetForegroundWindow", "f=s", "r=l"
Wrap.Register "USER32.DLL", "SendMessage", "i=lllr", "f=s", "r=l"
Title = Space(100)
res = Wrap.SendMessage(Wrap.GetForegroundWindow(), WM_GETTEXT , 100, Title)
GetForeWindowCaption = Title
End Function
'************************************************************************
'以命令提示符环境运行(保留参数X64)
'************************************************************************
Sub CommandModeX64(ByVal sTitle)
Dim objFSO, objWSO, strApp, strCommand, objItem, strArgs
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWSO = CreateObject("WScript.Shell")
strApp = objWSO.ExpandenVironmentStrings("%windir%\SysWOW64\cscript.exe")
If Not objFSO.FileExists(strApp) Then strApp = objWSO.ExpandenVironmentStrings("%windir%\System32\cscript.exe")
If InStr(1, WScript.FullName, strApp, vbTextCompare) > 0 Then Exit Sub
strCommand = "%Comspec% /c title " & sTitle & " & " & strApp & " //NoLogo """ & WScript.ScriptFullName & """"
For Each objItem In WScript.Arguments
strArgs = strArgs & " " & """" & objItem & """"
Next
objWSO.Run strCommand & strArgs & " & pause", 1, False
WScript.Quit
End SubCOPY
Win10 x64 测试结果如下:
前景窗体标题为:
C:\Users\Yu2n\Desktop\0.vbs - Notepad++
请按任意键继续. . .COPY
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

返回列表