setA是一个设置各类windows窗口透明度的工具,在多种windows系统上兼容,且支持多参数,也支持大多数版本的cmd.exe黑窗口透明度设置。修补同类工具各种缺陷,也是你能找到的最好的。源码做了宽窄字符和各类编译器兼容,VS、GCC通吃,另外还有一些隐藏功能,比如窗口锁请自行挖掘。(图片均为外链,随时失效)
SETA.EXE (CONSOLE SET WINDOW ALPHA TRANSPARENT TOOL, BY LEO, VERSION 1.0)
下载链接: https://pan.baidu.com/s/1V00ewoE3CyCyfgsS10semQ?pwd=eitp

摘要:
===================================
命令行下的 窗口透明度 设置工具,参数缺省可自动补全。
===================================
用法:(指定颜色需用R,G,B格式表示)
setA -t [窗口标题] -a [透明度] -r [指定颜色透明]
举例: | | | setA -t"1.txt - 记事本" -r100,120,158 | | setA -t"1.txt - 记事本" -r100,120,158 | | setA -t"1.txt - 记事本" -a100 | | setA -t"1.txt - 记事本" -r100,120,158 | | setA -t"1.txt - 记事本" -a100 -r100,120,158 | | | | REM 设置当前控制台窗口透明度;请自行发挥,参数随意 ... | | setA -a | | setA -r | | setA -a100 | | setA -r255,230,187 | | setA -a -rCOPY |
版本:
VERSION 1.0
源码: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #include <stdio.h> | | #include <windows.h> | | #include <tchar.h> | | | | #ifndef _UNICODE | | #define TCHARFORMAT CHAR | | #else | | #define TCHARFORMAT WCHAR | | #endif | | | | #if defined _MSC_VER | | #pragma comment(lib, "kernel32.lib") | | #pragma comment(lib, "user32.lib") | | #else | | | | BOOL WINAPI SetLayeredWindowAttributes(HWND,COLORREF,BYTE,DWORD); | | HWND WINAPI GetConsoleWindow(void); | | #endif | | | | | | #define HELP_INFORMATION "\ | | setA v1.0 - Set window alpha transparent Tool - Copyright (C) 2017-2019 by Leo\n\ | | Usage: setA -t[title] -a[alpha] -r[R,G,B]\n\ | | \n\ | | General options:\n\ | | -t Specifies the window title to be operated\n\ | | -a Set the alpha transparency value\n\ | | -r Set the RGB value\n\ | | -h SHow help information\n\ | | Official website:\n\ | | http://www.bathome.net/thread-44189-1-1.html\n" | | | | | | int OPTIND=1, OPTOPT; | | TCHAR* OPTARG; | | int _tgetopt(int nargc, TCHAR* nargv[], TCHAR* ostr) | | { | | static TCHAR* place=(TCHAR*)_T(""); | | static TCHAR* lastostr=NULL; | | register TCHAR* oli; | | | | if(ostr!=lastostr) | | { | | lastostr=ostr; | | place=(TCHAR*)_T(""); | | } | | | | if(!*place) | | { | | if( | | (OPTIND>=nargc) || | | (*(place=nargv[OPTIND])!=(TCHAR)_T('-')) || | | (!*(++place)) | | ) | | { | | place=(TCHAR*)_T(""); | | return _TEOF; | | } | | if (*place == (TCHAR)_T('-') && *(place+1) == (TCHAR)_T('\0')) | | { | | ++OPTIND; | | return _TEOF; | | } | | } | | | | if ( | | (OPTOPT=*place++)==(TCHAR)_T(':') || | | !(oli=(TCHAR*)_tcschr((TCHARFORMAT*)ostr, (TCHAR)OPTOPT)) | | ) | | { | | if(!*place) | | { | | ++OPTIND; | | } | | } | | | | if (oli != NULL && *(++oli) != (TCHAR)_T(':')) | | { | | OPTARG=NULL; | | if(!*place) | | { | | ++OPTIND; | | } | | } | | else | | { | | if(*place) | | { | | OPTARG=place; | | } | | else if(nargc<=++OPTIND) | | { | | place=(TCHAR*)_T(""); | | } | | else | | { | | OPTARG=nargv[OPTIND]; | | } | | place=(TCHAR*)_T(""); | | ++OPTIND; | | } | | return OPTOPT; | | } | | | | | | int _tmain(int argc, TCHAR** argv) | | { | | | | TCHAR* opeTITLE=NULL; | | HWND hWND=NULL; | | DWORD opeFLAG=(DWORD)0; | | INT K=-1, opeRGB=0, opeALPHA=127; | | | | if(argc<2) | | { | | | | fprintf(stdout, HELP_INFORMATION); | | exit(0); | | } | | | | | | while((K=_tgetopt(argc, argv, (TCHAR*)_T("t:a:r:hT:A:R:H")))!=_TEOF) | | { | | switch(K) | | { | | case 't': | | case 'T': | | if(OPTARG !=NULL) | | { | | opeTITLE=OPTARG; | | } | | break; | | | | case 'a': | | case 'A': | | opeFLAG |= 2; | | if(OPTARG !=NULL) | | { | | opeALPHA =_ttoi((TCHARFORMAT*)OPTARG); | | if( | | (opeALPHA == 0 && *OPTARG != _T('0')) || | | (opeALPHA <0 || 255< opeALPHA) | | ) | | { | | _ftprintf(stderr, _T("Alpha value must be in range of 0 to 255\n")); | | exit(1); | | } | | } | | break; | | | | case 'r': | | case 'R': | | opeFLAG |= 1; | | if(OPTARG !=NULL) | | { | | int tR=0, tG=0, tB=0; | | TCHAR* tSTR=NULL; | | | | tSTR=_tcstok((TCHARFORMAT*)OPTARG, _T(",")); | | if(tSTR !=NULL) | | { | | tR=_ttoi((TCHARFORMAT*)tSTR); | | if( | | (tR == 0 && *tSTR != _T('0')) || | | (tR <0 || 255< tR) | | ) | | { | | _ftprintf(stderr, _T("RGB's R-color channel value must be in range of 0 to 255\n")); | | exit(1); | | } | | } | | else | | { | | break; | | } | | | | tSTR=_tcstok(NULL, _T(",")); | | if(tSTR !=NULL) | | { | | tG=_ttoi((TCHARFORMAT*)tSTR); | | if(tG <0 || 255< tG) | | { | | _ftprintf(stderr, _T("RGB's G-color channel value must be in range of 0 to 255\n")); | | exit(1); | | } | | } | | else | | { | | break; | | } | | | | tSTR=_tcstok(NULL, _T(",")); | | if(tSTR !=NULL) | | { | | tB=_ttoi((TCHARFORMAT*)tSTR); | | if(tB <0 || 255< tB) | | { | | _ftprintf(stderr, _T("RGB's B-color channel value must be in range of 0 to 255\n")); | | exit(1); | | } | | } | | else | | { | | break; | | } | | | | opeRGB=RGB(tR, tG, tB); | | | | } | | break; | | | | case 'h': | | case 'H': | | fprintf(stdout, HELP_INFORMATION); | | exit(0); | | | | default: | | _ftprintf(stderr, _T("Unknown switch '-%c'\n"), K); | | exit(1); | | } | | } | | | | | | hWND=(opeTITLE==NULL)?GetConsoleWindow() :FindWindow(NULL, (TCHARFORMAT*)opeTITLE); | | | | if(hWND != NULL) | | { | | | | long preSYTLE = GetWindowLong(hWND, GWL_EXSTYLE); | | | | | | SetWindowLong(hWND, GWL_EXSTYLE, preSYTLE|WS_EX_LAYERED); | | | | | | if(! SetLayeredWindowAttributes(hWND, opeRGB, opeALPHA, opeFLAG)) | | { | | _ftprintf(stderr, _T("Setting window's alpha transparency failed\n")); | | exit(1); | | } | | } | | else | | { | | _ftprintf(stderr, _T("Can not find the window for the specified title\n")); | | exit(1); | | } | | return 0; | | }COPY |
附一个批处理的演示,实现任何批处理隐藏运行。 | @echo off | | for /l %%i in (255,-16,0) do ( | | setA -a%%i | | ) | | for /l %%i in (0,32,255) do ( | | setA -a%%i | | ) | | pauseCOPY |
|