บทความนี้ถูกรวบรวมและรวบรวมโดย Lanyus จาก "Delphi สำหรับการเขียนโปรแกรมที่ยอดเยี่ยม"
1. ซ่อนแถบงาน
ใน Windows แถบงานของระบบเป็นหน้าต่างเป็นหลักโดยมีชื่อคลาสหน้าต่าง "shell_traywnd" ในการใช้งานการดำเนินงานคุณสามารถใช้ฟังก์ชั่น API
Findwindow และ
Showwindow เพื่อให้บรรลุเป้าหมาย
วาจา
Wndhandle: Thandle;
wndclass: อาร์เรย์ [0..50] ของถ่าน;
เริ่ม
strpcopy (@wndclass [0], 'shell_traywnd');
wndhandle: = findwindow (@wndclass [0], nil);
showwindow (wndhandle, sw_hide);
จบ;
2. ทางลัดที่ซ่อนอยู่บนเดสก์ท็อป
เช่นเดียวกับแถบงานเดสก์ท็อปเป็นหน้าต่าง
เพื่อตัดสินใจว่าจะแสดงหรือไม่
3. รับขนาดและตำแหน่งของแถบงาน
ใช้ FindWindow เพื่อค้นหาที่จับจากนั้นใช้ GetWindowRect เพื่อรับขนาดแถบงานปัจจุบัน
getWindowRect (hwnd hwnd, // ที่จับของหน้าต่างที่ร้องขอ
lprect lprect // ที่อยู่ของโครงสร้างที่เก็บพิกัดหน้าต่าง
): บูลีน;
4. รับข้อมูล CPU
ข้อมูลที่เกี่ยวข้องของ CPU จะถูกเก็บไว้ในโครงสร้างซึ่งถูกห่อหุ้มโดย Delphi ด้วย tsysteminfo และถูกกำหนดดังนี้:
typedef struct_system_info {
สหภาพ {
dword dwoemid;
โครงสร้าง {
Word Wprocessorarchitecture;
คำพูด
-
-
dword swpagesiae;
LPVOID LPMINIMUMAPPLICATIONDDRESS;
LPVOID LPMAXIMUMAPPLICATIONDDRESS;
DWORD SWACTIONPROCESSORMASK;
dword dwnumberofprocessors;
dword dwprocessortype;
dword dwallocationgranularity;
Word Wprocessorlevel;
Word Wprocessorrevision;
} system_info;
ในหมู่พวกเขา DWProcessortype ถูกกำหนดโดยสมาชิกสามคน: WProcessorArchitecture, WProcessorLevel และ WProcessorRevision และค่าของมันคือ:
processor_intel_386: Intel80386 series;
processor_itnel_486: Intel80486 series;
processor_intel_pentium: Intel Pentium Series;
processor_mips_r4000: ซีรีส์ 4000 ของ MIPS (ใช้ได้เฉพาะกับ Windows NT);
processor_alpha_21064: ซีรี่ส์ 21064 ของอัลฟ่า (ใช้ได้เฉพาะกับ Windows NT);
นอกจากนี้เพียงโทรหาฟังก์ชั่น API GetSystemInfo หลังจากได้รับข้อมูล CPU
5. รับข้อมูลหน่วยความจำ
เช่นเดียวกับการได้รับ CPU ระบบยังคงใช้โครงสร้างเพื่อจัดเก็บข้อมูลหน่วยความจำ คำจำกัดความของข้อมูลสถานะภายในที่เก็บไว้นี้มีดังนี้:
typedef struct_memorystatus {
dword dwlength;
dword dwmemoryload;
dword dwtotalphys;
dword dwavailphys;
dword dwtotalpagefile;
dword dwavailpagefile;
dword dwtotalvirtual;
DWORD DWAVAILVIRTUAL;
} MemoryStatus,*lpmemorystatus;
ในที่สุดเรียกใช้ฟังก์ชั่น API GlobalMemorystatus เพื่อรับข้อมูลหน่วยความจำ
6. รับขนาดพื้นที่ดิสก์ (การทดสอบที่พบไม่ถูกต้อง)
ใช้ฟังก์ชั่น API getDiskFreespace
บูล getDiskFreespace (
LPCTSTR LPROOTPATHNAME, // ROOT DIREATHORY
lpdword lpsectorspercluster, // จำนวนของภาคต่อคลัสเตอร์
lpdword lpbytespersector, // จำนวนไบต์ต่อเซกเตอร์
lpdword lpnumberoffreeclusters, // จำนวนกลุ่มที่มีอยู่
lpdword lptotalnumberofclusters // จำนวนกลุ่มทั้งหมด
-
ขั้นตอน tform1.bitbtn1click (ผู้ส่ง: tobject);
วาจา
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. จำกัด ช่วงการเคลื่อนไหวของเมาส์
มีฟังก์ชั่น API สำเร็จรูปใน Windows Clipcursor ที่สามารถ จำกัด เคอร์เซอร์จากการเคลื่อนย้ายพื้นที่
Bool Clipcursor (
const rect *lprect // ชี้ไปที่โครงสร้างที่เก็บข้อมูลช่วงสี่เหลี่ยมผืนผ้า
-
ด้วยฟังก์ชั่นนี้คุณสามารถ จำกัด ช่วงของการเคลื่อนไหวของเคอร์เซอร์บนหน้าจอ อย่างไรก็ตามหากคุณต้องการควบคุมเมาส์ให้เคลื่อนที่ภายในช่วงที่กำหนดของหน้าต่างที่แน่นอนคุณต้องโทรหา CA
ฟังก์ชั่น
MapWindowPoints ซึ่งแปลงพิกัดของรูปแบบหนึ่งเป็นพิกัดรูปแบบอื่นที่เกี่ยวข้อง
int mapwindowpoints (
hwnd hwndfrom, // ที่จับหน้าต่างแหล่งที่มา
hwnd hwndto, // ที่จับแบบฟอร์มเป้าหมาย
LPPOINT LPPOINTS, // ชี้ไปที่อาร์เรย์โครงสร้างที่มีพิกัดที่ต้องแปลง
UINT CPOINTS // จำนวนโครงสร้างในอาร์เรย์
-
เมื่อพารามิเตอร์ HWNDFORM หรือ HWNDTO เป็น NULL หรือ HWND_DESKTOP จะระบุว่ารูปแบบต้นฉบับหรือรูปแบบเป้าหมายเป็นรูปแบบหน้าจอ พารามิเตอร์ lppoints สามารถชี้ไปที่ก
โครงสร้างการแก้ไขในเวลานี้ cpoints
ค่า 2 จะถูกตั้งค่าเป็น 2
ขั้นตอน tform1.bitbtn1click (ผู้ส่ง: tobject);
วาจา
SC: Trect;
เริ่ม
SC: = bitbtn2.boundsrect;
MapWindowPoints (มือจับ, 0, SC, 2);
Clipcursor (@SC);
จบ;
ขั้นตอน tform1.bitbtn2click (ผู้ส่ง: tobject);
วาจา
SC: Trect;
เริ่ม
SC: = rect (0,0, screen.width, screen.height);
Clipcursor (@SC);
จบ;
8. วิธีเริ่มต้นการประหยัดหน้าจอ
ใช้ฟังก์ชั่น sendMessage หรือ postmessage
ขั้นตอน tform1.bitbtn3click (ผู้ส่ง: tobject);
เริ่ม
SendMessage (hwnd_broadcast, wm_syscommand, sc_screensave, 0);
จบ;
นอกจากนี้ยังมีวิธีการเริ่มต้นโปรแกรมรักษาหน้าจอเรียกใช้ฟังก์ชัน SystemParametersInfo ซึ่งสามารถเริ่มต้นหรือปิดการประหยัดหน้าจอผ่านการตั้งค่าพารามิเตอร์
SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, 1, NIL, 0);
SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, 0, NIL, 0);
9. ตรวจสอบว่าไดรฟ์พร้อมหรือไม่
ไม่มีฟังก์ชั่นพิเศษในการตรวจสอบว่าไดรฟ์พร้อมหรือไม่และไม่สามารถเรียกได้โดยตรงว่าฟังก์ชั่น API แบบบุคคลเดียวเพื่อใช้งานการดำเนินการนี้ แต่เรา
Disksize สามารถใช้ในการตรวจจับความจุของดิสก์
ความจุ.
ฟังก์ชั่น disksize (ไดรฟ์: ไบต์): int64;
เมื่อพารามิเตอร์คือ 0 นั่นหมายความว่ามีการระบุไดรฟ์ปัจจุบัน
เพิ่มขึ้น...