Artikel ini dikumpulkan dan disusun oleh Lanyus dari "Delphi untuk pemrograman yang luar biasa".
1. Sembunyikan Taskbar
Di Windows, bilah tugas sistem pada dasarnya adalah jendela, dengan nama kelas jendela "shell_traywnd". Untuk mengimplementasikan operasi di atasnya, Anda dapat menggunakan fungsi API
FindWindow dan
Showwindow untuk mencapai tujuannya.
var
Wndhandle: Thandle;
wndclass: array [0..50] dari char;
Mulai
Strpcopy (@wndclass [0], 'shell_traywnd');
wndhandle: = findWindow (@wndclass [0], nil);
Showwindow (wndhandle, sw_hide);
akhir;
2. Pintasan tersembunyi di desktop
Seperti bilah tugas, desktop sebenarnya adalah jendela.
untuk memutuskan apakah akan ditampilkan.
3. Dapatkan ukuran dan lokasi bilah tugas
Gunakan FindWindow untuk menemukan pegangannya, dan kemudian gunakan GetWindowRect untuk mendapatkan ukuran bilah tugas saat ini.
GetWindowrect (hwnd hwnd, // pegangan jendela yang diminta
Lprect lprect // Alamat struktur yang menyimpan koordinat jendela
): Boolean;
4. Dapatkan informasi CPU
Informasi yang relevan dari CPU disimpan dalam suatu struktur, yang dienkapsulasi oleh Delphi dengan tsysteminfo dan didefinisikan sebagai berikut:
typedef struct_system_info {
serikat{
Dword Dwoemid; // Cabang Struktur berikut telah digunakan alih -alih menggunakan variabel ini
struct {
Word WProcessorsarchitecture; // menunjukkan arsitektur prosesor
kata wreserved; // cadangan kata -kata
};
};
DWORD SWPAGESIAE; // Ukuran Pagination
LPVoid LPMinimumApplicationAddress;
LPVOID LPMAXIMALPLICATIONADDRESS;
DWORD SWACTIVEPROCESSORMASK; // Topeng Prosesor Aktif
DWORD DWNumberofProcessors; // Jumlah prosesor
DWORD DWPROCESSORTEPE; // Kategori Prosesor
Dword DwallocationGranularity;
Word WProcessorLevel;
Word WProcessorRevision; // Informasi Modifikasi Prosesor
} System_info;
Di antara mereka, DWProcessorType ditentukan oleh tiga anggota: WProcessorArcitecture, WProcessorlevel dan WProcessorRevision, dan nilainya adalah:
Prosesor_intel_386: Seri Intel80386;
Processor_itnel_486: seri Intel80486;
Prosesor_intel_pentium: Intel Pentium Series;
Processor_MIPS_R4000: Seri 4000 MIPS (hanya berlaku untuk Windows NT);
Processor_alpha_21064: Seri 21064 Alpha (hanya berlaku untuk Windows NT);
Selain itu, hubungi cukup fungsi API getSystemInfo setelah mendapatkan informasi CPU.
5. Dapatkan informasi memori.
Sama seperti mendapatkan CPU, sistem masih menggunakan struktur untuk menyimpan informasi memori. Definisi informasi keadaan internal yang tersimpan ini adalah sebagai berikut:
typedef struct_memorystatus {
Dword Dwlength; // Sizeof (MemoryStatus) adalah ukuran struktur ini
Dword DwMemoryLoad; // Persentase memori saat ini yang digunakan untuk total intrinsik
DWORD DWTOTALPHYS; // Total ukuran memori fisik
DWORD DWAVAILPHYS; // Ukuran Memori Fisik Tersedia
DWORD DWTOTALPAGEFILE; // Total Halaman Ukuran File
DWORD DWAVAILPAGEFILE; // Ukuran file halaman yang tersedia
DWORD DWTOTALVIRtual;
DWORD DWAVAILVIRtual; // Ukuran memori virtual yang tersedia
} Memorystatus,*lpmemorystatus;
Akhirnya, hubungi fungsi API GlobalMemoryStatus untuk mendapatkan informasi memori.
6. Dapatkan ukuran ruang disk. (Tes ditemukan tidak akurat)
Gunakan fungsi API getDiskFreespace.
Bool getdiskfreespace (
LPCTSTR LPROOTPATHNAME, // ROOT Directory
LPDWORD LPSTORSPERCLUSTER, // Jumlah sektor per cluster
LPDWORD LPByTespersector, // Jumlah byte per sektor
LPDWORD LPNumberoffReClusters, // Jumlah cluster yang tersedia
LPDWord LptotalNumberofClusters // Jumlah total kelompok
);
Prosedur TFORM1.BITBTN1CLICK (Pengirim: Tobject);
var
SECSPCLU, BYTESPSC, FREECLU, TOTALCLU, TS, FS: DWORD;
Mulai
GetDiskFreespace ('c:/', secspclu, bytespsec, freeclu, totalclu);
Fs: = freeclu*secspclu*bytespsec;
Ts: = totalclu*secspclu*bytespsec;
Edit1.text: = formatFloat ('##, ###', ts);
EDIT2.TEXT: = FormatFloat ('##, ###', FS);
akhir;
7. Batasi rentang gerakan mouse.
Ada fungsi API siap pakai di Windows Clipcursor yang dapat membatasi kursor dari menggerakkan area tersebut.
Clipcursor bool (
Const Rect *lprect // Tunjuk ke struktur yang menyimpan data rentang persegi panjang
);
Dengan fungsi ini, Anda dapat membatasi rentang pergerakan kursor di layar. Namun, jika Anda ingin mengontrol mouse untuk bergerak dalam kisaran tetap dari jendela tertentu, Anda perlu menghubungi CA
Sebuah fungsi
MapWindowPoints, yang mengubah koordinat satu bentuk menjadi koordinat bentuk terkait lainnya.
int mapwindowpoints (
Hwnd hwndfrom, // pegangan jendela sumber
Hwnd hwndto, // menangani bentuk target
Lppoint lppoints, // arahkan ke array struktur, berisi koordinat yang perlu dikonversi
Uint cpoints // Jumlah struktur dalam array
);
Ketika parameter hwndform atau hwndto adalah null atau hwnd_desktop, ini menunjukkan bahwa bentuk sumber atau bentuk target adalah bentuk layar. Parameter lppoints dapat menunjuk ke a
Struktur Rect, saat ini CPoints
Nilai 2 akan ditetapkan ke 2.
Prosedur TFORM1.BITBTN1CLICK (Pengirim: Tobject);
var
SC: Trect;
Mulai
sc: = bitbtn2.boundsrect;
MapWindowPoints (pegangan, 0, sc, 2);
Clipcursor (@sc);
akhir;
Prosedur TFORM1.BITBTN2CLICK (Pengirim: Tobject);
var
SC: Trect;
Mulai
sc: = rect (0,0, screen.width, screen.height);
Clipcursor (@sc);
akhir;
8. Cara Memulai Penghemat Layar.
Gunakan fungsi sendMessage atau postmessage.
Prosedur tForm1.bitbtn3Click (pengirim: Tobject);
Mulai
SendMessage (hwnd_broadcast, wm_syscommand, sc_screensave, 0);
akhir;
Ada juga metode untuk memulai screen saver, memanggil fungsi SystemParametersInfo, yang dapat memulai atau menutup screen saver melalui pengaturan parameternya.
SystemParametersInfo (SPI_SetScreensaVeactive, 1, nil, 0);
SystemParametersInfo (SPI_setscreensaveactive, 0, nil, 0);
9. Periksa apakah drive sudah siap.
Tidak ada fungsi khusus untuk mendeteksi apakah drive sudah siap, juga tidak dapat secara langsung disebut fungsi API satu orang untuk mengimplementasikan operasi ini. Tapi, kami
Diskize dapat digunakan untuk mendeteksi kapasitas disk.
kapasitas.
Fungsi Diskize (drive: byte): int64;
Ketika parameter adalah 0, itu berarti bahwa drive saat ini ditentukan; ketika itu adalah 1, itu berarti disk A, 2 berarti disk B, dan sebagainya.
Ditingkatkan...