2014-04-08 53 views
0

讓我們假設我已創建並向Windows資源管理器右鍵單擊菜單(上下文菜單)中添加了一個新條目,方法是添加一個指向用C++編寫的.exe文件只讀取並返回被點擊文件的文件名。獲取Windows資源管理器上下文菜單(右鍵單擊菜單)的FilePath到Java

是否有可能將此文件名轉換爲已運行的Java應用程序?

我想過使用JNI,但可以從本機C++程序中調用已運行的Java應用程序的方法嗎?

有沒有人有另一個想法如何解決這個問題?是否有可能擁有純粹的Java解決方案?

非常感謝。

編輯:是否可以調用已經運行的JVM的現有方法?然後,我可以創建一個C++程序來偵聽右鍵單擊並使用註冊表項爲contextmenu註冊.exe。在C++程序中,我可以調用一個注入已經運行的JVM的dll。該DLL可以調用Java方法並將點擊的文件路徑提交給Java。這可能嗎?

+0

好的,我已經實現了以下功能:我創建了一個與regsit條目(contextmenu /右鍵單擊菜單)鏈接的C++程序。如果用戶單擊某個文件,文件路徑將被傳輸(命令行參數)到該程序。在程序內部,一個dll被加載,並且文件路徑被轉移到只打印文件路徑的dll中的一個定義的方法。我現在想實現的是調用一個已經運行的Java程序(在dll中)的方法,並將文件路徑傳遞給Java方法,而不是打印它。你有什麼建議嗎?謝謝。 – user3422749

回答

0

您可以通過套接字連接連接到已經運行的Java程序,或將值存儲到C++應用程序和Java應用程序可以訪問的某種數據庫中。

除了我的建議,here's a stackoverflow post that talks about communicating to a Java program already running without the Java program making the initial communication

+0

嗨,謝謝你的迴應。這是一個本地Java程序,因此我認爲套接字連接並不是解決這個問題的最佳方法。是否有另一種方法來檢測右鍵單擊文件並獲取點擊文件名到Java(Windows 7 64位)?注射法是唯一的可能性嗎? – user3422749

+0

對不起,我不知道。我不知道API的微軟可用於Windows資源管理器,但我想像任何解決方案都必須以本地代碼開始,即使是Java解決方案在技術上也會使部分解決方案仍然使用JNI或其他本地代碼意味着我會認爲。 – NESPowerGlove

相關問題