[C++初学]让Win8虚拟键盘透明
本帖最后由 Huryo 于 2015-7-31 15:35 编辑Win8的虚拟键盘是非常难看的。而且不透明,也就是说,鸡肋的键盘挡住了大半屏幕,键盘下的东西完全看不到。。没用过win平板的可能都不知道有这个东西。。。。
就像这样。所以我花了半天时间研究。写了下面的代码
#include <iostream>
#include <windows.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv)
{
int rtn;
HWND h_Keyboard=FindWindowA("IPTip_Main_Window","");//得到键盘的窗口句柄
GetWindowLong(h_Keyboard,rtn);//得到窗口style,用rtn装载。
rtn=rtn+WS_EX_LAYERED+WS_EX_NOACTIVATE; //加上新的Style,LAYERED是窗口透明风格,NOACTIVATE是置顶窗口但不激活窗口。
SetWindowLong(h_Keyboard,-20,rtn);//覆盖以前的Style
SetLayeredWindowAttributes(h_Keyboard,0,100,2); //设置透明
return 0;
}
因为我用的平板嘛。随身带键盘太麻烦,所以离不开虚拟键盘。这样键盘看起来比以前好看多了,而且底部透明,方便看到键盘覆盖的屏幕的内容~
这是我初学C++第写的二个小程序。大神勿喷。代码怎么写更好。。欢迎吐槽>w<。 前来支持抢沙发。兔子萌萌哒!
然后+一个while(1)的死循环
生成exe后添加启动项! #include <stdio.h>
#include <string.h>
#include <windows.h>
int main()
{
int rtn;
HWND h_Keyboard=0;
char szMe = {0};
HKEY hKey;
strcpy(szMe, GetModuleFileName(NULL, szMe, 255));
if (RegOpenKey(HKEY_CURRENT_USER, "Software\\microsoft\\windows\\currentversion\\run", &hKey) == ERROR_SUCCESS)
{
if (RegSetValueEx(hKey, "KBD_ADDIN", NULL, REG_SZ, (const BYTE*)&szMe, strlen(szMe)) != ERROR_SUCCESS)
{
MessageBox(NULL, "Can Not Create Key", "Error", MB_OK);
}
RegCloseKey(hKey);
}
else
MessageBox(NULL, "Can Not Open Key", "Error", MB_OK);
while(1)
{
h_Keyboard=FindWindowA("IPTip_Main_Window","");
if (h_Keyboard)
{
GetWindowLong(h_Keyboard,rtn);
rtn=rtn+WS_EX_LAYERED+WS_EX_NOACTIVATE;
SetWindowLong(h_Keyboard,-20,rtn);
SetLayeredWindowAttributes(h_Keyboard,0,100,2);
}
}
return 0;
} 喵喵好残暴! 透明感觉更难看了
页:
[1]