|
|
| |
|
驱动器容量 | |
| 阅读 642 次 更新时间:2014/4/18 | |
|
驱动器容量 要得到驱动器的容量和剩余容量,用下面的程序 var driver:pchar; sec1, byt1, cl1, cl2:longword; begin driver:='c:\';//要显示的驱动器名 GetDiskFreeSpace(driver, sec1, byt1, cl1, cl2); cl1 := cl1 * sec1 * byt1; cl2 := cl2 * sec1 * byt1; Label1.Caption := '该驱动器总共容量'
+ Formatfloat('###,##0',cl2) + '字节'; Label2.Caption := '该驱动器可用容量'
+ Formatfloat('###,##0',cl1) + '字节'; end; 辨别分辨率 要得到显示器的分辨率,由下列程序得到: var x:longint; a:string; begin x := GetSystemMetrics(SM_CXSCREEN); Str(x,a); Label1.Caption := '显示器水平分辨率'
+ a; x := GetSystemMetrics(SM_CYSCREEN); Str(x,a); Label2.Caption := '显示器垂直分辨率'
+ a; end; 控制热启动 要使系统的热启动键(Ctrl+Alt+Del)失效,使用以下语句 SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0,
0); 要恢复系统的热启动键(Ctrl+Alt+Del),使用以下语句 SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0,
0); 启动屏幕保护 执行下列语句开始Windows屏幕保护程序 SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_SCREENSAVE,0); 取系统颜色 要取得系统颜色,把参数换一下就可以 COLOR_SCROLLBAR 滚动条 COLOR_BACKGROUND
桌面背景 COLOR_ACTIVECAPTION
活动窗口标题 cOLOR_INACTIVECAPTION 非活动窗口标题 cOLOR_MENU
菜单 COLOR_WINDOW
窗口背景 cOLOR_WINDOWFRAME 窗口框 COLOR_MENUTEXT
窗口文字 COLOR_WINDOWTEXT
3D 阴影
(Win95) COLOR_CAPTIONTEXT 标题文字 COLOR_ACTIVEBORDER
活动窗口边框 COLOR_INACTIVEBORDER
非活动窗口边框 COLOR_APPWORKSPACE
MDI 窗口背景 COLOR_HIGHLIGHT 选择条背景 COLOR_HIGHLIGHTTEXT 选择条文字 COLOR_BTNFACE 按钮 COLOR_BTNSHADOW 3D
按钮阴影 COLOR_GRAYTEXT
灰度文字 COLOR_BTNTEXT 按钮文字 COLOR_INACTIVECAPTIONTEXT 非活动窗口文字 COLOR_BTNHIGHLIGHT
3D 选择按钮} var i:integer; begin //取得活动窗口标题颜色 i :=GetSysColor(COLOR_ACTIVECAPTION); end; 打开拨号连接 调用拨号网络里的拨号程序来连接:其中'连接Internet'为你创建的拨号程序名称 winexec('rundll32.exe rnaui.dll,RnaDial '+'连接Internet',9); 关闭Windows 控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等, ExitWindowsEx(UINT uFlags,DWORD
dwReserved);是实现这一功能的API函数 首先定义常数 const EWX_FORCE=4; //关闭所有程序并以其他用户身份登录 EWX_LOGOFF=0; //重新启动计算机并切换到MS-DOS方式 EWX_REBOOT=2; //重新启动计算机 EWX_SHUTDOWN=1;//关闭计算机 运行时给How赋值,让他等于EWX_SHUTDOWN或其他,调用以下语句 ExitWindowsEx(How,0); 改计算机名 改变计算机在网络中的名字,重新启动后才生效 SetComputerName('Hello World'); 控制壁纸 控制Windows
95的壁纸,以下程序使壁纸变为我们想要的位图,如果THEPCHAR为空,那么就取消壁纸,变为Win默认色彩; 但这种方法只是暂时的,在WINDOWS重新启动后还是原来的位图,这时就需要对WIN.INI文件进行写操作,才能保存住我们改动的图片不被替换。 var THEPCHAR:pchar; begin THEPCHAR:='e:\a.bmp'; SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
THEPCHAR, SPIF_SENDWININICHANGE) end; 限制FORM的大小 使用过DELPHI的朋友都会注意到DELPHI本身最上面的窗口, 当它极大时只占屏幕的一小部分,它是如何实现的呢,请看下面的说明: 1)在FORM私有声明部分加上如下一行: procedure WMGetMinMaxInfo( var
Message:TWMGetMinMaxInfo ); message WM_GETMINMAXINFO; 2)在声明部分加上如下几行: procedure TForm1.WMGetMinMaxInfo( var Message
:TWMGetMinMaxInfo ); begin with Message.MinMaxInfo^ do begin ptMaxSize.X := 200; {最大化时宽度} ptMaxSize.Y := 200; {最大化时高度} ptMaxPosition.X := 99; {最大化时左上角横坐标} ptMaxPosition.Y := 99; {最大化时左上角纵坐标} end; Message.Result := 0; {告诉Windows你改变了 minmaxinfo} inherited; end; 动态修改显示器分辨率 Windows提供给我们两个API函数,可以动态调整显示器的分辨率,他们是EnumDisplaySettings()
和ChangeDisplaySettings(),下面这个例子就是了 function DynamicResolution(X, Y: word): BOOL; var lpDevMode: TDeviceMode; begin Result := EnumDisplaySettings(nil, 0, lpDevMode); if Result then begin lpDevMode.dmFields := DM_PELSWIDTH Or
DM_PELSHEIGHT; lpDevMode.dmPelsWidth := X; lpDevMode.dmPelsHeight := Y; Result := ChangeDisplaySettings(lpDevMode, 0)=
DISP_CHANGE_SUCCESSFUL; end end; procedure TForm1.Button1Click(Sender: TObject); begin if DynamicResolution(640, 480) then ShowMessage('Now is 640*480'); end; procedure TForm1.Button2Click(Sender: TObject); begin if DynamicResolution(800, 600) then ShowMessage('Now is 800*600'); end; 回车替Tab下移控件 需要用回车键代替TAB键下移一个控件时,把KeyPress设为True,加入下列代码拦截击键: Procedure TForm1.FormKeyPress(Sender:Tobject;Var
Key:Char); Begin if
key=#13 then { 判断是按执行键} if
not (ActiveControl is TDbgrid) Then Begin
{ 不是在TDbgrid控件内} key:=#0; perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件} end
else if
(ActiveControl is TDbgrid) Then{是在
TDbgrid 控件内} begin With
TDbgrid(ActiveControl) Do if
Selectedindex<(FieldCount-1) then Selectedindex:=Selectedindex+1{
移动到下一字段} else
Selectedindex:=0; end; End; 模拟按下某键 让
WIN95 模拟按了一个按键,就向某窗体发送按键一样,例如按下
ENTER 或者 TAB 键,或者按 7 键 PostMessage(Object.Handle, WM_KEYDOWN, VK_TAB, 0); {Object表示窗体名,WM_KEYDOWN是按下,VK_TAB是发送的按键} PostMessage(edit1.Handle, WM_KEYDOWN, 55, 0); {向edit1发送一个7字} 隐藏桌面上的图标 使桌面上的图标消失,连桌面上的右键功能也不能使用如果不让初学者乱用“我的电脑”的话,那么把程序放到“启动”里,顺便把“Windows资源管理器”也去掉,
再加上个多用户密码,那么想破坏电脑文件也无从下手了。该程序Delphi
4里通过 var hDesktop : THandle; begin hDesktop := FindWindow('Progman', nil); ShowWindow(hDesktop, SW_HIDE); end; 屏蔽系统功能键 当你不需要让用户按Alt+Enter、Ctrl+Alt+Del、Ctrl+Esc等功能键的时候加入以下代码: Var temp:integer; begin SystemParametersInfo(Spi_screensaverrunning,1,@temp,0); end; 当你要恢复功能键时用以下代码: Var Temp:integer; begin SystemParametersInfo(spi_screensaverrunning,0,@temp,0); end; 隐藏和显示WINDOWS任务栏
procedure TForm1.Button1Click(Sender: TObject); //隐藏任务栏
var hTaskBar : THandle;
begin hTaskbar := FindWindow('Shell_TrayWnd',
Nil); ShowWindow(hTaskBar, SW_HIDE); end;
procedure TForm1.Button2Click(Sender: TObject); //显示任务栏 var
hTaskBar : THandle;
begin
hTaskbar := FindWindow('Shell_TrayWnd', Nil);
ShowWindow(hTaskBar, SW_SHOWNORMAL); end;
(归根到底,还是使用了Windows API。) 任意打印 有时我们要打印任意排列的表或往已经印好的登记表上对号入座写上数据时,可以新建一个窗体(假设为Form1),再把Form1的BorderStyle设为bsNone、AutoScroll设为True,接下来再创建一个新窗体(假设为Form2),再建个按钮Button1,编写代码: procedure TForm2.Button1Click(Sender: TObject); begin Form1.Width :=900; Form1.Height :=800; Form1.Print; end; 接下来你在Form1上对应的位置写上数据,运行后按Button1就会一五一十的打印下来了。 在程序运行一耗时操作时改变鼠标形状 begin
screen.cursor:=crHourglass;
try ... // do some long-time work
finally screen.cursor:=crDefault;
end; end; 怎样关闭和打开显示器 {关闭显示器}
SendMessage(Application.Handle, WM_SYSCOMMAND,
SC_MONITORPOWER, 0); {打开显示器}
SendMessage(Application.Handle, WM_SYSCOMMAND,
SC_MONITORPOWER, -1); | |
|
|
|