Java运用JNI调用dll(含源码)实现屏蔽系统热键和(4)

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,全部搞定。

编写高质量代码 改善Java程序的151个建议 PDF高清完整版

Java 8简明教程

Java对象初始化顺序的简单验证

Java对象值传递和对象传递的总结

Java对象序列化ObjectOutputStream和ObjectInputStream示例

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7e495d911c9f630b70ec743cca7e0b07.html