运行即隐藏开始和任务栏,退出即还原

查看 138|回复 6
作者:yymj   
   
运行就隐藏开始和任务栏,并在右上角生成一个带关闭按钮功能的透明小窗口
#include
void ToggleUI(const char* c, const char* n, BOOL s) {
HWND h=FindWindowA(c,n);if(h)ShowWindow(h,s?SW_SHOW:SW_HIDE);
}
void Restore() {
ToggleUI("Shell_TrayWnd",0,1);
ToggleUI("Button","开始",1);ToggleUI("Button","Start",1);
ToggleUI("Windows.UI.Core.CoreWindow","Microsoft.Windows.StartMenuExperienceHost",1);
}
void HideAll() {
ToggleUI("Shell_TrayWnd",0,0);
ToggleUI("Button","开始",0);ToggleUI("Button","Start",0);
ToggleUI("Windows.UI.Core.CoreWindow","Microsoft.Windows.StartMenuExperienceHost",0);
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM w,LPARAM l) {
switch(msg) {
case WM_CREATE:CreateWindowA("BUTTON","×",WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,0,0,30,30,hwnd,(HMENU)1,GetModuleHandle(0),0);return 0;
case WM_COMMAND:if(LOWORD(w)==1)Restore();PostQuitMessage(0);return 0;
}
return DefWindowProc(hwnd,msg,w,l);
}
int WINAPI WinMain(HINSTANCE hi,HINSTANCE,LPSTR,int) {
WNDCLASSA wc={0};wc.lpfnWndProc=WndProc;wc.hInstance=hi;wc.lpszClassName="TH";wc.hbrBackground=(HBRUSH)GetStockObject(NULL_BRUSH);
RegisterClassA(&wc);int sx=GetSystemMetrics(SM_CXSCREEN);HWND h=CreateWindowExA(WS_EX_LAYERED|WS_EX_TOPMOST,wc.lpszClassName,"",WS_POPUP,sx-40,10,30,30,0,0,hi,0);
SetLayeredWindowAttributes(h,0,180,LWA_ALPHA);HideAll();ShowWindow(h,SW_SHOW);MSG m;while(GetMessageA(&m,0,0,0))TranslateMessage(&m),DispatchMessageA(&m);
return 0;
}
上面是源码,下面是编译命令行:
g++ main.cpp -o barHider.exe -Os -static -ffunction-sections -fdata-sections -Wl,--gc-sections -luser32 -lgdi32 -mwindows
减小体积命令行:
strip --strip-all barHider.exe

命令行, 任务栏, 并在

luckystar698   
感谢分享
luckystar698   
多谢楼主分享实用的小脚本啊
luckystar698   
对我来水蛮实用。谢谢
luckystar698   
好用的小脚本,谢谢分享
luckystar698   
多谢分享!!!
luckystar698   
多谢楼主分享
您需要登录后才可以回帖 登录 | 立即注册

返回顶部