java使用jintellitype捕獲熱鍵,修改剪貼板

 可以用來粘貼隨機測試數據

 

package com.superzlc.test;

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;

import com.melloware.jintellitype.HotkeyListener;
import com.melloware.jintellitype.JIntellitype;
import com.melloware.jintellitype.JIntellitypeConstants;

/**
 * 去git上下載源碼,編譯安裝,再把兩個dll複製到mvn倉庫剛安裝的裏的com.melloware.jintellitype下。
 * maven導入依賴,再使用下面的代碼。
 * 簡單使用:註冊按鍵,設置熱鍵id和對應的鍵位;監聽熱鍵事件,根據熱鍵id執行不同的邏輯。
 *
 */
public class TestHotKey implements HotkeyListener {

	public static void main(String[] argv) {

		new TestHotKey().start();
	}

	void start() {
		System.out.println("啓動全局快捷鍵監聽");

		JIntellitype jinstance = JIntellitype.getInstance();
		jinstance.registerHotKey(1001, JIntellitypeConstants.MOD_CONTROL, (int) 'B');
		jinstance.registerHotKey(1002, JIntellitypeConstants.MOD_CONTROL | JIntellitypeConstants.MOD_SHIFT, (int) 'B');
		jinstance.addHotKeyListener(this);

	}

	boolean isChangeNumAddOne = true;

	@Override
	public void onHotKey(int identifier) {
		System.out.println("onHotKey: " + identifier);
		if (identifier == 1002) { // 啓用禁用剪貼板數據更新
			isChangeNumAddOne = !isChangeNumAddOne;
			if (isChangeNumAddOne) {
				System.out.println("啓動剪貼板更新");
			} else {
				System.out.println("停用剪貼板更新");
			}
		} else if (identifier == 1001) {
			if (isChangeNumAddOne) { // 執行剪貼板數據更新
				changeNumAddOne();
			} else {
				System.out.println("沒有剪貼板更新");
			}
		}
	}

	// 剪貼板如果是數字格式字符串,那修改+1
	static void changeNumAddOne() {
		String str = getClipboardString();
		System.out.println("讀取剪貼板: " + str);
		if (str == null) {
			return;
		}

		String str2 = addOne(str);
		if (str2 != null) {
			setClipboardString(str2);
			System.out.println("設置剪貼板: " + str2);
		}
	}

	static String addOne(String str) {
		if (str.matches("\\d+\\.?\\d+")) {
			int x = str.indexOf('.');
			if (x > 0) {
				long a = Long.parseLong(str.substring(0, x)) + 1;
				return a + str.substring(x);
			} else {
				return String.valueOf(Long.parseLong(str) + 1);
			}
		}
		return null;
	}

	public static void setClipboardString(String text) {
		Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
		cb.setContents(new StringSelection(text), null);
	}

	public static String getClipboardString() {
		Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
		Transferable transf = cb.getContents(null);
		if (transf != null) {
			if (transf.isDataFlavorSupported(DataFlavor.stringFlavor)) {
				try {
					return (String) transf.getTransferData(DataFlavor.stringFlavor);
				} catch (Exception e) {
					//e.printStackTrace();
				}
			}
		}
		return null;
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章