`
sixingbugai
  • 浏览: 21944 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

如何调用一个windows上的应用程序呢?

阅读更多
--------------------------------------------------------------------------------
可以用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)

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

嘉帆
分享到:
评论

相关推荐

    java调用Windows应用程序

    通过上述介绍,我们可以看到Java程序调用Windows应用程序是一个非常实用且功能强大的特性。无论是简单的系统应用还是自定义的exe文件,甚至是特定类型的媒体文件,都能轻松实现。然而,在实际应用中还需注意安全性、...

    实例25 调用Windows应用程序

    在PowerBuilder中,调用Windows应用程序是一个常见的需求,特别是在集成不同工具或系统的过程中。PowerBuilder是一款强大的第四代编程语言(4GL),它提供了一个可视化开发环境,用于构建数据库应用程序。本实例将...

    windows下浏览器调用本地应用程序

    在Windows操作系统中,浏览器通常用于浏览网页和交互网络资源,但有时我们可能需要从浏览器中调用本地的应用程序,以实现特定的功能或者扩展浏览器的能力。这个过程涉及到JavaScript(JS)编程以及与.exe可执行文件...

    windows服务启动另外一个应用程序

    标题“Windows服务启动另外一个应用程序”指的是如何在Windows服务中启动一个具有GUI界面的程序,这是一个相对复杂的操作,因为服务通常运行在不同的会话(Session 0)中,而用户应用程序则运行在用户的会话中...

    Windows窗口应用程序(Win32程序) 源代码

    与MFC(Microsoft Foundation Classes)不同,Win32 API是直接调用Windows内核提供的函数,而MFC则是一个库,它封装了Win32 API,提供了更高级别的抽象和面向对象的编程模型。 "WinMain"函数是Win32应用程序的入口...

    c#调用其他应用程序

    在C#编程中,调用其他应用程序是一项常见的任务,这涉及到进程管理和权限控制。下面将详细探讨这个主题,包括如何在C#中启动其他应用程序、处理不同级别的用户权限,以及与管理员权限相关的操作。 首先,让我们看看...

    Windows 7应用程序开发包及示例代码(Visual Studio 2010 + C#) - 示例代码

    开发过程中,开发者可以参考这些示例,了解如何在C#和Visual Studio 2010环境中正确调用Windows 7 API,创建具有现代Windows体验的应用程序。同时,示例代码也是一个很好的学习资源,可以帮助开发者掌握新的编程技巧...

    定时关机windows应用程序

    总的来说,"定时关机Windows应用程序"是一个结合了C#语言特性和Windows操作系统功能的实例,它展示了如何通过编程实现一个实用的系统级任务。对于学习C#和Windows应用开发的用户来说,这是一个很好的实践项目,可以...

    C#跨应用程序调用。项目可以启动其他程序获取输出

    在C#编程中,跨应用程序调用是一种常见的需求,它允许一个程序启动、控制或通信与其他已安装在系统上的程序。这种技术对于实现系统集成、自动化任务或是扩展应用程序功能非常有用。本文将深入探讨如何使用C#进行跨...

    wince下应用程序如何调用驱动程序

    在 Windows CE 中,驱动程序是通过 XXX_Open 函数来打开的,该函数返回一个句柄,应用程序可以使用该句柄来调用驱动程序的 xxx_iocontrol 函数。 此外,在驱动程序中,需要实现对 IO 口的控制逻辑,可以根据不同的 ...

    Windows ce系统应用程序调用GPIO.rar

    综上所述,"Windows CE系统应用程序调用GPIO"这个项目涵盖了嵌入式开发中的多个关键环节,包括操作系统理解、驱动编程、应用程序设计、硬件交互和故障排查等。通过学习和实践这个项目,开发者可以掌握在Windows CE...

    应用程序调用USB驱动程序

    3. **应用程序如何调用驱动**:应用程序通常不直接与驱动程序打交道,而是通过系统API(应用程序编程接口)或者特定的库函数,如Windows的DeviceIoControl函数。这些API会将应用程序的请求转发给驱动程序,驱动程序...

    web调用本地应用程序.zip

    在IT领域,"Web调用本地应用程序"是一个重要的技术主题,尤其在构建混合式应用时。这个主题涉及到如何从Web应用程序中启动、控制或者与用户的本地应用程序进行交互。以下是对这个主题的详细解释: 首先,我们要理解...

    windows 窗体应用程序 C#音乐播放器

    在本文中,我们将深入探讨如何使用C#编程语言创建一个基于Windows窗体的应用程序,具体是设计和实现一个音乐播放器。C#是一种强大的、面向对象的编程语言,由Microsoft开发,广泛应用于桌面应用开发,包括媒体播放器...

    Windows应用程序框架

    一个简单的Windows应用程序通常会包含以下几个关键步骤: 1. **初始化**:程序启动时,首先进行初始化工作,包括设置应用程序信息、创建主窗口等。 2. **消息循环**:Windows应用程序是基于事件驱动的,通过消息循环...

    c# windows程序中调用输入法

    在C#中开发Windows应用程序时,有时我们需要集成输入法功能,以便用户能够使用他们习惯的输入方式输入文本。本文将详细介绍如何在C# Windows程序窗体中调用本地输入法。 首先,理解基础:Windows操作系统提供了标准...

    应用程序的调用实例

    在IT领域,应用程序调用是开发过程中的基本操作,它涉及到如何启动、控制以及交互不同的软件组件。在这个“菜鸟级的应用程序...通过实践和不断探索,你将逐渐成长为一个能够自如应对各种应用程序调用挑战的IT专业人士。

    C++&CLR(VS2015)编写 Windows 窗体应用程序

    ### C++ & CLR (VS2015) 编写 Windows 窗体应用程序 #### 知识点一:理解CLR与C++ - **CLR(Common Language Runtime)**:是.NET框架的核心组件之一,提供了执行环境,使得开发人员能够用多种编程语言编写代码,...

Global site tag (gtag.js) - Google Analytics