jna

SHAppBarMessage and AutoHide

依然范特西╮ 提交于 2020-03-27 03:25:12
问题 public void toggleAutoHide() { APPBARDATA data = new APPBARDATA.ByReference(); data.hWnd = hWndGlobal; data.cbSize.setValue(data.size()); data.lParam.setValue(Shell32.INSTANCE.SHAppBarMessage(new DWORD(ShellAPI.ABM_GETSTATE), data).longValue()); data.lParam.setValue(data.lParam.intValue() ^ 0x0000001); UINT_PTR result = Shell32.INSTANCE.SHAppBarMessage(new DWORD(ShellAPI.ABM_SETSTATE), data); } I have the code above that is supposed to autohide a created appbar, but somehow instead of doing

SHAppBarMessage and AutoHide

拥有回忆 提交于 2020-03-27 03:23:39
问题 public void toggleAutoHide() { APPBARDATA data = new APPBARDATA.ByReference(); data.hWnd = hWndGlobal; data.cbSize.setValue(data.size()); data.lParam.setValue(Shell32.INSTANCE.SHAppBarMessage(new DWORD(ShellAPI.ABM_GETSTATE), data).longValue()); data.lParam.setValue(data.lParam.intValue() ^ 0x0000001); UINT_PTR result = Shell32.INSTANCE.SHAppBarMessage(new DWORD(ShellAPI.ABM_SETSTATE), data); } I have the code above that is supposed to autohide a created appbar, but somehow instead of doing

SHAppBarMessage and AutoHide

老子叫甜甜 提交于 2020-03-27 03:23:20
问题 public void toggleAutoHide() { APPBARDATA data = new APPBARDATA.ByReference(); data.hWnd = hWndGlobal; data.cbSize.setValue(data.size()); data.lParam.setValue(Shell32.INSTANCE.SHAppBarMessage(new DWORD(ShellAPI.ABM_GETSTATE), data).longValue()); data.lParam.setValue(data.lParam.intValue() ^ 0x0000001); UINT_PTR result = Shell32.INSTANCE.SHAppBarMessage(new DWORD(ShellAPI.ABM_SETSTATE), data); } I have the code above that is supposed to autohide a created appbar, but somehow instead of doing

SHAppBarMessage and AutoHide

杀马特。学长 韩版系。学妹 提交于 2020-03-27 03:23:13
问题 public void toggleAutoHide() { APPBARDATA data = new APPBARDATA.ByReference(); data.hWnd = hWndGlobal; data.cbSize.setValue(data.size()); data.lParam.setValue(Shell32.INSTANCE.SHAppBarMessage(new DWORD(ShellAPI.ABM_GETSTATE), data).longValue()); data.lParam.setValue(data.lParam.intValue() ^ 0x0000001); UINT_PTR result = Shell32.INSTANCE.SHAppBarMessage(new DWORD(ShellAPI.ABM_SETSTATE), data); } I have the code above that is supposed to autohide a created appbar, but somehow instead of doing

JNA调用window api中的MessageBox

落爺英雄遲暮 提交于 2020-03-01 13:38:55
用JNA调用C/C++,很方便,写了个很简单的例子。 例子是使用Eclipse CDT + MinGW开发的: C代码,hello.c #include < windows.h > #include " stdio.h " void say(){ MessageBox (NULL, TEXT ( " 你好, Windows! " ), TEXT ( " HelloMsg " ), 0 ); } 将hello.c编译成libDLL2.dll,放进java的项目文件夹中,java调用方式 Java代码,dll.java public class Dll { public interface TestDll1 extends Library { TestDll1 INSTANCE = (TestDll1)Native.loadLibrary( " libDLL2 " , TestDll1. class ); public void say(); } public static void main(String[] args) { TestDll1.INSTANCE.say(); } } 先写一个接口 TestDll1 映射C的方法,再通过这接口调用 say() ,在eclipse中编译运行这个java代码,可以看到弹出“你好,window!”的窗口。 pengo 2010-12-23

Android开发如何使用JNA

回眸只為那壹抹淺笑 提交于 2020-02-28 04:00:01
1. JNA(Java Native Access)项目已经迁移到 github,最新的项目链接:https://github.com/java-native-access/jna 。首先前往该地址下载使用 JNA 需要的两个 jar 库文件,jna.jar,jna-platform.jar 。 2. 在非安卓的平台上,一般我们直接使用这两个 jar 包就可以轻松使用 JNA 并进行安卓开发了。在安卓上由于这两个 jar 包默认没有对应安卓版本的 libjnidispatch.so 文件,因此我们需要从 jna master 中提取该文件并对 jna.jar 文件进行改造,或者使用 jna-min.jar 文件。 3. 在第一项的项目链接下载 jna-master.zip,为了方便开发者下载,可按照如下链接下载:http://download.csdn.net/download/jazzsoldier/9973503 。打开该压缩包解压,进入 dist 目录,可以看到用于安卓平台的各类处理器架构的 jar 包,选择对应于我们的开发目标安卓设备处理器的 jar 包,以我常用的为例。选取 android-armv7.jar,使用解压软件进行解压,其中的 libjnidispatch.so 文件即为所需目标文件。 4. 将 dist 路径下的 jna.jar 文件进行解压,将其中的 so

GetWindowTextA, GetWindowText returns empty value on Edit Control

本小妞迷上赌 提交于 2020-02-27 12:01:35
问题 I'm trying to list and get the content of Edit Controls from an external Window in C++ / Java, unfortunately with no success. When I call GetWindowText or GetWindowTextA it returns an empty value on Edit Controls, I know there are some differences between GetWindowText / GetWindowTextW and GetWindowTextA but I don't know What I'm doing wrong since it works on all other controls. Here the C++ Code: BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) { cout <<"----------CHILD------------"<

C结构体与JavaBean转化

可紊 提交于 2020-02-27 09:35:07
今天在做jna实验的时候,发现一个问题: jna中struct有:int,byte,char三种类型的字段,本来我通过struct.getPoint之后,再通过pointer.getChar(5)应该会取得结构体中的char值,可是我发现无论如何都不正确,我将pointer所指的每个byte内存拿出来看,发现pointer.getChar(6)才正确,并且不管原来的char值是英文还是中文都是getChar(6)才正确。这使我想到一个问题,如果我将来要通过jna给C/C++传结构体,在C中如何处理各个字段值呢?? C结构体与JavaBean转化 java中字节对齐,有一个 github项目 javastruct 字节对齐不是语言强制要求,是硬件上对memory存储信息时做的一些约束。所以C/C++有字节对齐,java语言也有。 C/C++字节对齐是由编译器完成的,java的内存管理师交由JVM管理,所以java的字节对齐也是有JVM控制的,可以参考一下: java jvm字节占用空间分析 还有一些帖子: JNA的四种内存对齐方式 使用JNA调用DLL函数遇到的问题 实现结构体、ByteByReference的用法以及内存对齐 来源: oschina 链接: https://my.oschina.net/u/2963604/blog/3167025

Java中调用DLL库

元气小坏坏 提交于 2020-02-27 04:55:22
JNA的API文档: http://java-native-access.github.io/jna/5.5.0/javadoc/overview-summary.html#overview_description 其中有C代码及对应的JNA相应代码 还有一些帖子很不错: 1: Java JNA (三)—— 结构体使用及简单示例 2: jna对结构体、指针、引用、拷贝参数传递的使用 3: jna调用dll, 结构体方式调用 (简单demo) 4: Getting Started with JNA https://github.com/java-native-access/jna/blob/master/www/GettingStarted.md 5: java调用动态库dll/so(二)jna结构体Structure介绍和使用 6: 使用JNA访问WindowsAPI操作Windows窗口元素 还有Github JNA官方example,包括各种例子 7: JAVA使用JNA技术获取键盘输入 jna test【鼠标 键盘钩子】 8: JNA Pointer结构体传递 有demo代码 9: JNA中关于int、float、double、char、byte等数组类型的类型映射 10: JNA int*等基本类型的映射关系 11: C ++中指针 void**、void*、char**

DLL返回中文,JNA接收乱码

别来无恙 提交于 2020-02-26 17:01:36
VS2013,C++做的DLL: char* pt; char * test1(){ pt = (char*)malloc(200000000); char buf[100] = "hello你world"; memcpy(pt, buf, 100); return pt; } char * test2(){ if (pt != NULL) { free(pt); cout << "free(pt)" << endl; } else cout << "no free" << endl; return "helloworld你好,delete pt:"; } JNA代码: System.setProperty("jna.encoding","gb18030"); //当DLL中返回中文时,gbk/gb2312/gb18030 t1可以正确显示中文,但如果setProperty设置为utf8则乱码 System.out.println(System.getProperty("jna.encoding")); String t1 = DLLLibrary.DLL_LIBRARY.test1(); System.out.println(t1); Pointer t2 = DLLLibrary.DLL_LIBRARY.test2(); byte[] buf = new byte[25];