애플리케이션이 실행 중일 때 시스템 환경에 대한 특별한 요구 사항이 필요한 경우가 있습니다. 예를 들어, Delphi 데이터베이스 애플리케이션에서는 BDE(Borland Database Engine) 또는 ODBC 데이터 소스 이름(DSN: 데이터 소스 이름)을 설정해야 할 수 있으며 네트워크 구성 설정, 모뎀을 설정해야 할 수도 있습니다. 속성 설정 또는 사용자 전화 접속. 연결 계정 및 비밀번호는 CTI(컴퓨터 전화 통신)에 설정되고 저장됩니다. 통합) 응용 프로그램은 게임 프로그램에서 전화 걸기 속성을 설정해야 할 수도 있으며 멀티미디어 또는 게임 컨트롤러 등을 설정해야 할 수도 있습니다. 이때 애플리케이션의 정상적인 작동을 위한 요구 사항에 맞게 Windows 시스템의 환경 설정을 변경해야 합니다. 응용 프로그램이 자체적으로 환경을 설정할 수 없는 경우 소프트웨어 사용자가 설정 완료에 참여하고 지원해야 할 수도 있습니다.
Win9X/NT의 대부분의 시스템 설정은 제어판에서 수행됩니다. 사용자에게 직접 제어판을 열고 해당 항목을 찾도록 요청할 수 있습니다. 이때 사용자는 제어판에 익숙해져야 하며 프로그램에서 자동으로 제어판을 열 수도 있습니다. 해당 항목을 선택하고 설정만 하면 됩니다. 후자의 방법은 의심할 여지 없이 더 친숙하며 사용자의 작업 효율성을 향상시킬 수 있습니다.
제어판에 있는 대부분의 프로젝트 설정은 Windows 시스템 디렉터리의 CPL 파일에 해당합니다. 예를 들어 "인터넷" 속성에 해당하는 파일은 InetCpl.cpl이고, "멀티미디어" 속성에 해당하는 파일은 MmSys입니다. cpl 등등 이러한 파일을 호출하면 해당 속성 설정 창이 열릴 수 있고 "인터넷" 속성의 "연결" 속성 페이지와 같은 해당 속성 페이지로 이동할 수도 있어 소프트웨어 사용자의 작업 단계를 효과적으로 줄일 수 있습니다.
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);
//32비트 ODBC 데이터 소스 관리자, ODBC 데이터 소스, ODBC 드라이버 설정
//"사용자 DSN", "시스템 DSN", "파일 DSN", "ODBC 드라이버", "추적" 및 "정보"의 6개 속성 페이지를 구별하기 위한 매개변수가 제공되지 않습니다.
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);
//전원 관리 설정, "전원 계획"과 "고급"의 두 속성 페이지를 구별하기 위한 매개변수가 제공되지 않습니다.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL PowerCfg.cpl', SW_SHOWNORMAL);
//모뎀 설정, "일반" 속성 페이지와 "진단" 속성 페이지를 구별하기 위한 매개변수가 제공되지 않습니다.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL 모뎀.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);
//"CD 음악" 속성 페이지
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 Installer" 속성 페이지
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL AppWiz.cpl,,2', SW_SHOWNORMAL);
//"부팅 디스크" 속성 페이지
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에서 전달되었습니다.