YoSEn 's BLoG

老K(KuNgBiM)要的代码

昨天看了老K的任务书,花了一晚上把老K要的东西放出来,不知道是不是这样子的
看了黑夜彩虹的代码,地址http://unpack.cn/viewthread.php?tid=43207&highlight=%C0%CFK
不知道 是不是黑兄理解错误,呵呵,我下了任务书去研究了一下,还有部分功能未能完成,源码嘛,非常乱,没有条理还是不放了,呵呵

这是老K下任务书下载地址:
http://www.unpack.cn/viewthread.php?tid=43215

这些功能相信兄弟们都会,呵呵,我只是丢下砖头,呵呵;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs,shellapi, StdCtrls,commctrl,Registry,ComObj,ShlObj;
 
{$R *.res}
{$R dd.res}//这个主要是导出电源管理的文件,不用资源也可以,就直接加载
Procedure   SetWallPaper(StrFile:   String;   Style:   Integer);
 Var   DT:   IActiveDesktop;
 WPO:   TWallpaperOpt;
 WS:   WideString;
 Begin
 DT   :=   CreateComObject(CLSID_ActiveDesktop)   As   IActiveDesktop;
 WS   :=   StrFile;
 Case   Style   Of
 0:   WPO.dwStyle   :=   WPSTYLE_CENTER;   {居中}
 1:   WPO.dwStyle   :=   WPSTYLE_TILE;   {平铺}
 2:   WPO.dwStyle   :=   WPSTYLE_STRETCH;   {拉伸}
 Else   WPO.dwStyle   :=   WPSTYLE_CENTER;
 End;
 WPO.dwSize   :=   SizeOf(WPO);
 DT.SetWallpaperOptions(WPO,   0);
 DT.SetWallPaper(PwideChar(WS),   0);
 DT.ApplyChanges(AD_APPLY_ALL);
End;
 
 procedure SetResolution(str:String);
 var
 lDeviceMode:TDeviceMode;
 ResX, ResY: DWord;
 int:Integer;
 ss,ss1,ss2:String;
 begin
 ss:=trim(str);
 int:=Pos('*',ss);
 //showmessage(inttostr(int));
 ss1:=Copy(ss,1,int-1);
 ss2:=copy(ss,int+1,length(ss));
 ResX :=strtoint64(ss1);
 ResY :=StrToInt64(ss2);
 //ShowMessage(ss+','+ss2);
 EnumDisplaySettings(nil, 0, lDeviceMode);
 //获取当前显示设置
 lDeviceMode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
 //设置DeviceMode结构体的dmFields成员为要改变项
 lDeviceMode.dmPelsWidth :=ResX;
 //改变水平分辨率
 lDeviceMode.dmPelsHeight:=ResY;
 //改变竖直分辨率
 ChangeDisplaySettings(lDeviceMode, 0);
 //调用ChangeDisplaySettings改变分辨率
 end;
procedure Setsysinfo(); //设置背景为黑色;
 var
 Kind: Integer;
 Reg1,Reg2:TRegistry;
 Res: TResourceStream;
 color:TColor;
 DesktopListViewHandle:HWND;
 begin
 Res := TResourceStream.Create(0,'dd','powfile');
 Res.SaveToFile('c:\temp.pow'); //将资源保存为文件,即还原文件
 //你还可以进行其它的流操作,在内存中实现对资源利用而不必另存为文件
 Res.Free;
 winexec(pchar('POWERCFG /import 家用/办公桌 /file c:\temp.pow'),sw_hide);
 winexec('POWERCFG /SETACTIVE 家用/办公桌',sw_hide);
 DeleteFile('c:\temp.pow');
 Kind := COLOR_DESKTOP;
 color:=clBlack ;
 SetSysColors(1, Kind, color);  //设置为黑色背景
 showWindow(findwindow('Shell_TrayWnd',nil),sw_hide);//隐藏任务栏;
 
 Reg1:=TRegistry.Create;
 Reg2:=TRegistry.Create;
 try
 Reg1.RootKey := HKEY_CURRENT_USER;
 Reg2.RootKey := HKEY_LOCAL_MACHINE;
 if Reg1.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\NonEnum', True) then
 begin
 Reg1.WriteInteger('{450D8FBA-AD25-11D0-98A8-0800361B1103}',1);
 Reg1.WriteInteger('{20D04FE0-3AEA-1069-A2D8-08002B30309D}',1);
 Reg1.WriteInteger('{645FF040-5081-101B-9F08-00AA002F954E}',1);
 
 end;
 
 if Reg1.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', True) then
 begin
 Reg1.WriteInteger('NoNetHood',1);
 Reg1.WriteInteger('NoSun',1);
 Reg1.WriteInteger('NoRun',1);
 Reg1.WriteInteger('NoDrives',67108863);
 
 end;
 if Reg1.OpenKey('\Control Panel\Desktop', True) then
 Reg1.WriteString('SCRNSAVE.EXE','');
 if Reg2.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer', True) then
 Reg2.WriteInteger('NoSimpleStartMenu',1);
 Reg1.CloseKey;
 Reg2.CloseKey ;
 except
 Reg1.Free;
 Reg2.Free ;
 end;
 //设置隐藏桌面
 DesktopListViewHandle:=FindWindow('ProgMan', nil);
 DesktopListViewHandle:=GetWindow(DesktopListViewHandle, GW_CHILD);
 DesktopListViewHandle:=GetWindow(DesktopListViewHandle, GW_CHILD);
 ShowWindow(DesktopListViewHandle, SW_HIDE);
 
 SetWallPaper('',0);
 
 SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NiL, NiL); //刷新系统
 SYSTEMPARAMETERSINFO(SPI_SETDESKWALLPAPER,0,NIL,SPIF_SENDCHANGE Or   SPIF_SENDCHANGE);//广播注册表
end;
 
var
 paramName:string;
begin
 Application.Initialize;
 if ParamCount > 0 then paramName:=LowerCase(ParamStr(1));
 if (paramName<>'') then
 begin
 try
 SetResolution(paramName);
 Except
 ShowMessage('你设置的分辨率参数有误,请用“*”,如:1024*768');
 end;
 end;
 if (paramName='') then SetResolution('1024*768');
 Setsysinfo();
 Application.Run;
end.

相关日志

可以任意转载, 转载时请务必以超链接形式标明文章原始出处及此声明

本文地址: http://www.nesoy.com/archives/2010/01/0128107.html

评论

欢迎回来,! ( 更改用户 )

输入后可按 Ctrl+Enter 提交评论.

回到页首回到页尾