Java调用Win API

2023-11-17

官方网站:http://jawinproject.sourceforge.net

把lib文件夹下的jawin.jar和jawin-stubs.jar放到%JAVA_HOME%/jre/lib/ext 目录下 把bin文件夹下的jawin.dll放到%SystemRoot%/System32 目录下

然后就可以运行demo下的Hellodll.java了:

/* * HelloDll.java - * * This file is part of the Jawin Project: http://jawinproject.sourceforge.net/ * * Please consult the LICENSE file in the project root directory, * or at the project site before using this software. */

/* $Id: HelloDll.java,v 1.3 2004/06/14 20:16:38 arosii_moa Exp $ */

package demos;

import org.jawin.COMException; import org.jawin.FuncPtr; import org.jawin.ReturnFlags;

/** * Demo that uses the Win32 MessageBoxW API-method. * * @version     $Revision: 1.3 $ * @author      Stuart Halloway, http://www.relevancellc.com/halloway/weblog/ */ public class HelloDll {

public static void main(String[] args) throws Exception {    FuncPtr msgBox = null;    try {     msgBox = new FuncPtr("USER32.DLL", "MessageBoxW");     msgBox.invoke_I(0, "Hello From a DLL", "From Jawin", 0, ReturnFlags.CHECK_FALSE);    } catch (COMException e) {     // handle exception     e.printStackTrace();     throw e;    } finally {     if (msgBox != null) {      try {       msgBox.close();      } catch (COMException e) {       // handle fatal exception       e.printStackTrace();       throw e;      }     }    } } }

调用自己写的dll:

import org.jawin.COMException; import org.jawin.FuncPtr; import org.jawin.ReturnFlags;

public class nativeDll { public static void main(String[] args) throws Exception {    int result1,result2;    FuncPtr test1 = null;    FuncPtr test2 = null;    try {     test1 = new FuncPtr("demo.dll", "test1");     test2 = new FuncPtr("demo.dll", "test2");     result1 = test1.invoke_I(5, 6, ReturnFlags.CHECK_NONE);     result2 = test2.invoke_I(5, 6, ReturnFlags.CHECK_NONE);     System.out.println("5 plus 6 is " + result1);     System.out.println("5 multiply 6 is " + result2);    } catch (COMException e) {     e.printStackTrace();    } finally {     if (test1 != null) {      try {       test1.close();      } catch (COMException e) {       e.printStackTrace();      }     }     if (test2 != null) {      try {       test2.close();      } catch (COMException e) {       e.printStackTrace();      }     }    } } }

命令行运行:javac nativeDll.java java -classpath ".;%JAVA_HOME%/jre/lib/ext/jawin.jar" nativeDll

注意,这里一定要加-classpath ".;%JAVA_HOME%/jre/lib/ext/jawin.jar" 不然会提示

Exception in thread "main" java.lang.NoClassDefFoundError: org/jawin/COMExceptio n Caused by: java.lang.ClassNotFoundException: org.jawin.COMException         at java.net.URLClassLoader$1.run(Unknown Source)         at java.security.AccessController.doPrivileged(Native Method)         at java.net.URLClassLoader.findClass(Unknown Source)         at java.lang.ClassLoader.loadClass(Unknown Source)         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)         at java.lang.ClassLoader.loadClass(Unknown Source)         at java.lang.ClassLoader.loadClassInternal(Unknown Source)

特别注意".;",不加的话会提示

Exception in thread "main" java.lang.NoClassDefFoundError: nativeDll Caused by: java.lang.ClassNotFoundException: nativeDll         at java.net.URLClassLoader$1.run(Unknown Source)         at java.security.AccessController.doPrivileged(Native Method)         at java.net.URLClassLoader.findClass(Unknown Source)         at java.lang.ClassLoader.loadClass(Unknown Source)         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)         at java.lang.ClassLoader.loadClass(Unknown Source)         at java.lang.ClassLoader.loadClassInternal(Unknown Source)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java调用Win API 的相关文章

随机推荐

  • 利用xpath爬取网页

    xpath应该是爬取网页最简单的方法啦 因为你需要要懂xpath 可以直接通过浏览器来获取你想要的内容 以Chrome为例 按f12检查网页 用箭头点击自己想要的地方 比如我想提取出 故宫博物院 的xpath地址 右击 点击copy 然后选
  • PIE-engine 下载MODIS Mod09A1,去云并年度平均值合成

    最近毕设需要下载数据 本来懒想买现成的 发现价格实在离谱 考虑了GEE 梯子钱也不想花 一怒之下学了PIE 改的示例 没啥技术含量 var featureCollection0 pie FeatureCollection user 1506
  • 杭电 oj 2010 水仙花数 C++

    Problem Description 春天是鲜花的季节 水仙花就是其中最迷人的代表 数学上有个水仙花数 他是这样定义的 水仙花数 是指一个三位数 它的各位数字的立方和等于其本身 比如 153 1 3 5 3 3 3 现在要求输出所有在m和
  • 瀑布流布局 (移动端多数用的比较多 直播软件 浏览图片)

    瀑布流布局的核心是基于一个网格的布局 而且每行包含的项目列表高度是随机的 随着自己内容动态变化高度 同时每个项目列表呈堆栈形式排列 最为关键的是 堆栈之间彼此之间没有多余的间距差存大 场景 视频图片封面因高度不同 展示 案例效果 直播软件
  • vue的package.json中dependencies和devDependencies区别

    1 dependencies 应用能够正常运行所依赖的包 这种 dependencies 是最常见的 用户在使用 npm install 安装你的包时会自动安装这些依赖 2 devDependencies 开发应用时所依赖的工具包 通常是一
  • 【解决方案】LeetCode中的Monaco编辑器无法加载

    在Edge浏览器中经常出现LeetCode网站中的Monaco编辑器加载不出来的情况 而Codemirror编辑器又不是很好用 所以特此记录一下这个问题的解决方案 解决方法 打开Edge的设置 进入 隐私 搜索和服务 关掉 增强Web安全性
  • 13-FreeRTOS任务创建与删除

    任务创建和删除API函数位于文件task c中 需要包含task h头文件 task h里面包函数任务的类型函数 例如 对xTaskCreate的调用 通过指针方式 返回一个TaskHandle t 变量 然后可将该变量用vTaskDele
  • 模板的特化和萃取

    之前对模板化编程进行了总结 详见https blog csdn net timecur article details 89949643 这篇将介绍模板的重要概念 模板特化 模板的特化 模板针对某些具体的类型不能处理或者处理结果有误 就需要
  • vue项目开发流程

    1 创建项目 1 首先创建项目 我用的项目是vue 3 0 可以在新建文件夹中cmd 进入命令符 vue create 项目名 创建项目也可以在 命令符中vue ui 在浏览器中创建项目 2 项目安装好后 安装自己需要的各种插件 3 我们常
  • 【C语言技巧】STM32实现 printf 打印语句

    包含头文件 include
  • 计算机英语 st,1st、2nd、3rd、…10th都是什么的缩写?怎么读?10th之...-1st-英语-司俜辰同学...

    概述 本道作业题是司俜辰同学的课后练习 分享的知识点是1st 指导老师为任老师 涉及到的知识点涵盖 1st 2nd 3rd 10th都是什么的缩写 怎么读 10th之 1st 英语 下面是司俜辰作业题的详细 题目 1st 2nd 3rd 1
  • mysql的高级查询实例_MySQL高级查询---连接查询实例

    MySQL高级查询 连接查询实例 使用sql查询很简单 很基础的SQLECT语句查询 如果想从多个表查询比较复杂的信息 就会使用高级查询实现 常见的高级查询包括多连接查询 外连接查询与组合查询等 今天我先学习最常用的连接查询 我先以一张pe
  • 编译qt5.9-arm-qmake

    一 arm gcc环境配置 tar xvf rock3288 kernel arm linux gcc C opt vim basgrc 在最后面添加 export PATH opt gcc linaro arm linux gnueabi
  • Android EditText文本改变监听和获取到焦点的监听

    开发app快两年了 总结了一些小知识 以前没时间发表 最近有时间了 和大家分享一下 别忘记初始化 EditText edtUserName 添加文本改变的监听 edtUserName addTextChangedListener new T
  • VSCode离线汉化教程

    VSCode汉化包下载路径 https marketplace visualstudio com items itemName MS CEINTL vscode language pack zh hans 选择 Version Histor
  • 代码丢了不要怕,有jar包就能反编译找回

    推荐一个好用的反编译工具 直接上下载地址 http jd benow ca 根据自己的电脑下载版本 我下载的是windows版本 压缩包解压运行 打开jar包找到你的代码 注意 如果jar包也没有的就想想该重写了
  • C++类和对象:补充拷贝构造

    前言 如果一个类中什么成员都没有 简称为空类 空类中什么都没有吗 并不是的 任何一个类在我们不写的情况下 都会自动生成下面6个默认成员函数 目录 一 六大函数 1 构造函数 1 定义 2 特性 3 赋值 4 初始化列表 2 拷贝构造函数 3
  • Linux基础命令大全(下)

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的绽放 树高千尺 落叶归根人生不易 人间真情 目录 前言 编辑 一 命令到末行模式
  • 今日头条 文章采集_如何利用文章在今日头条引流精准粉

    今日头条这个平台 基本上从事互联网项目的人应该都知道 平台流量本身是非常庞大的 采用大数据算法推荐机制 自动采集判断用户的喜好 并且推荐的量也是非常可观的 对于那些知名作者而言 一篇文章即可拥有几十万甚至数百万的阅读量 这么大的一个流量池摆
  • Java调用Win API

    官方网站 http jawinproject sourceforge net 把lib文件夹下的jawin jar和jawin stubs jar放到 JAVA HOME jre lib ext 目录下 把bin文件夹下的jawin dll