如何从javascript调用user32.dll方法

如何从javascript调用user32.dll方法,javascript,pinvoke,user32,Javascript,Pinvoke,User32,我有一个javascript在浏览器上运行。是否可以在user32.dll中调用函数/方法 这可以通过C#使用pInvoke调用实现。如何在JavaScript中实现同样的功能 谢谢 客户端上的Datte-出于安全原因,这是不可能的(想象一下,每个站点都可以在您的计算机上运行系统命令…世界末日-可能使用ActiveX,但这只是IE,但DLL仅限于windows) 如果你想在服务器上运行它,你需要在客户端上通过AJAX和C#。这是不可能的,因为安全原因(想象一下,每个站点都可以在你的计算机上运行系

我有一个javascript在浏览器上运行。是否可以在user32.dll中调用函数/方法

这可以通过C#使用pInvoke调用实现。如何在JavaScript中实现同样的功能

谢谢


客户端上的Datte

-出于安全原因,这是不可能的(想象一下,每个站点都可以在您的计算机上运行系统命令…世界末日-可能使用ActiveX,但这只是IE,但DLL仅限于windows)


如果你想在服务器上运行它,你需要在客户端上通过AJAX和C#。

这是不可能的,因为安全原因(想象一下,每个站点都可以在你的计算机上运行系统命令…世界末日-也许可以使用ActiveX,但这只是IE,但是DLL只是windows)


如果你想在服务器上运行它,你需要使用AJAX和C#。

因为JavaScript沙盒,如果没有需要提升安全权限的中间层,比如Netscape风格的浏览器插件(广泛支持)、ActiveX控件(几乎仅限于IE)或.Net控件,你就无法做到这一点(我假设这是可能的;同样可能仅限于IE)。在每种情况下,JavaScript都会与控件进行通信,从而为您调用USER32


如果用户没有授予您的应用程序提升权限,所有这些都不会起作用,但我猜,因为您需要Windows,这是针对某种内部网应用程序的,在这种情况下,这是可能的。

由于JavaScript沙盒,如果没有需要提升安全权限的中间层,例如etscape风格的浏览器插件(广泛支持)、ActiveX控件(基本上仅限于IE)或.Net控件(我认为这是可能的;同样可能仅限于IE)。在每种情况下,JavaScript都会与控件通信,这反过来又会为您调用USER32


如果用户没有授予您的应用程序提升权限,所有这些都不起作用,但我猜,因为您需要Windows,这是针对某种内部网应用程序的,在这种情况下,这是可能的。

在客户端计算机上使用网页上的javascript运行dll方法?这将触发启示。

运行dll方法在客户端计算机上使用网页上的javascript?这将触发启示录。

您肯定需要在客户端上安装自己的插件、扩展或ActiveX

对于firefox扩展,您可以使用轻松包装调用。
如果您使用Firefox4附带的JetpackAPI,它将是全部JavaScript,甚至不需要重新启动浏览器

以下是mozilla.org提供的一个基本Hello World示例:

/* Load JS Ctypes Javascript module */
require("chrome").Cu.import("resource://gre/modules/ctypes.jsm");

/* Load windows api dll */
var lib = ctypes.open("user32.dll");

/* Declare the signature of the function we are going to call */
var msgBox = lib.declare("MessageBoxW",
                         ctypes.stdcall_abi,
                         ctypes.int32_t,
                         ctypes.int32_t,
                         ctypes.ustring,
                         ctypes.ustring,
                         ctypes.int32_t);
var MB_OK = 3;

/* Do it! */
var ret = msgBox(0, "Hello world", "title", MB_OK);

/* Display the returned value */
alert("MessageBox result : "+ret);

lib.close();

您肯定需要在客户端上安装自己的插件、扩展或ActiveX

对于firefox扩展,您可以使用轻松包装调用。
如果您使用Firefox4附带的JetpackAPI,它将是全部JavaScript,甚至不需要重新启动浏览器

以下是mozilla.org提供的一个基本Hello World示例:

/* Load JS Ctypes Javascript module */
require("chrome").Cu.import("resource://gre/modules/ctypes.jsm");

/* Load windows api dll */
var lib = ctypes.open("user32.dll");

/* Declare the signature of the function we are going to call */
var msgBox = lib.declare("MessageBoxW",
                         ctypes.stdcall_abi,
                         ctypes.int32_t,
                         ctypes.int32_t,
                         ctypes.ustring,
                         ctypes.ustring,
                         ctypes.int32_t);
var MB_OK = 3;

/* Do it! */
var ret = msgBox(0, "Hello world", "title", MB_OK);

/* Display the returned value */
alert("MessageBox result : "+ret);

lib.close();

如果您使用C#构建自己的web浏览器,您可以拦截JavaScript调用并将其转换为您希望在浏览器中使用的任何内容。但如果您希望其他浏览器可以使用它,则这将不起作用。

如果您使用C#构建自己的web浏览器,您可以拦截JavaScript调用并将其转换为您希望在浏览器中使用的任何内容。t如果您希望其他浏览器可以使用它,那么这将不起作用。

编写一个com对象来包装对user32的调用。在IE/javascript中调用它。
您的DynamicRapperx对象可以实现这一点(它将是com对象,允许您随意调用DLL)。

编写一个com对象,将您对user32的调用封装起来。在IE/javascript中调用它。
您的DynamicWrapperX对象可以实现这一点(它将是com对象,允许您根据自己的意愿调用DLL).

我想知道如何在Internet Explorer中的jscript中,在浏览器具有足够权限的情况下,执行此操作。我想知道如何在Internet Explorer中的jscript中,在浏览器具有足够权限的情况下执行此操作。我们如何在jscript中使用ActiveX调用user32.dll?@Matthew:建议发布您自己的新问题。这是很有说服力的与这个问题不同的是,它不是重复的。(仅供参考,我认为这并不难。编写一个ActiveX控件,公开一个调用USER32的公共方法,将控件放在带有
对象
标记的页面上,一旦用户允许,您的JScript代码应该能够在页面上的ActiveX控件实例上调用该方法。但我已经10多年没有这样做了,所以我“我不是最适合依靠的里德,我相信这里有人最近有这方面的经验。)你认为这是一个很好的方法吗?我们如何在jscript中使用ActiveX调用user32.dll?@Matthew:建议发布你自己的新问题。这与这个问题有很大的不同,它不是重复的。(仅供参考,我认为这并不难。编写一个ActiveX控件,公开一个调用USER32的公共方法,将控件放在带有
对象
标记的页面上,一旦用户允许,您的JScript代码应该能够在页面上的ActiveX控件实例上调用该方法。但我已经10多年没有这样做了,所以我“我不是最适合依靠的芦苇,我相信这里有人最近在这方面有经验。)你认为这是一个好方法吗?可以使用DLL。可以使用DLL。