驱动器容量

     阅读 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+EnterCtrl+Alt+DelCtrl+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),再把Form1BorderStyle设为bsNoneAutoScroll设为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);

 

 

 

 

 

 
 

Copyright 2003-2008 All Rights Reserved 自由风工作室 版权没有 [湘ICP备06002185号]
.