2011-01-24 76 views
1

我正尝试访问由我的java客户端中的本地代码创建的全局事件。我正在使用JNA来调用kernel32.dll的OpenEvent方法。但是该方法总是返回NULL,并且GetLastError返回2,即File not found。java可以访问使用CreateEvent创建的全局事件

所以我想知道JVM是否可以看到这些全局事件,如果有的话是否还有其他方法可以使用?

- Vinzy

+0

[this](http://stackoverflow.com/questions/3590226/working-example-of-jna-mouse-hook/4094882#4094882)可能有帮助 – 2011-01-24 19:13:36

回答

0

你怎么称呼你openEvent?

我想这是像这样

int result = kernel32.OpenEvent(10000, false, "Global\\nameOfEvent"); //request for deletion 

与您可使用对象作为参数,唯一的区别,其中,我想,是偏好的问题。

也许如果你提供了我们可能能够帮助你的呼叫的代码。要问的另一件事是,如果您在本地代码中调用CreateEvent。如果你深入到Windows API,你会发现:

“功能成功只有一些 过程已经通过使用CreateEvent函数创建事件 。”

来源:http://msdn.microsoft.com/en-us/library/ms684305(v=vs.85).aspx

哪个在您的情况意味着你会在很多麻烦,如果你不是一个创建事件。有一种方法可以获得你没有创建的事件的句柄,但它有点复杂,让我们从提供更多信息开始。

干杯。

概括起来:

如果你不调用CreateEvent在你的代码的任何地方,你会打电话OpenEvent时遇到问题。为了避免这个问题,你基本上必须找到哪个进程/线程持有该事件的锁,并将其提供给你的线程(jvm)。

如果你确实在你的代码中调用了CreateEvent,那么你不应该有任何问题获得对你的事件的引用,罪魁祸首就在别的地方。

在任何情况下,多一点的代码会很好。

相关问题