この記事は、「Delphi for Wonderfulプログラミング」のLanyusによって収集され、編集されました。
1。タスクバーを非表示にします
Windowsでは、システムのタスクバーは本質的にウィンドウであり、ウィンドウクラス名「shell_traywnd」があります。それに関する操作を実装するには、API関数を使用できます
FindWindowと
目標を達成するためのshowwindow。
var
wndhandle:thandle;
wndclass:charの配列[0..50]。
始める
strpcopy(@wndclass [0]、 'shell_traywnd');
wndhandle:= findwindow(@wndclass [0]、nil);
showwindow(wndhandle、sw_hide);
終わり;
2。デスクトップの隠されたショートカット
タスクバーと同様に、デスクトップはクラスの名前を「findwindow」としています。
表示するかどうかを決定します。
3.タスクバーのサイズと場所を取得します
FindWindowを使用してハンドルを見つけ、GetWindowRectを使用して現在のタスクバーサイズを取得します。
getWindowRect(hwnd hwnd、//要求されたウィンドウのハンドル
lprect lprect //ウィンドウ座標を保存する構造のアドレス
):boolean;
4. CPU情報を取得します
CPUの関連情報は構造に保存されます。構造には、DelphiがTseSteminfoでカプセル化し、次のように定義されています。
typedef struct_system_info {
連合{
dword dwoemid; //次の構造ブランチが使用されています。
struct {
Word wprocessorAchitecture;
Word Wreshert; //予約単語
};
};
dword swpagesiae; //ページネーションサイズ
lpvoid lpminimumplicationAddress; //アプリケーションと動的リンクライブラリがアクセスできる最小アドレス
lpvoid lpmaximumplicationAddress; //アプリケーションと動的リンクライブラリがアクセスできる最大アドレス
DWORD SWACTIVEPROCESSORMASK; //アクティブプロセッサのマスク
dword dwnumberofprocessors
dword dwprocessortype; //プロセッサカテゴリ
DWORD DWALLOCATION GRANULARITY; //仮想メモリアドレスの割り当て
Word wprocessorlevel; //プロセッサレベル
Word wprocessorrevision; //プロセッサの変更
} system_info;
その中で、dwprocessortypeは、WPROCERSORCHITECTURETER、WPROCERSORLEVEL、およびWPROCERSORRERVISIONの3人のメンバーによって決定されます。その値は次のとおりです。
processor_intel_386:Intel80386シリーズ。
processor_itnel_486:Intel80486シリーズ。
processor_intel_pentium:Intel Pentiumシリーズ。
processor_mips_r4000:MIPSの4000シリーズ(Windows NTにのみ適用);
processor_alpha_21064:Alphaの21064シリーズ(Windows NTにのみ適用)。
さらに、CPU情報を取得した後、API関数getSystemInfoを呼び出すだけです。
5.メモリ情報を取得します。
CPUを取得するのと同じように、システムは依然として構造を使用してメモリ情報を保存します。この保存された内部状態情報の定義は次のとおりです。
typedef struct_memorystatus {
dword dwlength; // sizeof(memorystatus)はこの構造のサイズです
dword dwmemoryload;
dword dwtotalphys; //合計物理メモリサイズ
dword dwavailphys; //利用可能な物理メモリサイズ
dword dwtotalpagefile; //合計ページファイルサイズ
dword dwavailpagefile; //利用可能なページファイルのサイズ
dword dwtotalvirtual; //総仮想メモリのサイズ
DWORD DWAVAILVIRTUAL; //利用可能な仮想メモリのサイズ
} memorystatus、*lpmemorystatus;
最後に、API関数GlobalMemoryStatusを呼び出してメモリ情報を取得します。
6.ディスクのスペースサイズを取得します。 (テストが不正確であることがわかった)
API関数getDiskFreespaceを使用します。
bool getDiskFreespace(
LPCTSTR LPROOTPATHNAME、// root Directory
lpdword lpsectorspercluster、//クラスターあたりのセクターの数
lpdword lpbytespersector、//セクターあたりのバイト数
lpdword lpnumberoffreeclusters、//利用可能なクラスターの数
lpdword lptotalnumberofclusters //クラスターの総数
);
手順tform1.bitbtn1click(sender:tobject);
var
secspclu、bytespsc、freeclu、totalclu、ts、fs:dword;
始める
getDiskFreeSpace( 'C:/'、secspclu、bytespsec、freeclu、totalclu);
fs:= freeclu*secspclu*bytespsec;
ts:= totalclu*secspclu*bytespsec;
edit1.text:= formatfloat( '##、###'、ts);
edit2.text:= formatfloat( '##、###'、fs);
終わり;
7。マウスの動き範囲を制限します。
Windows Clipcursorには、カーソルがエリアの移動を制限できる既製のAPI関数があります。
ブールクリップカーズル(
const rect *lprect //長方形の範囲データを保存する構造を指します
);
この関数を使用すると、画面上のカーソルの動きの範囲を制限できます。ただし、特定のウィンドウの固定範囲内でマウスを制御したい場合は、CAに電話する必要があります
関数
MapWindowPointsは、あるフォームの座標を別の関連フォーム座標に変換します。
int mapwindowpoints(
hwnd hwndfrom、//ソースウィンドウハンドル
hwnd hwndto、//ターゲットフォームハンドル
loptoint loptoints、//変換する必要がある座標を含む構造配列を指します
uint cpoints //配列内の構造の数
);
パラメーターhwndformまたはhwndtoがnullまたはhwnd_desktopである場合、ソースフォームまたはターゲットフォームが画面形式であることを示します。パラメーターloptointsはaを指すことができます
この時点での長方構造
2の値は2に設定されます。
手順tform1.bitbtn1click(sender:tobject);
var
SC:Trect;
始める
SC:= BITBTN2.BOUNDSRECT;
MapWindowPoints(ハンドル、0、SC、2);
Clipcursor(@sc);
終わり;
手順tform1.bitbtn2click(sender:tobject);
var
SC:Trect;
始める
sc:= rect(0,0、screen.width、screen.height);
Clipcursor(@sc);
終わり;
8。スクリーンセーバーを開始する方法。
SendMessageまたはMessage Postmessage関数を使用します。
手順tform1.bitbtn3click(sender:tobject);
始める
sendMessage(hwnd_broadcast、wm_syscommand、sc_screensave、0);
終わり;
また、画面セーバーを起動する方法もあり、パラメーター設定を介してスクリーンセーバーを開始または閉じることができる機能SystemParameterSinfoを呼び出します。
SystemParameterSinfo(SPI_SETSCREENSAVEACTIVE、1、NIL、0);
SystemParameterSinfo(SPI_SETSCREENSAVEACTIVE、0、nil、0);
9。ドライブの準備ができるかどうかを確認します。
ドライブの準備ができているかどうかを検出する特別な関数はありません。また、この操作を実装するために1人のAPI関数と直接呼ばれることもできません。しかし、私たち
Disksizeを使用して、ドライブが存在しないか、準備ができていない場合は-1を返します。
容量。
function disksize(drive:byte):int64;
パラメーターが0の場合、現在のドライブが指定されていることを意味します。
増加...