Delphi趣味程式設計例項三則

xinxinhg發表於2007-06-25

一、隱藏工作列遮蔽熱鍵

二、動態調整顯示器解析度

三、滑鼠滾輪如何程式設計

[@more@]

一、隱藏工作列遮蔽熱鍵

  在自己的程式中將工作列隱藏起來,並遮蔽Ctrl+Alt+Del和Alt+Tab等系統熱鍵,也是很有趣的。要實現它們比較容易,但千萬別忘了恢復正常,另外,本例中使用了3個API函式:FindWindow、ShowWindow和SystemParametersInfo,在使用它們之前一定要進行申明。

  Implementation

  var Hwnd:THandle;

  Tmp:integer;

  procedure TForm1.Button1Click(Sender: TObject);

  begin

  Hwnd:=FindWindow('Shell_TrayWnd',nil);

  if Hwnd<>0 then ShowWindow(Hwnd,SW_HIDE); //隱藏工作列

  SystemParametersInfo(SPI_SCREEN

  SAVERRUNNING,1,@Tmp,0); //遮蔽系統熱鍵

  end;

  procedure TForm1.Button2Click(Sender: TObject);

  begin

  Hwnd:=FindWindow('Shell_TrayWnd',nil);

  ShowWindow(Hwnd,SW_SHOW); //恢復工作列

  SystemParametersInfo(SPI_SCR

  EENSAVERRUNNING,0,@Tmp,0);

  //恢復系統熱鍵

  end;


  二、動態調整顯示器解析度

  Delphi提供了可以動態改變螢幕解析度的函式,分別是EnumDisplaySettings()和ChangeDisplaySettings()。有了它們,程式設計時可以隨時改變解析度以適應要求。下面的CRTReset函式能方便實現這一功能:

  implementation

  function CRTReset(X, Y: Word): Boolean;

  var

   lpDevMode: TDeviceMode;

  begin

   Result:= EnumDisplaySettings(nil, 0, lpDevMode); //獲取顯示模式

   if Result then begin

  lpDevMode.dmFields := DM_PELSWID

  TH 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 CRTReset(800, 600) then ShowMessage('Now is 800*600'); //呼叫函式,設定解析度為800×600

  end;


  三、滑鼠滾輪如何程式設計

  我們使用的滑鼠,很多都帶有一個滾輪,方便使用者的操作。但遺憾的是,平時程式設計多數只利用到滑鼠的左、右兩鍵,如果將滾輪操作功能也加進你的程式,定能使其增色不少。

  當滑鼠指標指向窗體中時,Delphi為滾輪滾動提供OnMouseWheel事件,我們可以對它進行相應的處理。本例中,在窗體內放置一標籤Label1,用於顯示滾輪滾動的效果。

  implementation

  var i:integer;

  procedure TForm1.FormCreate(Sender: TObject);

  begin

   i:=0;

   Label1.Caption:=inttostr(i);

  end;

  procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;

   WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);

  begin

   if WheelDelta>0 then i:=i+1 else i:=i-1;

   //wheelDelta參數列示滾動一格的值,向上滾動為正數,向下滾動則為負數

   Label1.Caption:=inttostr(i);

  end;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/166555/viewspace-920947/,如需轉載,請註明出處,否則將追究法律責任。

相關文章