【问题标题】:Accessing Win32 CreateEvent/SetEvent from WSH or other native Windows program从 WSH 或其他本机 Windows 程序访问 Win32 CreateEvent/SetEvent
【发布时间】:2009-05-13 16:01:25
【问题描述】:

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

我可以用一些非常简单的 C 代码来做到这一点

 h = CreateEvent(NULL, FALSE, FALSE, argv[1]);
 if (h != INVALID_HANDLE_VALUE) SetEvent(h);

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

有没有办法用 Windows Scripting Host 做到这一点?

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

【问题讨论】:

  • CreateEvent() 如果失败,则返回 NULL,而不是 INVALID_HANDLE_VALUE。

标签: windows winapi wsh


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    谁制定了这样的政策,允许您运行任意 WSH 程序,但不能运行二进制文件,应该为您的代码签名证书付费。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-01-10
        • 1970-01-01
        • 1970-01-01
        • 2016-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多