【问题标题】:Create object from dll then calling a method从 dll 创建对象然后调用方法
【发布时间】:2011-08-04 03:33:03
【问题描述】:

我正在尝试从 dll 库中调用一些方法。我在 JavaScript 和 c++ 中找到了一些示例。我不知道如何使用 c++,所以让我向您展示我为 JavaScript 示例所做的工作:

<html>
<head>
<title>Palm Pad</title>
</HEAD>

<script type="text/javascript" language="JavaScript1.2">

if(window.ActiveXObject) {

    //var ActiveHomeObj = new ActiveXObject("X10.ActiveHome");

} else {

    alert("This script was design to work with Internet Explore 5 and up");

}


function getUSCode(Button1,OnOff)
{
    ActiveHomeObj.SendAction("sendplc","A1 on");
}
</script>

<body>


<a href="javascript:getUSCode(1,'on');">click here to see if method runs</a>

<OBJECT ID="ActiveHomeObj" classid="CLSID:001000AF-2DEF-0208-10B6-DC5BA692C858" codebase="ahscript.dll"  type="application/x-oleobject"></OBJECT>
</body>
</html>

如您所见,这是一个非常简单的 html 页面,只有一个 JavaScript 函数,在单击链接时会执行该函数。该脚本的问题在于它仅适用于 Internet Explorer,并且在使用它时我会收到 警告。

如果我使用 Internet Explorer 并启用被阻止的内容,我可以在 ahscript.dll 库上执行 SendAction 方法。

我也想在其他浏览器上运行它,所以如果我能创建一个 .bat 文件让我能够做同样的事情,那就太好了。或者一个vbs脚本。或任何其他脚本...

如果由于某种原因您知道 AutoIt 是我尝试过的:

AutoIt

DllCall("ahscript.dll","none","SendAction","str","sendplc","str", "A1 on") 

and

$o = ObjCreate("C:\Users\Virgilio\Desktop\x10\ahscript.dll")
$o.SendAction("sendplc","A1 on")

在 vbs 中我有类似的东西。

我如何创建一个可执行文件,在执行它时我可以获得相同的结果,如果我在 Internet Explorer 中打开 html 文件然后启用警告并最后执行 javascrip 函数?

【问题讨论】:

  • 您在尝试使用 autoit 和 vbs 时发现了哪些问题?
  • 我想我会试试 c++ 库。也许我可以用 c# 创建一个包装器。我最喜欢使用 c#

标签: dll vbscript batch-file activex dllimport


【解决方案1】:

对不起,你运气不好。

首先,ActiveXObject 特定于 Internet Explorer。 FirefoxChrome 不支持。您可以为 FirefoxChrome 使用特殊插件,这将启用 IE 选项卡,但仍然是 IE。

此外,ActiveX/COM 是特定于 Windows 的。您可以使用Wine 中的 ActiveX/COM,但它不受任何其他操作系统的原生支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多