swing jframe FlashWindow

以下代码,实现了仿QQ新的消息到时候,任务栏聊天窗口闪动高亮到效果,试用jna实现,以下为全部代码(如果你仅仅用到这一个功能,可以删除无用到代码)。

</pre><pre name="code" class="java">package com.eluotuo.client.utils;

import com.sun.jna.Native;

public interface User32 extends W32API
{
    User32 INSTANCE = (User32)Native.loadLibrary("user32", User32.class, DEFAULT_OPTIONS);
    
    boolean ShowWindow(HWND hWnd, int nCmdShow);
    
    boolean SetForegroundWindow(HWND hWnd);
    
    HWND FindWindow(String winClass, String title);
    
    boolean FlashWindow(HWND hWnd, boolean bInvert);
    
    HWND FindWindow(int winClass, String title);
    
    HWND FindWindowEx(HWND hWnd, HWND childWnd, int wParam, int lParam);
    
    HWND FindWindowEx(HWND hWnd, int childWnd, int wParam, int lParam);
    
    boolean PostMessage(HWND hWnd, Integer Msg, Integer wParam, Integer lParam);
    
    boolean PostMessage(HWND hWnd, int Msg, int wParam, int lParam);
    
    boolean PostMessage(HWND hWnd, String Msg, int wParam, int lParam);
    
    boolean PostMessage(HWND hWnd, String Msg, String wParam, String lParam);
    
    boolean PostMessage(HWND hWnd, int Msg, String wParam, String lParam);
    
    boolean PostMessage(HWND hWnd, int Msg, String wParam, int lParam);
    
    boolean PostMessage(HWND hWnd, String Msg, String wParam, int lParam);
    
    void keybd_event(String bVk, String bScan, String dwFlags, String dwExtralnfo);
    
    void keybd_event(int bVk, String bScan, String dwFlags, String dwExtralnfo);
    
    void keybd_event(String bVk, int bScan, int dwFlags, int dwExtralnfo);
    
    void keybd_event(int bVk, int bScan, int dwFlags, int dwExtralnfo);
    
    void keybd_event(int bVk, int bScan, String dwFlags, int dwExtralnfo);
    
    void keybd_event(String bVk, int bScan, String dwFlags, int dwExtralnfo);
    
    boolean SendMessage(HWND hWnd, Integer Msg, Integer wParam, Integer lParam);
    
    boolean SendMessage(HWND hWnd, int Msg, int wParam, int lParam);
    
    boolean SendMessage(HWND hWnd, String Msg, int wParam, int lParam);
    
    boolean SendMessage(HWND hWnd, String Msg, String wParam, String lParam);
    
    boolean SendMessage(HWND hWnd, int Msg, String wParam, String lParam);
    
    boolean SendMessage(HWND hWnd, int Msg, String wParam, int lParam);
    
    boolean SendMessage(HWND hWnd, String Msg, String wParam, int lParam);
}


package com.eluotuo.client.utils;

import java.util.HashMap;
import java.util.Map;

import com.sun.jna.FromNativeContext;
import com.sun.jna.Pointer;
import com.sun.jna.PointerType;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIFunctionMapper;
import com.sun.jna.win32.W32APITypeMapper;

public interface W32API extends StdCallLibrary
{
    Map UNICODE_OPTIONS = new HashMap()
    {
        private static final long serialVersionUID = 1L;
        {
            put(OPTION_TYPE_MAPPER, W32APITypeMapper.UNICODE);
            put(OPTION_FUNCTION_MAPPER, W32APIFunctionMapper.UNICODE);
        }
    };
    
    Map ASCII_OPTIONS = new HashMap()
    {
        {
            put(OPTION_TYPE_MAPPER, W32APITypeMapper.ASCII);
            put(OPTION_FUNCTION_MAPPER, W32APIFunctionMapper.ASCII);
        }
    };
    
    Map DEFAULT_OPTIONS = Boolean.getBoolean("w32.ascii") ? ASCII_OPTIONS : UNICODE_OPTIONS;
    
    public static class HANDLE extends PointerType
    {
        public Object fromNative(Object nativeValue, FromNativeContext context)
        {
            Object o = super.fromNative(nativeValue, context);
            if (INVALID_HANDLE_VALUE.equals(o))
                return INVALID_HANDLE_VALUE;
            return o;
        }
    }
    
    public static class HWND extends HANDLE
    {
    }
    
    HANDLE INVALID_HANDLE_VALUE = new HANDLE()
    {
        {
            super.setPointer(Pointer.createConstant(-1));
        }
        
        public void setPointer(Pointer p)
        {
            throw new UnsupportedOperationException("Immutable reference");
        }
    };
}

User32 user32 =  User32.INSTANCE;
            HWND hwnd = user32.FindWindow(0, "窗口标题");
            user32.FlashWindow(hwnd, true);
利用java到 jna 实现user32所有到方法。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值