从WSH或其他本机Windows程序访问Win32 CreateEvent / SetEvent

时间:2009-05-13 16:01:26

标签: windows winapi wsh

我需要与使用named的程序套件接口。 Win32事件(例如,CreateEvent() API)在正在运行的进程之间进行通信。

我可以用一些非常简单的C代码

来做到这一点
 h = CreateEvent(NULL, FALSE, FALSE, argv[1]);
 if (h != INVALID_HANDLE_VALUE) SetEvent(h);

但是,由于政策问题,我无法在生产机器上安装自定义二进制文件!

有没有办法在Windows Scripting Host中执行此操作?

我可能会将已签名的二进制文件添加到生产环境中 - 因此其他脚本语言可能是可行的。欢迎提出建议。

3 个答案:

答案 0 :(得分:1)

如果您只需要Win32事件用于正常事件,则可以使用PowerShell。这将使您可以访问.Net框架。这将允许您使用托管事件类(如ManualResetEvent)间接访问API。这只是普通CreateEvent API之上的一个瘦包装器。

答案 1 :(得分:1)

  

我无法在生产机器上安装自定义二进制文件!   ...   我可能会将已签名的二进制文件添加到生产环境中

签署您自己的二进制文件。

无论是谁制定了允许您运行任意WSH程序但不运行二进制文件的策略,都应支付代码签名证书。

答案 2 :(得分:0)

Python有一个PyWin32库,允许您使用Windows API函数,包括CreateEvent / SetEvent。

一般情况下(并且具有不同的便利程度),您可以使用任何允许定义和调用外部函数的语言(在本例中来自kernel32.dll)。