วิธีควบคุมหน้าต่างแอปพลิเคชันอื่นใน Delphi
วิธีควบคุมหน้าต่างแอปพลิเคชันอื่นใน Delphi
Chen Jianbing วิทยาลัยเสนาธิการการจัดการการเกษตรกวางตุ้ง
การเขียนแอปพลิเคชัน Delphi มักเกี่ยวข้องกับการดำเนินการกับแอปพลิเคชัน Windows อื่นๆ ตัวอย่างเช่น ในระบบการจัดการฐานข้อมูล หากบุคลากรทางการเงินจำเป็นต้องใช้เครื่องคิดเลข ก็สามารถเรียกใช้ฟังก์ชันเครื่องคิดเลขที่รวมอยู่ใน Windows ได้ ทุกครั้งที่ใช้งาน จะต้องเปิดเครื่องคิดเลขผ่าน "Start/Programs/Accessories/Calculator" แน่นอนว่ามันยุ่งยากมาก แน่นอนว่าคุณสามารถสร้างทางลัดไปยัง "เครื่องคิดเลข" บนเดสก์ท็อปและกำหนดปุ่มลัดได้ เมื่อคุณต้องการใช้เครื่องคิดเลข ให้กดปุ่มลัดนี้เพื่อเปิด "เครื่องคิดเลข" อย่างไรก็ตาม เนื่องจาก "เครื่องคิดเลข" เป็นโปรแกรมหน้าต่าง "ที่ไม่ใช่โมดอล" กล่าวคือ ทุกครั้งที่เรียกใช้เครื่องคิดเลข หน้าต่าง "เครื่องคิดเลข" จะเปิดขึ้น ผลลัพธ์ก็คือ "เครื่องคิดเลข" หลายสิบตัวปรากฏบนเดสก์ท็อป ไม่ใช่ จำนวนมากเท่านั้น ทำให้โอเวอร์เฮดของหน่วยความจำระบบเพิ่มขึ้นและทำให้ผู้ใช้ใช้งานไม่สะดวก สามารถควบคุมได้อย่างง่ายดายใน Delphi และเอฟเฟกต์ก็สมบูรณ์แบบ มีการเสนอวิธีการดำเนินการด้านล่างสำหรับประเด็นหลักสองประการ
1. จะควบคุมการออกแบบได้อย่างไร?
สร้างแบบฟอร์มใหม่ ใส่ปุ่มสองปุ่มในแบบฟอร์ม คำอธิบายคือ "เปิด" (นั่นคือ เริ่ม "เครื่องคิดเลข") และ "ปิด" (ออกและสิ้นสุด) และเพิ่มการประมวลผลเหตุการณ์คลิกสำหรับปุ่มเหล่านั้นตามลำดับ ดูแบบฟอร์ม Form1 และไฟล์หน่วย Unit1 สำหรับรายละเอียด
ข้อความที่สำคัญที่สุด ได้แก่:
fwnd:=FindWindow('SciCalc','เครื่องคิดเลข');
ต้นแบบฟังก์ชันคือ (ดูวิธีใช้ Delphi สำหรับรายละเอียด):
HWND ค้นหาหน้าต่าง(
LPCTSTR lpClassName, // ตัวชี้ไปที่ชื่อคลาส
LPCTSTR lpWindowName // ตัวชี้ไปที่ชื่อหน้าต่าง
-
ในที่นี้ 'SciCalc' คือชื่อคลาสของเครื่องคิดเลข และ 'เครื่องคิดเลข' คือชื่อหน้าต่างของเครื่องคิดเลข}
setWindowPos(fwnd,HWND_NOTOPMOST,0,0,0,0,SWP_SHOWWINDOW หรือ SWP_NOSIZE หรือ SWP_NOMOVE);
ต้นแบบฟังก์ชันคือ:
BOOL SetWindowPos(
HWND hWnd, // ที่จับหน้าต่าง
HWND hWndInsertAfter // ตัวจัดการลำดับตำแหน่ง
int X, // ตำแหน่งแนวนอน
int Y // ตำแหน่งแนวตั้ง
int cx // ความกว้าง
int cy // ส่วนสูง
UINT uFlags // ธงตำแหน่งหน้าต่าง
-
ShowWindow(fwnd,SW_RESTORE); //แสดง "เครื่องคิดเลข" ที่เปิดอยู่
ต้นแบบฟังก์ชันคือ:
BOOL แสดงหน้าต่าง(
HWND hWnd, // ที่จับหน้าต่าง
int nCmdShow // แสดงสถานะของหน้าต่าง
-
Ret:=WinExec('c:windowscalc.exe',SW_SHOWNORMAL); //เริ่มเครื่องคิดเลข
ต้นแบบฟังก์ชันคือ:
UINT WinExec(
LPCSTR lpCmdLine // ที่อยู่ของบรรทัดคำสั่ง
UINT uCmdShow // รูปแบบหน้าต่างสำหรับแอปพลิเคชันใหม่
-
เรียกใช้โปรแกรมเครื่องคิดเลขและตรวจสอบค่าที่ส่งคืน (โดยใช้ค่าที่ส่งคืนเพื่อตรวจสอบข้อผิดพลาดที่อาจเกิดขึ้น)
2. จะชี้แจง "ชื่อคลาส" ของแอปพลิเคชันได้อย่างไร?
หากต้องการควบคุมแอปพลิเคชัน คุณต้องชี้แจง "ชื่อคลาส" ของแอปพลิเคชันก่อน แนวคิดของ "คลาส" มีความชัดเจนอยู่แล้วในโปรแกรม Delphi ตัวอย่างเช่น สร้างแบบฟอร์มใหม่ Form1 และ "ชื่อคลาส" ของแบบฟอร์มคือ TForm1 แล้วจะกำหนด "ชื่อคลาส" ของโปรแกรม Windows อื่นได้อย่างไร?
โชคดีที่ Delphi มีเครื่องมือที่ใช้งานได้จริงที่เรียกว่า Winsight ซึ่งเปรียบเสมือนกระจกที่เผยให้เห็น "ชื่อคลาส" ของสัตว์ประหลาดไม่ว่าพวกมันจะอยู่ที่ใด
วิธีใช้ Winsight มีดังนี้:
⑴ เรียกใช้ Winsight (ชื่อโปรแกรมคือ ws32.exe ในไดเร็กทอรีเดียวกับไฟล์หลัก delphi32.exe) ดูรูปที่ 1;
⑵ เลือก "Follow Focus" ใน "Spy" จากเมนู Winsight ดังแสดงในรูปที่ 2;
⑶เรียกใช้โปรแกรม "เครื่องคิดเลข"
⑷เป้าหมายจะแสดงใน Winsight ดังแสดงในรูปที่ 3
สภาพแวดล้อมซอฟต์แวร์: จีน Win98/จีน Delphi5.0