Tag: winapi

Java调用Windows API GetShortPathName

我想在我的java类中使用本机windows api函数。 我感兴趣的function是GetShortPathName。 http://msdn.microsoft.com/en-us/library/aa364989%28VS.85%29.aspx 我尝试使用这个 – http://dolf.trieschnigg.nl/eightpointthree/eightpointthree.html但是在某些情况下,当我使用它时java完全崩溃,所以它不适合我。 问题是我是否必须在例如C中编写代码,生成DLL然后在JNI / JNA中使用该DLL? 或者我可能以某种方式以不同的方式访问系统API? 我将非常感谢您的评论。 如果你可以发布一些代码作为例子,我将不胜感激。 … 我找到了使用JNA的答案 import com.sun.jna.Native; import com.sun.jna.platform.win32.Kernel32; public class Utils { public static String GetShortPathName(String path) { byte[] shortt = new byte[256]; //Call CKernel32 interface to execute GetShortPathNameA method int a = CKernel32.INSTANCE.GetShortPathNameA(path, shortt, 256); String shortPath = Native.toString(shortt); return shortPath; } public […]

如何使用Java在屏幕上移动Windows窗口?

我一直在考虑使用GUI创建一个窗口管理器,可能是Java。 但是,我正在努力找出移动不属于我的程序的窗口的最佳方法。 到目前为止,似乎我应该使用JNI与Windows API进行交互,但我没有找到任何有用的示例。 有谁知道如何做到这一点? 谢谢! PS。 如果有更好的语言,我不一定与Java联系在一起。

用户按下该键时无法看到该消息

下面的java程序在C中调用一个本机方法,它应该打印you pressed a key !的消息you pressed a key ! 如果用户按下一个键。 但我无法看到消息,因为我按下了键。我还检查函数SetWindowsHookEx返回null但不是,它不返回null。 Java代码: package keylogger; public class TestKeys { private native void setWinHook(); public static void main(String args[]) { TestKeys o = new TestKeys(); try { o.setWinHook(); Thread.sleep(10000); } catch(Exception exc) { exc.printStackTrace(); } } static { System.loadLibrary(“MyHook”); } C代码: #include #include #include #include “keylogger_TestKeys.h” static […]

有没有办法从Java程序隐藏win32启动控制台(如果可能,没有JNI)

您从控制台启动Java程序(可能使用.bat脚本)。 我不希望控制台保持可见,我想隐藏它。 有一个简单的方法吗? 没有JNI?

如何检查文件是否可读?

我正在编写Java 6应用程序,我必须检查文件是否可读。 但是,在Windows上, canRead()始终返回true 。 所以我看到可能,唯一的解决方案可能是基于WINAPI并使用JNA / JNI编写的一些本机解决方案。 但是,还有另一个问题,因为在WINAPI中很难找到一个简单的函数,它会返回有关文件访问的信息。 我找到了GetNamedSecurityInfo或GetSecurityInfo但我不是一个高级的WINAPI程序员,对于我来说,与JNA / JNI相关的它们太复杂了。 有什么想法如何处理这个问题?

使用JNA(JAVA)的GetAsyncKeyState和VirtualKeys /特殊字符

我正在进行双向私聊,这将在全屏游戏中运行。 这需要让用户在屏幕顶部键入半透明文本框, 即使它没有焦点也是如此 。 使用以下代码, 我可以检测所有物理键 ,但使用虚拟键时会很困难。 检测到SHIFT 。 检测到2 。 但是, Shift + 2被检测为单独的键(即使[SHIFT+2]在键盘上给出@ )。 IE:程序输出SHIFT和2,但不输出它们产生的内容: @ 。 问题是,我将如何根据键盘转换为角色? 例如: 在英国键盘上,SHIFT + 2会给我” (引号)。 在美国键盘上,SHIFT +2会给我@ 。 如何根据键盘转换为特定字符? 这是到目前为止的代码: static interface User32 extends Library { public static User32 INSTANCE = (User32) Native.loadLibrary(“User32”, User32.class); short GetAsyncKeyState(int key); short GetKeyState(int key); IntByReference GetKeyboardLayout(int dwLayout); int MapVirtualKeyExW […]

Java – 窗口图像

有没有人知道如何捕获Java中的屏幕截图(不是它自己的屏幕,而是桌面上的任何其他窗口,它们不一定必须是活动窗口)? 这个类似的主题有很多线索,但我还没有找到答案。 我尝试过使用JNA,但经过几次尝试后卡住了。 例如… public class Main { public static void main(String[] args) { Main m = new Main(); List list = m.getWindows(); for (int i=0;i<list.size();i++) { WindowInfo info = list.get(i); System.out.println(info.getTitle()); } WindowInfo wi = list.get(0); W32API.HDC hdcSrc = User32.instance.GetWindowDC(wi.getHwnd()); W32API.HDC hdcMemory = Gdi32.instance.CreateCompatibleDC(hdcSrc); //W32API.HBITMAP hBitmapMemory = Gdi32.instance.CreateCompatibleBitmap(hdcSrc, int width, int height); int width […]

如何用JNI或JNA阅读窗口标题?

希望重新回到发展空间; 主要使用Java来调用一些原生的win32函数(我不想在.NET中构建)…. 有人能指出我可以使用Java(JNI / JNA / SWIG)从不同的运行窗口读取标题的地方。 假设您将知道您尝试连接的应用程序在内存空间中的位置。

JFrame.setExtendedState(MAXIMIZED_BOTH)是否与未修饰的帧一起使用?

以下Swing代码在我的计算机或我的同事计算机(所有Windows XP和Java 6)上无法正常运行: public class Test { public static void main(String[] args) { final JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800, 600); frame.setLayout(new FlowLayout()); frame.add(new JButton(new AbstractAction(“Maximize”) { @Override public void actionPerformed(ActionEvent e) { frame.setExtendedState((frame.getExtendedState() & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH ? JFrame.NORMAL : JFrame.MAXIMIZED_BOTH); } })); frame.setUndecorated(true); frame.setVisible(true); } } 它最大化窗口,但不考虑窗口任务栏(它填满屏幕)。 如果你注释掉“frame.setUndecorated(true);” 它似乎工作正常。 Javadoc似乎暗示这应该有效。 这是Java中的错误吗? 它仅限于特定版本或Windows版本吗? […]

如何在java中使用winapi函数?

我在java中做一个项目,它具有在数据库中添加文件的function,我想使用winapi函数来选择文件。 我该怎么做?