JNI 在命令行窗口输入字符,不显所输入字符,显指定的掩饰符
//JNI-命令行窗口输入字符,显掩饰符.txt
/*
目标:在命令行窗口输入字符,不显所输入字符,显指定的掩饰符
作者:tangshancheng@21cn.com
*/
1、KeyBoard.java源代码
//: KeyBoard.java
import java.io.*;
public class KeyBoard {
static {
System.loadLibrary("inputdll");
}
public native static char get();
public static void main(String[] args) {
StringBuffer stfDir = new StringBuffer();
KeyBoard test = new KeyBoard();
char c;
c=test.get();
while(c!='\r' && c!='\n'){
System.out.print('*');//'a'-'A' = 32
stfDir.append(c);
c=test.get();
}
System.out.println("\nHere is what you input:\n"+ new String(stfDir));
}
} ///:~
2、编译、生成头文件(KeyBoard.h)
F:\java>javac KeyBoard.java
F:\java>javah KeyBoard
3、inputdll.cpp文件具体实现这两个函数:
a、在vc中新建...-工程-Win32 Dynamic-Link Library,输入相关信息(工程名为inputdll)
b、新建...-文件-C++Source Files,输入相关信息(文件名为inputdll.c)
c、输入c内容:
#include "KeyBoard.h"
#include "conio.h"
JNIEXPORT jchar JNICALL Java_KeyBoard_get (JNIEnv *env, jobject obj){
char c;
c=getch();
return c;
}
d、cl -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -LD HelloWorldImp.c -Feinputdll.dll
4、编译连接成库文件,本例是在WINDOWS下做的,生成的是inputdll.dll文件。
并且名称要与JAVA中需要调用的一致,这里就是inputdll.dll
5、把inputdll.dll拷贝到KeyBoard.class所在的目录下,java KeyBoard运行它,就可以观察到结果了。
6、运行结果实例:
F:\java>java KeyBoard
*******
Here is what you input:
1234567
JNI 在命令行窗口输入字符,不显所输入字符,显指定的掩饰符的更多相关文章
- 在Windows命令行窗口中输入并运行PHP代码片段(不需要php文件)的方法
有时候只是简单的为了测试某个php函数的效果,以前总是需要建一个php文件,复制这个文件的路径,再通过web访问或者用php命令执行这个php文件. 一直想要怎么才能不用创建文件,才能直接执行PHP代 ...
- plsql命令行窗口执行脚本打印输出
1.我们可以写一些简单的检查数据库的检查脚本 prompt Importing table t_test0... set feedback off set define off ; ; prompt ...
- 解决PowerShell命令行窗口中不显示光标的问题
不知道什么原因,在有些系统上打开PowerShell命令行窗口后,光标无法显示.这种情况在Windows Server 2008/2012.Windows 8/9/10上都出现过,估计是由于某些系统软 ...
- 在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字
在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字呢? 正确的步骤如下: 1, 打开cmd命令行窗口 2, 输入命令 >chcp 65001 数字65001代表的是c ...
- MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。
1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...
- C#中隐式操作CMD命令行窗口
原文:C#中隐式操作CMD命令行窗口 MS的CMD命令行是一种重要的操作界面,一些在C#中不那么方便完成的功能,在CMD中几个简单的命令或许就可以轻松搞定,如果能在C#中能完成CMD窗口的功能,那一定 ...
- 在windows命令行窗口下执行:查看所有的端口占用情况
开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...
- 命令行窗口中用telnet测试HTTP协议
1. 命令行窗口中用telnet测试HTTP协议 HTTP消息是由普通ASCII文本组成.消息包括消息头和数据体部分.消息头以行为单位,每行以CRLF(回车和换行)结束,消息头结束后,额外增加一个CR ...
- 使用cmd命令行窗口操作SqlServer
本文主要介绍使用windows下的使用cmd命令行窗口操作Sqlserver, 首先我们可以运行 osql ?/ ,这样就把所有可以通过CMD命令行操作sqlserver的命令显示出来 (有图有 ...
随机推荐
- 使用结构struct作为Dictionary<TKey,TValue>的键
我们经常用简单数据类型,比如int作为泛型Dictionary<TKey,TValue>的key,但有时候我们希望自定义数据类型作为Dictionary<TKey,TValue> ...
- .NET泛型03,泛型类型的转换,协变和逆变
协变(Convariant)和逆变(Contravariant)的出现,使数组.委托.泛型类型的隐式转换变得可能. 子类转换成基类,称之为协变:基类转换成子类,称之为逆变..NET4.0以来,支持了泛 ...
- jsp中生成txt文件
import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.Writab ...
- java通过System.getProperty获取系统属性
getProperties public static Properties getProperties() 确定当前的系统属性. 首先,如果有安全管理器,则不带参数直接调用其 checkProper ...
- Coursera课程《大家的python》(Python for everyone)课件
You can access the Google Drive containing all of the current and in-progress lecture slides for thi ...
- 常用sql001_partition by 以及 row_number()和 dense_rank()和rank()区别
create table student ( sid varchar2(10), --学号 sname varchar2(10), --姓名 classid varchar2(10), --班级号 s ...
- Convert Sorted Array to Binary Search Tree leetcode java
题目: Given an array where elements are sorted in ascending order, convert it to a height balanced BST ...
- HTTP请求方法 GET POST【总结】
HTTP 8种请求方法概述 HTTP/1.1协议中共定义了八种方法(有时也叫"动作"),分别为:get,post,put, options,head,delete,trace,co ...
- C# 中使用 RSA加解密算法
一.什么是RSA RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制. 在公开密钥密码体制中,加密密钥(即 ...
- 项目加入 TFS报错
新建一个项目,然后在解决方案上右击,选择Add solution to source control的时候,总是失败,output窗口中出现的错误信息如下: An error was raised ...