เมื่อแอปพลิเคชันกำลังทำงาน บางครั้งจำเป็นต้องมีข้อกำหนดพิเศษสำหรับสภาพแวดล้อมของระบบ ตัวอย่างเช่น ในแอปพลิเคชันฐานข้อมูล Delphi คุณอาจต้องตั้งค่าชื่อแหล่งข้อมูล BDE (Borland Database Engine) หรือ ODBC (DSN: ชื่อแหล่งข้อมูล) ในแอปพลิเคชันเครือข่าย คุณอาจต้องตั้งค่าการกำหนดค่าเครือข่าย โมเด็ม การตั้งค่าคุณสมบัติหรือการเรียกเลขหมายผู้ใช้ บัญชีการเชื่อมต่อและรหัสผ่านถูกตั้งค่าและบันทึกไว้ในระบบ บูรณาการ) แอปพลิเคชันอาจต้องตั้งค่าคุณสมบัติการโทรออกทางโทรศัพท์ ในโปรแกรมเกมอาจต้องตั้งค่ามัลติมีเดียหรือตัวควบคุมเกม เป็นต้น ในเวลานี้ คุณต้องเปลี่ยนการตั้งค่าสภาพแวดล้อมของระบบ Windows เพื่อปรับให้เข้ากับข้อกำหนดสำหรับการทำงานปกติของแอปพลิเคชัน เมื่อแอปพลิเคชันไม่สามารถตั้งค่าสภาพแวดล้อมได้ด้วยตนเอง ผู้ใช้ซอฟต์แวร์อาจจำเป็นต้องเข้าร่วมและช่วยเหลือในการตั้งค่าให้เสร็จสิ้น
การตั้งค่าระบบส่วนใหญ่ของ Win9X/NT ดำเนินการในแผงควบคุม เราสามารถขอให้ผู้ใช้เปิดแผงควบคุมด้วยตนเองและค้นหารายการที่เกี่ยวข้องเพื่อตั้งค่า ในเวลานี้ ผู้ใช้จะต้องคุ้นเคยกับแผงควบคุม เรายังสามารถเปิดแผงควบคุมสำหรับผู้ใช้ในโปรแกรมได้โดยอัตโนมัติ และเลือกรายการที่เกี่ยวข้อง ในขณะนี้ สิ่งที่ผู้ใช้ต้องทำคือตั้งค่า วิธีหลังนี้เป็นมิตรกว่าอย่างไม่ต้องสงสัยและสามารถปรับปรุงประสิทธิภาพการทำงานของผู้ใช้ได้
การตั้งค่าโปรเจ็กต์ส่วนใหญ่ในแผงควบคุมสอดคล้องกับไฟล์ CPL ในไดเร็กทอรีระบบของ Windows ตัวอย่างเช่น ไฟล์ที่สอดคล้องกับแอตทริบิวต์ "Internet" คือ InetCpl.cpl ไฟล์ที่สอดคล้องกับแอตทริบิวต์ "Multimedia" คือ MmSys ซีพีแอล ฯลฯ ด้วยการเรียกไฟล์เหล่านี้ หน้าต่างการตั้งค่าคุณสมบัติที่เกี่ยวข้องสามารถเปิดขึ้นได้ และคุณยังสามารถข้ามไปยังหน้าคุณสมบัติที่เกี่ยวข้อง เช่น หน้าคุณสมบัติ "การเชื่อมต่อ" ของคุณสมบัติ "อินเทอร์เน็ต" ได้อีกด้วย ซึ่งช่วยลดขั้นตอนการทำงานสำหรับผู้ใช้ซอฟต์แวร์ได้อย่างมีประสิทธิภาพ
รูปแบบการเรียกของไฟล์ CPL คือ "RunDLL32.exe Shell32.dll,Control_RunDLL CPLFile.cpl,,ItemNo" (ดูค่าเริ่มต้นของ HKEY_CLASSES_ROOTcplfileshellcpopencommand ในรีจิสทรี) โดยที่ CPLFile.cpl คือไฟล์ CPL และ ItemNo คือหมายเลขรายการ . ในโปรแกรม Delphi คุณสามารถใช้ฟังก์ชัน WinExec หรือ CreatePRocess เพื่อเรียกไฟล์ CPL ซึ่งจะเรียกรายการการตั้งค่าของแผงควบคุม ถ้าคุณต้องการเรียกหน้าคุณสมบัติ "การเชื่อมต่อ" ของคุณสมบัติ "อินเทอร์เน็ต" เพื่อตั้งค่าบัญชีและรหัสผ่านสำหรับการเชื่อมต่อแบบเรียกผ่านสายโทรศัพท์ คุณสามารถใช้คำสั่ง "WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl) ,,3',," SW_SHOWNORMAL);"; เพื่อแก้ปัญหาการตีความการป้อนข้อมูลปีสองหลักในปัญหา 2000 คุณต้องเรียกหน้าคุณสมบัติ "วันที่" ของ "การตั้งค่าภูมิภาค" คุณสามารถใช้คำสั่ง: "WinExec('RunDLL32.exe Shell32) .dll,Control_RunDLL Intl.cpl, ,4',, SW_SHOWNORMAL);"
รายการคำสั่งที่เกี่ยวข้องกับการเรียกการตั้งค่าของแต่ละรายการในแผงควบคุมมีดังนี้:
//เปิดแผงควบคุม
WinExec('RunDLL.exe Shell32.DLL,Control_RunDLL',SW_SHOWNORMAL);
//ตัวจัดการแหล่งข้อมูล ODBC แบบ 32 บิต, แหล่งข้อมูล ODBC, การตั้งค่าไดรเวอร์ ODBC
// ไม่มีการระบุพารามิเตอร์เพื่อแยกความแตกต่างหกหน้าคุณสมบัติของ "User DSN", "System DSN", "File DSN", "ODBC Driver", "Tracking" และ "About"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL ODBCCP32.CPL',SW_SHOWNORMAL);
//ผู้ดูแลระบบ BDE
//ไม่มีการระบุพารามิเตอร์เพื่อแยกความแตกต่างระหว่างสองหน้าคุณสมบัติของ "ฐานข้อมูล" และ "การกำหนดค่า"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL BdeAdmin.CPL',SW_SHOWNORMAL);
//แอตทริบิวต์อินเทอร์เน็ต สามารถมีพารามิเตอร์ ItemNo ได้
//หน้าคุณสมบัติ "ทั่วไป"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,0', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "ความปลอดภัย"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,1', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "เนื้อหา"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,2', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "การเชื่อมต่อ"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,3', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "โปรแกรม"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,4', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "ขั้นสูง"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,5', SW_SHOWNORMAL);
//คุณสมบัติการโทรออกทางโทรศัพท์ ไม่มีการระบุพารามิเตอร์เพื่อแยกความแตกต่างระหว่างหน้าคุณสมบัติสองหน้าของ "ตำแหน่งของฉัน" และ "โปรแกรมควบคุมเสียงโทรศัพท์"
WinExec ('RunDLL32.exe Shell32.dll,Control_RunDLL Telephon.cpl', SW_SHOWNORMAL);
//การตั้งค่าการจัดการพลังงาน ไม่มีการระบุพารามิเตอร์เพื่อแยกความแตกต่างระหว่างสองหน้าคุณสมบัติของ "Power Plan" และ "ขั้นสูง"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL PowerCfg.cpl', SW_SHOWNORMAL);
//การตั้งค่าโมเด็ม ไม่มีการระบุพารามิเตอร์เพื่อแยกความแตกต่างระหว่างหน้าคุณสมบัติ "ทั่วไป" และ "การวินิจฉัย"
WinExec ('RunDLL32.exe Shell32.dll,Control_RunDLL Modem.cpl', SW_SHOWNORMAL);
//การตั้งค่ามัลติมีเดีย สามารถมีพารามิเตอร์ ItemNo ได้
//หน้าคุณสมบัติ "เสียง"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,0', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "วิดีโอ"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,1', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "MIDI"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,2', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "ซีดีเพลง"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,3', SW_SHOWNORMAL);
// หน้าคุณสมบัติ "อุปกรณ์"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,4', SW_SHOWNORMAL);
//การตั้งค่าตัวเลือกเสริม สามารถมีพารามิเตอร์ ItemNo ได้
//หน้าคุณสมบัติ "คีย์บอร์ด"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,1',SW_SHOWNORMAL);
//หน้าคุณสมบัติ "เสียง"
WinExec ('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,2', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "ดิสเพลย์"
WinExec ('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,3', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "เมาส์"
WinExec ('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,4', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "ทั่วไป"
WinExec ('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,5', SW_SHOWNORMAL);
//การตั้งค่ารหัสผ่าน ไม่มีการระบุพารามิเตอร์เพื่อแยกความแตกต่างระหว่างสองหน้าคุณสมบัติของ "เปลี่ยนรหัสผ่าน" และ "แก้ไขการกำหนดค่าผู้ใช้"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL PassWord.cpl', SW_SHOWNORMAL);
//การตั้งค่าภูมิภาค สามารถมีพารามิเตอร์ ItemNo ได้
//หน้าคุณสมบัติ "การตั้งค่าภูมิภาค"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,0', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "หมายเลข"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,1', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "สกุลเงิน"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,2', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "เวลา"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,3', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "วันที่"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,4', SW_SHOWNORMAL);
//การตั้งค่าวันที่/เวลา สามารถมีพารามิเตอร์ ItemNo ได้
//หน้าคุณสมบัติ "วันที่และเวลา"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL TimeDate.cpl,,0', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "เขตเวลา"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL TimeDate.cpl,,1', SW_SHOWNORMAL);
//การตั้งค่าเมาส์ ไม่มีการระบุพารามิเตอร์เพื่อแยกแยะหน้าคุณสมบัติสามหน้าของ "ปุ่ม" "ตัวชี้" และ "ย้าย"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Main.cpl', SW_SHOWNORMAL);
//เพิ่ม/ลบการตั้งค่าโปรแกรม พารามิเตอร์ ItemNo เสริม
//หน้าคุณสมบัติ "การติดตั้ง/ถอนการติดตั้ง"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL AppWiz.cpl,,1', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "ตัวติดตั้ง Windows"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL AppWiz.cpl,,2', SW_SHOWNORMAL);
// หน้าคุณสมบัติ "Boot Disk"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL AppWiz.cpl,,3', SW_SHOWNORMAL);
//การตั้งค่าเครือข่าย ไม่มีการระบุพารามิเตอร์เพื่อแยกแยะหน้าคุณสมบัติสามหน้าของ "การกำหนดค่า" "การระบุตัวตน" และ "การควบคุมการเข้าถึง"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL NetCpl.cpl', SW_SHOWNORMAL);
//การตั้งค่าระบบ
//หน้าคุณสมบัติ "ทั่วไป" สามารถมีพารามิเตอร์ ItemNo ได้
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,0', SW_SHOWNORMAL);
// หน้าคุณสมบัติ "ตัวจัดการอุปกรณ์"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,1', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "โปรไฟล์ฮาร์ดแวร์"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,2', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "ประสิทธิภาพ"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,3', SW_SHOWNORMAL);
//การตั้งค่าการแสดงผล สามารถมีพารามิเตอร์ ItemNo ได้
//หน้าคุณสมบัติ "พื้นหลัง"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL desk.cpl,,0', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "โปรแกรมรักษาหน้าจอ"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL desk.cpl,,1', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "ลักษณะที่ปรากฏ"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL desk.cpl,,2', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "การตั้งค่า"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL desk.cpl,,3', SW_SHOWNORMAL);
//การตั้งค่าตัวควบคุมเกม สามารถมีพารามิเตอร์ ItemNo ได้
//หน้าคุณสมบัติ "ทั่วไป"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Joy.cpl,,0', SW_SHOWNORMAL);
//หน้าคุณสมบัติ "ขั้นสูง"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Joy.cpl,,1', SW_SHOWNORMAL);
//การตั้งค่าสแกนเนอร์และกล้องดิจิตอล ไม่มีการระบุพารามิเตอร์เพื่อแยกแยะหน้าคุณสมบัติสองหน้าของ "อุปกรณ์" และ "การตั้งค่าการบันทึก"
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL StiCpl.cpl', SW_SHOWNORMAL);
โปรแกรมข้างต้นได้รับการแก้ไขและส่งผ่านภายใต้ PWIN98+DELPHI3.0