找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19291|回复: 5

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

[复制链接]
发表于 2017-10-7 22:02:05 | 显示全部楼层 |阅读模式
本帖最后由 tonyabbs 于 2017-10-8 20:27 编辑

下面这段代码,试图通过dynwrap.dll去调用windows api,但regsvr32 dynwrap.dll 注册成功后,仍旧出现 无法创建对象:dynamicwrapper
  1. '取前景窗体标题
  2. GetForeWindowCaption
  3. Sub GetForeWindowCaption()
  4.         Const WM_GETTEXT = &HD
  5.         Set Wrap = CreateObject("DynamicWrapper")
  6.         Wrap.Register "USER32.DLL", "GetForegroundWindow", "f=s", "r=l"
  7.         Wrap.Register "USER32.DLL", "SendMessage", "i=lllr", "f=s", "r=l"
  8.         Title = Space(100)
  9.         res = Wrap.SendMessage(Wrap.GetForegroundWindow(), WM_GETTEXT , 100, Title)
  10.         GetForeWindowCaption = Title
  11. End Sub
  12. 'MsgBox GetForeWindowCaption
复制代码
发表于 2017-10-7 23:29:18 | 显示全部楼层
发表于 2017-10-8 00:00:26 | 显示全部楼层
  1. CommandModeX64("VBS 取前景窗体标题")
  2. WScript.Sleep(2000)
  3. WScript.Echo("前景窗体标题为:" & vbCrLf & GetForeWindowCaption())

  4. '************************************************************************
  5. '取前景窗体标题
  6. '************************************************************************
  7. Function GetForeWindowCaption()
  8.         Const WM_GETTEXT = &HD
  9.         Set Wrap = CreateObject("DynamicWrapper")
  10.         Wrap.Register "USER32.DLL", "GetForegroundWindow", "f=s", "r=l"
  11.         Wrap.Register "USER32.DLL", "SendMessage", "i=lllr", "f=s", "r=l"
  12.         Title = Space(100)
  13.         res = Wrap.SendMessage(Wrap.GetForegroundWindow(), WM_GETTEXT , 100, Title)
  14.         GetForeWindowCaption = Title
  15. End Function

  16. '************************************************************************
  17. '以命令提示符环境运行(保留参数X64)
  18. '************************************************************************
  19. Sub CommandModeX64(ByVal sTitle)
  20.         Dim objFSO, objWSO, strApp, strCommand, objItem, strArgs
  21.         Set objFSO = CreateObject("Scripting.FileSystemObject")
  22.         Set objWSO = CreateObject("WScript.Shell")
  23.         strApp = objWSO.ExpandenVironmentStrings("%windir%\SysWOW64\cscript.exe")
  24.         If Not objFSO.FileExists(strApp) Then strApp = objWSO.ExpandenVironmentStrings("%windir%\System32\cscript.exe")
  25.         If InStr(1, WScript.FullName, strApp, vbTextCompare) > 0 Then Exit Sub
  26.         strCommand = "%Comspec% /c title " & sTitle & " & " & strApp & " //NoLogo """ & WScript.ScriptFullName & """"
  27.         For Each objItem In WScript.Arguments
  28.                 strArgs = strArgs & " " & """" & objItem & """"
  29.         Next
  30.         objWSO.Run strCommand & strArgs & " & pause", 1, False
  31.         WScript.Quit
  32. End Sub
复制代码
Win10 x64 测试结果如下:
  1. 前景窗体标题为:
  2. C:\Users\Yu2n\Desktop\0.vbs - Notepad++
  3. 请按任意键继续. . .
复制代码
 楼主| 发表于 2017-10-8 20:27:05 | 显示全部楼层
"改用 C:\Windows\SysWOW64\wscript.exe 来运行 vbs 就好了" 谢谢!
 楼主| 发表于 2017-10-8 20:34:16 | 显示全部楼层
@yu2n 3楼代码在我这里win10 X64 运行的结果是
前景窗体标题为:
VBS取前景窗口标题
请按任意键继续...
发表于 2017-10-8 20:38:25 | 显示全部楼层
换DWX呗,别就抱着DW不放啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:25 , Processed in 0.017568 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表