调用CUI程序的方法

wahaosao803057

wahaosao803057

2016-01-29 13:01

调用CUI程序的方法,调用CUI程序的方法

  其程序如下:  

  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  

  这个文件不用改。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/java/)

  下面要写一个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吗?我写这篇文章的目的是希望大家找到一种更好的方法来实现这个功能。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/java/)
展开更多 50%)
分享

猜你喜欢

调用CUI程序的方法

Java JAVA基础
调用CUI程序的方法

VB调用C程序动态链接库的方法

编程语言 网络编程
VB调用C程序动态链接库的方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

ASP调用SQL SERVER存储程序

ASP
ASP调用SQL SERVER存储程序

php入门mysql分页调用程序

编程语言 网络编程
php入门mysql分页调用程序

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

.NET程序调用SSIS中的DTS包

Web开发
.NET程序调用SSIS中的DTS包

后台调用外部程序的完美实现(Delphi)

编程语言 网络编程
后台调用外部程序的完美实现(Delphi)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《初音未来 歌姬计划F2》极限谱面解析第七课

《初音未来 歌姬计划F2》极限谱面解析第七课

2004开发技术年度综述之Java世界

2004开发技术年度综述之Java世界
下拉加载更多内容 ↓