1、判斷Num Lock、Caps Lock、Scroll Lock指示燈狀態(tài)
以Num Lock為例:
function IsNumLockOn() : boolean;
begin
Result := (GetKeyState(VK_NUMLOCK) and $01) <> 0;
end;
如果燈亮則返回True,不亮返回False。
VK_NUMLOCK 替換成 VK_CAPITAL 或 SCROLL 則可以判斷Caps Lock 或 Scroll Lock指示燈的狀態(tài)。
2、更改ComboBox組件的下拉框的寬度
ComboBox下拉框的寬度默認是與ComboBox的寬度(Width)相同的,所以如果ComboBox的Item內(nèi)容長度比較長時,下拉框就顯示不了。這時可以用代碼更改下拉框的寬度,以顯示完整內(nèi)容:
ComboBox1.Perform(CB_SETDROPPEDWIDTH, 600, 0);
“600”表示新的寬度,可以根據(jù)需要修改。
3、激活當前的屏幕保護程序
PostMessage(GetDesktopWindow, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
4、打開Windows查找對話框(需添加ShellAPI單元)
ShellExecute(
handle,
'find',
'c:/windows', // 開始搜索的目錄
'',
'',
SW_SHOW
);
5、判斷系統(tǒng)是否是使用大字體。如果用戶設(shè)置顯示效果是大字體,將會嚴重影響軟件界面的顯示。
if Screen.PixelsPerInch = 96 then
;// 正常字體;
if Screen.PixelsPerInch = 120 then
;// 大字體;
6、取消默認的Beep。Delphi的TEdit組件中用戶按下回車鍵后,PC揚聲器都會Beep一聲。下面的代碼用于取消這一聲:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then key := #0;
end;
7、判斷外部應(yīng)用程序是否停止響應(yīng)
procedure TForm1.Button1Click(Sender: TObject);
var
H : THandle;
lngReturnValue : longint;
DWResult : DWORD;
begin
H := FindWindow('Notepad', nil); //要判斷的程序
if H > 0 then
begin
lngReturnValue := SendMessageTimeout(H, WM_NULL, 0,
0, SMTO_ABORTIFHUNG And SMTO_BLOCK, 1000, DWResult);
if lngReturnValue > 0 then
ShowMessage('Responding')
else
ShowMessage('Not responding');
end
else
ShowMessage('Application not found');
end;