java用jna调用C语言dll接口中的回调函数怎么写

Python018

java用jna调用C语言dll接口中的回调函数怎么写,第1张

简单的你会写,那就好办,直接上代码

public interface TestAPI extends StdCallLibrary {

    interface LoginReply extends StdCallCallback {

        /**

         * 登录回调

         */

        void invoke(String userId, long retCode, String retMsg)

    }

    /**

     * 注册一个登录回调方法.此方法是dll提供的

     */

    void RegisterLoginReply(LoginReply loginReply)

}

/**

 * 实现登录回调方法

 */

private class LoginReplyCallBack implements TestAPI.LoginReply {

    @Override

    public void invoke(String userId, long retCode, String retMsg) {

        log.info("登录回调方法:{},{},{}", userId, retCode, retMsg)

    }

}

// 设置登录回调

api.RegisterLoginReply(loginReplyCallBack)

这个比较简单的,用 java.awt.Robot 来实现就行了。

Robot 对象有几个个方法就是操作键盘的:

void keyPress(int kc)

void keyRelease(int kc)

//例子

import java.awt.AWTException

import java.awt.Robot

import java.awt.event.KeyEvent

public class RobotTest {

private static Robot rbt

static{

try {

rbt=new Robot()

} catch (AWTException e) {e.printStackTrace()}

}

//按下

static void press(int kc){rbt.keyPress(kc)}

//释放

static void release(int kc){rbt.keyRelease(kc)}

static void type(int kc){press(kc)release(kc)}

public static void main(String[] args) {

//F7 长按

//press(KeyEvent.VK_F7)

//F7按一下

type(KeyEvent.VK_F7)

//...

}

}