2011-01-24 51 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,那麼你不應該有任何問題獲得對你的事件的引用,罪魁禍首就在別的地方。

在任何情況下,多一點的代碼會很好。

相關問題