您现在的位置是:首页 >

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

火烧 2021-10-13 05:51:21 1066
在 java 里面调用 CUI 程序的方法    问题描述   该函数在wi 平台上面调用不是很成功 GUI会可以调出来 但可能和屏蔽调其中的一些用到CUI的功能 而调用CUI如ma m exe是很不

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

java调用exe程序 在 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  它的文件如下     #include <jni h>      #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[ ];    printf( Hello CallExeNative!n );      printf( Enter name of program to exec: );    gets( prog );    _execl( prog prog _execl o NULL );  }  现在visual c++ 的cl 功能在命令行下  c:>cl /LD CallExeNative c  之后你 会发现生成了一个CallExeNative dll文件 现在写RunExeNative java文件     import java lang *;    class CallExeNative{    public native static void CEN();    static    {     System loadLibrary( CallExeNative );   }  }  /************************************************/  class RunExeNative{   public static void main(String args[]){   CallExeNative CEN = new CallExeNative();   CEN CEN();   }  }  同样用  javac RunExeNative java  java RunExeNative  之后你就会发现提示你输入CUI文件的路径     你输入路径即可!  说明 要注意的是CallExeNative h和CallExeNative dll应该都在同一个文件夹(我的是在c:jdk _ bin)   不足之处 破坏了java的移植性!而且你想想看 同样的功能在VB下用Shell(filepath windowstyle)很容易就搞定 你还会用java吗?我写这篇文章的目的是希望大家找到一种更好的方法来实现这个功能 lishixinzhi/Article/program/Java/hx/201311/25805  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码