JNIEXPORT void JNICALL Java_shieldHK_ShieldHotKey_Detach
(JNIEnv *env, jclass obj){
Detach();
}
5-3、编译生成 shieldHK.dll 文件
最后 shieldHK.dll 就可以在 ShieldHotKey 类里调用了。比如Attach()跟Detach();
至于去掉任务栏与上面的步骤是一样的
在这里附上C++代码:
/* Replace "dll.h" with the name of your header */
#include "registerHK.h"
#include <windows.h>
#include <cstdlib>
#include <iostream>
using namespace std;
void HideTaskBar(BOOL bHide);
void HideTaskBar(BOOL bHide)
{
int nCmdShow;
HWND hWnd;
LPARAM lParam;
hWnd = FindWindow("Shell_TrayWnd",NULL);
if(bHide == TRUE)
{
nCmdShow = SW_HIDE;
lParam = ABS_AUTOHIDE | ABS_ALWAYSONTOP;
}
else
{
nCmdShow = SW_SHOW;
lParam = ABS_ALWAYSONTOP;
}
ShowWindow(hWnd,nCmdShow);//隐藏任务栏
#ifndef ABM_SETSTATE
#define ABM_SETSTATE 0x0000000a
#endif
APPBARDATA apBar;
memset(&apBar, 0, sizeof(apBar));
apBar.cbSize = sizeof(apBar);
apBar.hWnd = hWnd;
if(apBar.hWnd != NULL)
{
apBar.lParam = lParam;
SHAppBarMessage(ABM_SETSTATE, &apBar); //设置任务栏自动隐藏
}
}
JNIEXPORT void JNICALL Java_shieldHK_RegisterHotKey_HideTaskBar
(JNIEnv *env, jclass obj, jboolean b){
HideTaskBar(b);
}
OK,全部搞定。