--------------------------------------------------------------------------------
可以用Runtime,使用的例子如下:
///
Runtime runtime=Runtime.getRuntime();
Process process = Runtime.getRuntime().exec("cmd /c mysql.exe <p2hp-initiate_database.sql -uroot -pchengen");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String ls_1;
while ( (ls_1=bufferedReader.readLine()) != null) System.out.println(ls_1);
///
上面的程序调用mysql程序将sql文件导入到数据库服务器中~

基本上你要实现在Java的console上面是不太可能的。。有人实现了希望告诉我一下阿。(我对console和gui不是很熟的,我不是专门搞这个的)

1.写一段Java代码。

/** * Increment 1 every 1 second and keep the output in the * same line on the Console. */package com.console;/** * Increment 1 every 1 second. * @author jiafanz */public class IncrementOneEvery1Sec{ //the right command line usage message private final static String MESSAGE = "Usage: java <path_and_filename> \n" + "\t(to execute the class file)\n\n" + "where path_and_filename indicates the system file path and name.\n\n" + "e.g. java IncrementOneEvery1Sec \r\n"; private static int value = 0; /** * This is a native method to invoke a c program. * @param value the vlaue to be printed */ public native void printConsole(int value); /** * Load the library. * * Then the runtime system later loads this shared library * into the Java class that requires it. * * a static initializer. * * e.g. * Solaris system converts "hello" to "libhello.so" * Windows system converts "hello" to "hello.dll" */ static { System.loadLibrary("printconsole"); } /** * Main method entry point. * @param args the main method argument */ public static void main(String[] args) { if (args.length != 0) { // user provided wrong parameters System.err.println("wrong parameter length."); System.out.println(MESSAGE); System.exit(1); } IncrementOneEvery1Sec test = new IncrementOneEvery1Sec(); try { while (true) { Thread.sleep(1000); test.printConsole(++value); } } catch (InterruptedException ex) { ex.printStackTrace(); } }}

基本上注释很全的,我就不解释了。
然后compile

2.生成 .h file
javah -jni com.console.IncrementOneEvery1Sec
(fully qualified modifier)

3.Native Method Implementation
(这里就我们的可爱的C了)

#include <jni.h>#include "com_console_IncrementOneEvery1Sec.h"#include <stdio.h>#include <stdlib.h>JNIEXPORT void JNICALL Java_com_console_IncrementOneEvery1Sec_printConsole(JNIEnv *env, jobject obj, jint value){ system("cls"); printf("%d\n", value); return;}

注意要用到stdlib这个头文件噢,不要忘了。

4.用gcc或者cl生成dll..(我用的是CL)

cl -IC:\jdk1.5.0_06\include -IC:\jdk1.5.0_06\include\win32 -LD IncrementOneEvery1SecImp.c -Feprintconsole.dllMicrosoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.507Copyright (C) Microsoft Corporation. All rights reserved.IncrementOneEvery1SecImp.cMicrosoft (R) Incremental Linker Version 8.00.50727.42Copyright (C) Microsoft Corporation. All rights reserved./dll/implib:printconsole.lib/out:printconsole.dllIncrementOneEvery1SecImp.obj Creating library printconsole.lib and object printconsole.exp

5.好拉,下面就可以用了。
(不要在Eclipse里面运行,好象有点问题的)
java -Djava.library.path=<yourDllFolder> <YourClass>

e.g.
java -Djava.library.path=C:\cjsdn\cjsdn\clib\cjsdn com.console.IncrementOneEvery1Sec
(我这里的cmd)

能看出我是用心写的。。斑竹加分阿。

嘉帆

如何调用一个windows上的应用程序呢?相关推荐

  1. 写一个Windows上的守护进程(4)日志其余

    写一个Windows上的守护进程(4)日志其余 这次把和日志相关的其他东西一并说了. 一.vaformat C++日志接口通常有两种形式:流输入形式,printf形式. 我采用printf形式,因为流 ...

  2. 如何实现在Windows上运行Linux程序,附示例代码

    如何实现在Windows上运行Linux程序,附示例代码 微软在去年发布了Bash On Windows, 这项技术允许在Windows上运行Linux程序, 我相信已经有很多文章解释过Bash On ...

  3. 写一个Windows上的守护进程(7)捕获异常并生成dump

    写一个Windows上的守护进程(7)捕获异常并生成dump 参考文章: (1)写一个Windows上的守护进程(7)捕获异常并生成dump (2)https://www.cnblogs.com/mk ...

  4. windows上后台运行程序

    在Linux上我们可以通过 nohup & 来在后台运行程序或者命令 在windows上我们也可以有类似的操作 那就是通过start /b 我们可以通过 start /? 来查看start的用 ...

  5. 创建一个windows服务的小程序及注意事项

    1,首先在vs中创建一个windows服务项目 会生成一个Service1.cs的文件  打开该文件 切换到代码视图  有两个方法   OnStart(string[] args)和OnStop()方 ...

  6. 我的第一个Windows Phone 7应用程序

    本来一直没有过做移动开发的想法,前短时间被CSDN一个移动大会"挑逗"的有点"心血来潮"!恰好赶上Windows Phone 7新上市,就试试吧. 目前很难找到 ...

  7. linux 正在运行的程序不能拷贝_如何实现在Windows上运行Linux程序,附示例代码

    初步了解ELF格式 首先让我们先了解什么是原生Linux程序, 以下说明摘自维基百科 In computing, the Executable and Linkable Format (ELF, fo ...

  8. 亚洲运动会简称亚运会,2022年的第19届在中国杭州举办,迎接亚运做一个线上健步走小程序活动,ElementById(“yayun“).innerHTML = “你好 亚运“;

    </head> <body><h1>我的网页</h1> <p id="demo">我的第一个段落.</p> ...

  9. 在windows上开发linux程序

    1. 概述 由于工作需要,希望能把现有代码移植到linux.基于此目的,最近做了些调研和实验. 由于自己并没有太多的linux下的工作经验,所以不考虑直接在linux平台下工作,开发. 好在现在VSC ...

最新文章

  1. Splay ---- 文艺平衡树区间翻转的建树模式
  2. spring aop使用详解
  3. firefox英文网页乱码解决方法
  4. mfc控件随框变化(EasySize的用法,仔细看绝对有用)
  5. 添加和更改webstorm主题
  6. 「leetcode」135.分发糖果【贪心算法】详细图解
  7. 洛谷P3749 [六省联考2017]寿司餐厅
  8. win10 FTP搭建全过程
  9. B 站, YYDS!看了这些 Java视频,我直呼好家伙!!!
  10. RFBnet论文翻译:感受野块网络对于精确的和快速的目标检测
  11. 微信小程序 实现路线规划
  12. python selenium模拟浏览器操作实战(武汉大学原教务系统)
  13. 解决zabbix微信报警web界面显示已送达,但微信收不到的问题
  14. docker(ELK) - logstash-elasticsearch-kibana
  15. java阳历转为阴历错了一天_Java 阴历阳历转换
  16. 音频信号转为开关控制信号_盘点模拟量信号和开关量信号区别与应用
  17. warning: LF will be replaced by CRLF in ****. The file will have its original line endings in y
  18. 为了反击爬虫,前端工程师的脑洞可以有多大?
  19. ARM中MRS汇编指令
  20. 免注册免登录,微信小程序 ChatGPT 智能问答一键体验

热门文章

  1. vlf 用法_什么是SQL虚拟日志文件(又名SQL Server VLF)?
  2. sql azure 语法_Azure Data Studio中SQL Server架构比较扩展
  3. angularjs -- 监听angularJs列表数据是否渲染完毕
  4. 部署Smokeping
  5. SQLServer 2012 可视化窗口中,设置“时间”默认值为“当前时间
  6. VBA-设置打印页面的范围
  7. HDU-5876 Sparse Graph
  8. Android开发技术周报 Issue#77
  9. IOS发送带附件的邮件
  10. NetBeans+xdebug解决无法连接xdebug问题