Java可以在另一个进程中注入DLL吗?

时间:2015-03-04 19:17:14

标签: java jna dll-injection

我实际上已经就我的问题提出了问题。为防止人们再次询问无关详细信息,我会发布您可以跳过的背景信息:

  

我正在制作自动化应用程序。此应用程序执行一些任务   为特定窗口的用户随着时间的推移。当这些时间是   需要制作,任务栏中的窗口闪烁,有时甚至是闪烁   窃取重点让用户完成任务。一旦自动化   在这里,不再需要 - 用户只关注窗口   当他想检查自动化的工作情况时。

     

由于focus and flash disable dll,我发现了这个superuser post about applications stealing focus项目。

我的自动化应用程序是Java。因此,虽然我可以打开DLL注入应用程序并手动禁用闪存,但我想将它集成到java应用程序中 - 例如作为设置选项。当用户选择禁用闪烁和窃取焦点时,将注入dll。

当然,这需要Java能够注入我的.dll文件。我找到了这个项目:dotnet-dll-injector但它只处理.NET dll文件。

问:在Java中,有没有办法选择.dll文件并将其注入进程?如果解决方案不直接,哪些库会导致这种情况?

我注意到CreateRemoteThread与DLL注入有某种关系。也许JNA库支持吗?

1 个答案:

答案 0 :(得分:1)

我不知道在Java中本地使用它的方法。

由于您在.NET中找到了可行的解决方案而且您的任务是特定于Windows的,因此我建议如下:

将dotnet-dll-injector构建为DLL并从Java应用程序中调用它。 How to call into .NET dll from Java

编辑:更容易将其构建为控制台应用并使用Runtime.getRuntime().exec("...");

或者,如果您还处于开发过程的早期阶段并且没有立即跨平台的计划,那么只需在C#中执行所有操作并节省一些麻烦。