最新版屏幕锁---骇客帝国数字雨屏保今天大家有福了,现在就为您送上本人经制作、研究、测试成功的屏幕锁奉献给大家.希望大家不要吝啬,踊跃回贴,谢谢!
下面我就简单的讲一下制作流程,不想看的可以直接回贴下载.
首先本人在网上下载了一个176*220的数字雨图片,经过软件的放大,扩大到我们小E专用的240*320大小.在把该GIF图片的各帧保存,共72帧.所以该软件才比较大,3M多.
由于是屏保软件,在下就无法截图了,但为了让大家了解,就把第一帧的图片发上来让大家看看.安装成功后,就可以象骇客帝国里的数字雨一样.
安装方法:将四个RAR文件下载全后,解压得到MPKG文件,将该MPKG文件直接放入手机或SD卡,点击即可安装,无须更改名称和后缀,该软件经本人用E680G测试,完全可用,请放心使用,最后感谢您回贴留下您的宝贵意见供本人参考,谢谢!
在电脑上新建一个文档,写入代码,运行,就可以实现黑客帝国里数字雨的效果。具体操作方法方法如下:
1、新建一个文本文档。
2、在文档内写入以下代码,并保持。
@echo off
title digitalrain
color 0b
setlocal ENABLEDELAYEDEXPANSION
for /l %%i in (0) do (
set "line="
for /l %%j in (1,1,80) do (
set /a Down%%j-=2
set "x=!Down%%j!"
if !x! LSS 0 (
set /a Arrow%%j=!random!%%3
set /a Down%%j=!random!%%15+10
)
set "x=!Arrow%%j!"
if "!x!" == "2" (
set "line=!line!!random:~-1! "
) else (set "line=!line! ")
)
set /p=!line!nul
)
3、点击文件中的另存为,在另存的时候把文档的后缀由txt改成bat。
4、更改完成后,点击保存。
5、找到另存的文件,以管理员的身份运行。
6、运行效果如下。
注意事项:
1、如果不能运行,请检查代码的标点符号是不是有中文符号,代码内所有符号必须是英文的。
2、网上有些带有网址的(http//...)的数字雨代码,请不要使用,实现该功能不需要进入其他网址,带有网址的代码疑似为病毒,例如某经验上提供的数字雨代码。
#include windows.h
#define ID_TIMER 1
#define STRMAXLEN 25 //一个显示列的最大长度
#define STRMINLEN 8 //一个显示列的最小长度
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
typedef struct tagCharChain //整个当作屏幕的一个显示列,这是个双向列表
{
struct tagCharChain *prev; //链表的前个元素
TCHAR ch; //一个显示列中的一个字符
struct tagCharChain *next; //链表的后个元素
}CharChain, *pCharChain;
typedef struct tagCharColumn
{
CharChain *head, *current, *point;
int x, y, iStrLen; //显示列的开始显示的x,y坐标,iStrLen是这个列的长度
int iStopTimes, iMustStopTimes; //已经停滞的次数和必须停滞的次数,必须停滞的次数是随机的
}CharColumn, *pCharColumn;
int main(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("matrix") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if(!RegisterClass (wndclass))
{
MessageBox (NULL, TEXT ("此程序必须运行在NT下!"), szAppName, MB_ICONERROR) ;
return 0;
}
hwnd = CreateWindow (szAppName, NULL,
WS_DLGFRAME | WS_THICKFRAME | WS_POPUP,
0, 0,
GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
NULL, NULL, hInstance,
NULL) ;
ShowWindow (hwnd, SW_SHOWMAXIMIZED) ; //最大化显示
UpdateWindow (hwnd) ;
ShowCursor(FALSE); //隐藏鼠标光标
srand ((int) GetCurrentTime ()) ; //初始化随机数发生器
while (GetMessage (msg, NULL, 0, 0))
{
TranslateMessage (msg) ;
DispatchMessage (msg) ;
}
ShowCursor(TRUE); //显示鼠标光标
return msg.wParam ;
}
TCHAR randomChar() //随机字符产生函数
{
return (TCHAR)(rand()%(126-33)+33); //33到126之间
}
int init(CharColumn *cc, int cyScreen, int x) //初始化
{
int j;
cc-iStrLen = rand()%(STRMAXLEN-STRMINLEN) + STRMINLEN; //显示列的长度
cc-x = x+3 ; //显示列的开始显示的x坐标
cc-y =rand()%3?rand()%cyScreen:0; //显示列的开始显示的y坐标
cc-iMustStopTimes = rand()%6 ;
cc-iStopTimes = 0 ;
cc-head = cc-current =
(pCharChain)calloc(cc-iStrLen, sizeof(CharChain)); //生成显示列
for(j=0; jcc-iStrLen-1; j++)
{
cc-current-prev = cc-point; //cc-point一个显示列的前个元素
cc-current-ch = '\0';
cc-current-next = cc-current+1; //cc-current+1一个显示列的后个元素
cc-point = cc-current++; //cc-point = cc-current; cc-current++;
}
cc-current-prev = cc-point; //最后一个节点
cc-current-ch = '\0';
cc-current-next = cc-head;
cc-head-prev = cc-current; //头节点的前一个为此链的最后一个元素
cc-current = cc-point = cc-head; //free掉申请的内存要用current当参数
cc-head-ch = randomChar(); // 对链表头的 元素填充
return 0;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
//ctn 用来确定一个显示链是否 向下前进,如果等待次数超过必须等待的次数,ctn就代表要向下前进
int i, j, temp, ctn; //j为一个显示链中除链表头外的在屏幕上显示的y坐标,temp绿色过度到黑色之用
static HDC hdcMem;
HFONT hFont;
static HBITMAP hBitmap;
static int cxScreen, cyScreen; //屏幕的宽度 高度.
static int iFontWidth=10, iFontHeight=15, iColumnCount; //字体的宽度 高度, 列数
static CharColumn *ccChain;
switch (message)
{
case WM_CREATE:
cxScreen = GetSystemMetrics(SM_CXSCREEN) ; //屏幕宽度
cyScreen = GetSystemMetrics(SM_CYSCREEN) ;
SetTimer (hwnd, ID_TIMER, 10, NULL) ;
hdc = GetDC(hwnd);
hdcMem = CreateCompatibleDC(hdc);
hBitmap = CreateCompatibleBitmap(hdc, cxScreen, cyScreen);
SelectObject(hdcMem, hBitmap);
ReleaseDC(hwnd, hdc);
//创建字体
hFont = CreateFont(iFontHeight, iFontWidth-5, 0, 0, FW_BOLD, 0, 0, 0,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DRAFT_QUALITY, FIXED_PITCH | FF_SWISS, TEXT("Fixedsys"));
SelectObject(hdcMem, hFont);
DeleteObject (hFont) ;
SetBkMode(hdcMem, TRANSPARENT); //设置背景模式为 透明
iColumnCount = cxScreen/(iFontWidth*3/2); //屏幕所显示字母雨的列数
ccChain = (pCharColumn)calloc(iColumnCount, sizeof(CharColumn));
for(i=0; iiColumnCount; i++)
{
init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);
}
return 0 ;
case WM_TIMER:
hdc = GetDC(hwnd);
PatBlt (hdcMem, 0, 0, cxScreen, cyScreen, BLACKNESS) ; //将内存设备映像刷成黑色
for(i=0; iiColumnCount; i++)
{
ctn = (ccChain+i)-iStopTimes++ (ccChain+i)-iMustStopTimes;
//
(ccChain+i)-point = (ccChain+i)-head; //point用于遍历整个显示列
//第一个字符显示为 白色
SetTextColor(hdcMem, RGB(255, 255, 255));
TextOut(hdcMem, (ccChain+i)-x, (ccChain+i)-y, ((ccChain+i)-point-ch), 1);
j = (ccChain+i)-y;
(ccChain+i)-point = (ccChain+i)-point-next;
//遍历整个显示列,将这个显示列里的字符从下往上显示
temp = 0 ; //temp绿色过度到黑色之用
while((ccChain+i)-point != (ccChain+i)-head (ccChain+i)-point-ch)
{
SetTextColor(hdcMem, RGB(0, 255-(255*(temp++)/(ccChain+i)-iStrLen), 0));
TextOut(hdcMem, (ccChain+i)-x, j-=iFontHeight, ((ccChain+i)-point-ch), 1);
(ccChain+i)-point = (ccChain+i)-point-next;
}
if(ctn)
(ccChain+i)-iStopTimes = 0 ;
else continue;
(ccChain+i)-y += iFontHeight; //下次开始显示的y坐标 为当前的y坐标加上 一个字符的高度
//如果开始显示的y坐标减去 整个显示列的长度超过了屏幕的高度
if( (ccChain+i)-y-(ccChain+i)-iStrLen*iFontHeight cyScreen)
{
free( (ccChain+i)-current );
init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);
}
//链表的头 为此链表的前个元素,因为下次开始显示的时候 就相当与在整个显示列的开头添加个元素,然后在开始往上显示
(ccChain+i)-head = (ccChain+i)-head-prev;
(ccChain+i)-head-ch = randomChar();
}
BitBlt(hdc, 0, 0, cxScreen, cyScreen, hdcMem, 0, 0, SRCCOPY);
ReleaseDC(hwnd, hdc);
return 0;
case WM_RBUTTONDOWN:
KillTimer (hwnd, ID_TIMER) ;
return 0;
case WM_RBUTTONUP:
SetTimer (hwnd, ID_TIMER, 10, NULL) ;
return 0;
//处理善后工作
case WM_KEYDOWN:
case WM_LBUTTONDOWN:
case WM_DESTROY:
KillTimer (hwnd, ID_TIMER) ;
DeleteObject(hBitmap);
DeleteDC(hdcMem);
for(i=0; iiColumnCount; i++)
{
free( (ccChain+i)-current );
}
free(ccChain);
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
VC++中运行
复制以下内容到记事本,另存为“黑客帝国数字雨.bat ”运行即可或再按Alt+Enter全屏!@echo %dbg% off
setlocal ENABLEDELAYEDEXPANSION
mode con cols=80 lines=30
clsset 退格=
set redtek=" "set end=0:start set /a end+=1 call :calc set /p=!setspaces! nulping /n 1 127.1nul set /p=%退格%nul set /p=%redtek:~1,79%nulecho. goto :start:calc if %end%==28 ( set /a end=0 cls set /a cols=!random:~0,2! echo ... 风力:!cols! ... if !cols! GTR 76 set cols=76 if !cols! LSS 2 set cols=2 set setspaces=!redtek:~1,%cols%!!random:~0,1! goto :eof )@echo off
mode con cols=80
color 02
for /f %%i in (test.txt) do set str_char=%%i
set str_blank=
setlocal enabledelayedexpansion:loop
:: 取随机位置上的字符
set /a num_char=1%random:~-1%%random:~0,1%-100
set char=!str_char:~-%num_char%,1!:: 设置随机长度的空格
set /a num_blank=1%random:~-1%%random:~0,1%-100
set blank=!str_blank:~0,%num_blank%!
echo.%blank%%char%
goto loop@echo off
mode con cols=80
set a=1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#%.*(){}[]_+-=\"'?.,/^^^^^
set b=
setlocal enabledelayedexpansion
:a
set /a num=%random%%%92
set 字符=!a:~-%num%,1!
set/a c=%random%%%80
set 空格=!b:~-%c%!
echo %空格%^%字符%
goto a
@echo off
mode con cols=80 LINES=30
set a=1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#%.*(){}[]_+-=\"'?.,/^^^^^
set b=
setlocal enabledelayedexpansion
:a
set /a num=%random%%%92
set 字符=!a:~-%num%,1!
set/a c=%random%%%80
set 空格=!b:~-%c%!
::echo. %空格%^%字符%set/a i+=1
rem 指针=i 尾指针=j
set/a j=i-30
set line%i%=%空格%^%字符%
FOR /L %%v IN (%i%,-1,%j%) DO echo.!line%%v!
::ping /n 127.1nul
goto a@echo off
::mode con cols=80
setlocal ENABLEDELAYEDEXPANSION
color 02goto BEGIN
goto :eof::function mt_rand "a" "b"
:mt_rand
::(
set a=%~1
set b=%~2
set /a _mt_rand=(!random!%%(%b%-%a%))+%a%
exit /b 0
::):BEGIN
::{--
SET iWidth=80
SET iDensity=6
SET sText="#$'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
SET sText=!sText:"=!
set /A iText=90-1for /l %%i in (1,1,%iWidth%) do (
set aDown%%i=0
):loop
for /l %%I in (1,1,%iWidth%) do (
set /a aDown%%I-=1
if !aDown%%I! LSS 0 (
call :mt_rand "0" "%iDensity%"set aArrow%%I=!_mt_rand!
call :mt_rand "10" "25"set aDown%%I=!_mt_rand!
)
if !aArrow%%I! EQU 1 (
call :mt_rand "0" "%iText%"(FOR %%M IN ("!_mt_rand!") DO SET aa=!sText:~%%~M,1!)
set /p=!aa!nul
) else (
set /p= nul
)
)
goto loop
::--}:exit
exit /b 0@echo off
setlocal ENABLEDELAYEDEXPANSION
color 02for /l %%i in (1,1,80) do (
set Down%%i=0
):loop
for /l %%j in (1,1,80) do (
set /a Down%%j-=1
if !down%%j! LSS 0 (
set /a Arrow%%j=!random!%%4
set /a Down%%j=!random!%%15+10
)
if "!Arrow%%j!" == "1" (
set /a chr=!random!%%2
set /p=!chr!nul
) else (
set /p= nul
)
)
goto loop
goto :eof@echo off
setlocal ENABLEDELAYEDEXPANSION
for /l %%i in (1,1,80) do (
set Down%%i=0
)for /l %%i in (0) do (
set line=
for /l %%j in (1,1,80) do (
set /a Down%%j-=1
call set x=!down%%j!
if !x! LSS 0 (
set /a Arrow%%j=!random!%%6
set /a Down%%j=!random!%%15+10
)
call set x=!Arrow%%j!
if "!x!" == "1" (
set line=!line!1
) else (set "line=!line! ")
)
call set /p=!line!nul
)[/code]
是一个批处理,用记事本,就可以编写。把文件的格式存为.BAT格式就可以了。
壁纸?动态……动态的一般就gif gif格式好像不能做桌面壁纸吧,而且动态大图会很大,所以一般动态图都很小!如果你想用来做壁纸……是不现实的。
剧情吧工夫 : 二0 一 四- 一0- 二 三 一 五: 二 四: 二 四 闪电侠第一季第 一散剧情先容 被闪电击外的超才能 者。 Barry Allen是一个很心爱的小男孩,已经的他也领有一个幸祸完善 的野庭。但是 正在他十一岁的时刻 ,从天而降的劫难 让他的野庭分崩离析 ,她的母...
跟着 互联网正在外国快要 二0年的成长 ,内容范畴 也从本去傻年夜 乌精的拼流质,入进了垂曲范畴 的粗根细做时期 。尔信任 许多 作过互联网经营的小同伴 ,必然 打仗 过内容经营,或者者博职作内容经营。然则 ,许多 自以为作了良久 内容经营的小同伴 ,其真仅仅一个“文字编纂 ”罢了 ,为何必修 ...
SpruceMail 是一款 SaaS 产物 ,否赞助 私司宣布 赔钱的 Facebook 告白 。产物 的代价 定位很单纯:Facebook 告白 是庞大 的。您要合腾许多 工作 ,否能很快几千美圆便花失落 了却归报甚微。SpruceMail 来除了了那种庞大 性,从一开端 便为您提求一个无利否图...
甚么文献合适 用CDN添载CDN次要实用 于一点儿动态资本 文献的添载,好比 javascript文献、css样式文献、字体、图片、望频等其余资本 文献。那些文献咱们每每 搁到本身 的一点儿前端办事 器外作处置 (nginx),运用CDN便否以避免除了前端办事 器部门 事情 了。运用CDN的利益 晋...
照样 域名孬忘一点儿?那也便占了一部门 ,另外一部门 靠的便是拉广。网站的流质也是站少们最为头疼的答题,若何 提下小我 网站的流质,尔有一点儿定见 求年夜 野参照。 网站的开辟 是流质起源 的底子 ,必然 要把底子 事情 作孬,也便是作孬网站劣化事情 。零体网站劣化的孬,任何搜刮 引擎都邑 为您带...
上周,一个同伙 找尔谈天 ,答尔若何 邪规的把alexa排名弄下来,然后尔告知 他,假如 您念赚钱,便持续 存眷 alexa排名吧,假如 您念赔钱,便应该把Alexa排名忘却 失落 ! 冤家 答尔,为何呢? 尔答复 :由于 ,今朝 这些成天 存眷 Alexa排...