首页 >> 读书频道 >> 电脑 >> 在java里面调用CUI程序的方法
 
· 对java 提供的两个M
· 为什么extends是有
· 引用,造型,protec
· JAVA中用动态代理类实
· 介绍三个集合容器库
· java抽取word,p
· Effective ja
· Effective ja
· Effective ja
· CSS字型的设定
· filesystemob
· 通过数组给您的文件排序
 
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
· 2006高考录取规则
· 首批中国世界名牌产品和2
· 济南美食大全
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

在java里面调用CUI程序的方法


查看有无更新版本

关键字:JAVA 2006-8-31

 

在java里面调用CUI程序的方法
问题描述:
该函数在win平台上面调用不是很成功,GUI会可以调出来,但可能和屏蔽调其中的一些用到CUI的功能,而调用CUI如masm.exe是很不成功,出现一个黑屏,没用内容,或者根本不有结果。
其程序如下:
class RunThread{
Process t
public void run(){
try{
t = java.lang.Runtime.getRuntime().exec("c:masm.exe");
}catch(java.io.IOException e )
{
System.out.println(e);
}
}
}
/************************************************/
class RunExeNative{
public static void main(String args[]){
RunThread RT = new RunThread();
RT.run();
}
}
下面是JNI + C 的本地化的实现方法:
写一个:CallExeNative.h
步骤如下:
step one :
/**** CallExeNative.java ****/
编写CallExeNative.java文件
import java.lang.*;
class CallExeNative{
public native static void CEN();
static
{
System.loadLibrary("CallExeNative");
}
}
在命令行里用:
javac CallExeNative.java
javah CallExeNative
然后你就多了一个 :CallExeNative.h
它的文件如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class CallExeNative */
#ifndef _Included_CallExeNative
#define _Included_CallExeNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: CallExeNative
* Method: CEN
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_CallExeNative_CEN
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
这个文件不用改。
下面要写一个CallExeNative.c文件:该函数的功能是将你的CUI文件调出来
文件如下:
#include "C:CallExeNative.h"/*在你的机器上调试时可能要修改该文件路径*/
#include <stdio.h>
#include <process.h>
#include <conio.h>
JNIEXPORT void JNICALL Java_CallExeNative_CEN(JNIEnv* env, jclass cl)
{
char prog[80];
printf("Hello CallExeNative!n");
printf( "Enter name of program to exec: " );
gets( prog );
_execl( prog, prog, "_execl", "two", NULL );
}
现在visual c++ 的cl 功能在命令行下
c:>cl /LD CallExeNative.c
之后你 会发现生成了一个CallExeNative.dll文件,现在写RunExeNative.java文件:
/*include
CallExeNative.h
CallExeNative.dll
*/
import java.lang.*;
/*load a native method : to call a native file*/
class CallExeNative{
public native static void CEN();
static
{
System.loadLibrary("CallExeNative");
}
}
/************************************************/
class RunExeNative{
public static void main(String args[]){
CallExeNative CEN1 = new CallExeNative();
CEN1.CEN();
}
}
同样用
javac RunExeNative.java
java RunExeNative
之后你就会发现提示你输入CUI文件的路径
你输入路径即可!
说明:要注意的是CallExeNative.h和CallExeNative.dll应该都在同一个文件夹(我的是在c:jdk1.3.1_11bin).
不足之处:破坏了java的移植性!而且你想想看,同样的功能在VB下用Shell(filepath,windowstyle)很容易就搞定,你还会用java吗?我写这篇文章的目的是希望大家找到一种更好的方法来实现这个功能。

在java里面调用CUI程序的方法

[ 1 ]
在java里面调用CUI程序的方法 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑