Wenn eine Anwendung ausgeführt wird, sind manchmal besondere Anforderungen an die Systemumgebung erforderlich. Beispielsweise müssen Sie in einer Delphi-Datenbankanwendung möglicherweise den BDE- (Borland Database Engine) oder ODBC-Datenquellennamen (DSN: Data Source Name) festlegen. In einer Netzwerkanwendung müssen Sie möglicherweise die Netzwerkkonfigurationseinstellungen Modem festlegen Eigenschaftseinstellungen oder Benutzereinwahl werden im System eingestellt und gespeichert (Computer-Telefonie). In der Anwendung (Integration) müssen möglicherweise die Telefonwähleigenschaften festgelegt werden. Im Spielprogramm müssen möglicherweise der Multimedia- oder Gamecontroller usw. festgelegt werden. Zu diesem Zeitpunkt müssen Sie die Umgebungseinstellungen des Windows-Systems ändern, um sie an die Anforderungen für den normalen Betrieb der Anwendung anzupassen. Wenn die Anwendung die Umgebung nicht selbst einrichten kann, muss der Softwarebenutzer möglicherweise mithelfen und beim Abschluss der Einrichtung mithelfen.
Die meisten Systemeinstellungen von Win9X/NT werden in der Systemsteuerung vorgenommen. Wir können den Benutzer bitten, das Bedienfeld selbst zu öffnen und die entsprechenden einzurichtenden Elemente zu finden. Zu diesem Zeitpunkt muss der Benutzer mit dem Bedienfeld vertraut sein. Wir können das Bedienfeld für den Benutzer auch automatisch öffnen und wählen Sie die entsprechenden Elemente aus. Zu diesem Zeitpunkt muss der Benutzer lediglich Einstellungen vornehmen. Die letztere Methode ist zweifellos benutzerfreundlicher und kann die Arbeitseffizienz des Benutzers verbessern.
Die meisten Projekteinstellungen in der Systemsteuerung entsprechen einer CPL-Datei im Systemverzeichnis von Windows. Die Datei, die dem Attribut „Internet“ entspricht, ist beispielsweise InetCpl.cpl, die Datei, die dem Attribut „Multimedia“ entspricht, ist MmSys. cpl usw. Durch Aufrufen dieser Dateien kann das entsprechende Eigenschafteneinstellungsfenster geöffnet werden, und Sie können sogar zur entsprechenden Eigenschaftenseite springen, z. B. zur Eigenschaftsseite „Verbindung“ der Eigenschaft „Internet“, wodurch die Bedienschritte für Softwarebenutzer effektiv reduziert werden.
Das Aufrufformat der CPL-Datei ist „RunDLL32.exe Shell32.dll,Control_RunDLL CPLFile.cpl,,ItemNo“ (siehe den Standardwert von HKEY_CLASSES_ROOTcplfileshellcpopencommand in der Registrierung), wobei CPLFile.cpl die CPL-Datei und ItemNo die Artikelnummer ist . In einem Delphi-Programm können Sie die Funktion WinExec oder CreatePRocess verwenden, um die CPL-Datei aufzurufen und so die Einstellungselemente des Bedienfelds aufzurufen. Wenn Sie die Eigenschaftsseite „Verbindung“ der Eigenschaft „Internet“ aufrufen möchten, um das Konto und das Passwort für eine DFÜ-Verbindung festzulegen, können Sie die Anweisung „WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl ,,3',," SW_SHOWNORMAL);"; Um die Interpretation der zweistelligen Jahreseingabe im 2000-Problem zu lösen, müssen Sie die Eigenschaftenseite „Datum“ der „Regionaleinstellungen“ aufrufen. Sie können die Anweisung verwenden: „WinExec('RunDLL32.exe Shell32 .dll,Control_RunDLL Intl.cpl, ,4',, SW_SHOWNORMAL);".
Die Liste der Anweisungen, die den Einstellungsaufrufen der einzelnen Elemente im Bedienfeld entsprechen, lautet wie folgt:
//Systemsteuerung öffnen
WinExec('RunDLL.exe Shell32.DLL,Control_RunDLL',SW_SHOWNORMAL);
//32-Bit-ODBC-Datenquellenmanager, ODBC-Datenquelle, ODBC-Treibereinstellungen
//Es werden keine Parameter zur Unterscheidung der sechs Eigenschaftenseiten „Benutzer-DSN“, „System-DSN“, „Datei-DSN“, „ODBC-Treiber“, „Tracking“ und „Info“ bereitgestellt.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL ODBCCP32.CPL',SW_SHOWNORMAL);
//BDE-Administrator
//Es werden keine Parameter bereitgestellt, um zwischen den beiden Eigenschaftenseiten „Datenbanken“ und „Konfiguration“ zu unterscheiden.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL BdeAdmin.CPL',SW_SHOWNORMAL);
//Internet-Attribut, kann den ItemNo-Parameter haben
//Eigenschaftsseite „Allgemein“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,0', SW_SHOWNORMAL);
//Eigenschaftsseite „Sicherheit“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,1', SW_SHOWNORMAL);
//Eigenschaftsseite „Inhalt“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,2', SW_SHOWNORMAL);
//Eigenschaftsseite „Verbindung“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,3', SW_SHOWNORMAL);
//Eigenschaftsseite „Programm“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,4', SW_SHOWNORMAL);
//Eigenschaftsseite „Erweitert“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,5', SW_SHOWNORMAL);
//Telefonwähleigenschaften, es werden keine Parameter zur Unterscheidung zwischen den beiden Eigenschaftenseiten „Mein Standort“ und „Telefon-Sprachtreiber“ bereitgestellt.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Telephon.cpl', SW_SHOWNORMAL);
//Energieverwaltungseinstellungen, es werden keine Parameter zur Unterscheidung der beiden Eigenschaftenseiten „Energieplan“ und „Erweitert“ bereitgestellt.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL PowerCfg.cpl', SW_SHOWNORMAL);
//Modemeinstellungen, es werden keine Parameter zur Unterscheidung zwischen den Eigenschaftenseiten „Allgemein“ und „Diagnose“ bereitgestellt
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Modem.cpl', SW_SHOWNORMAL);
//Multimedia-Einstellungen, können den Parameter „ItemNo“ haben
//Eigenschaftsseite „Audio“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,0', SW_SHOWNORMAL);
//Eigenschaftsseite „Video“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,1', SW_SHOWNORMAL);
//Eigenschaftsseite „MIDI“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,2', SW_SHOWNORMAL);
//Eigenschaftsseite „CD-Musik“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,3', SW_SHOWNORMAL);
//Eigenschaftsseite „Gerät“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,4', SW_SHOWNORMAL);
//Zusätzliche Optionseinstellungen, können den Parameter „ItemNo“ haben
//Eigenschaftsseite „Tastatur“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,1',SW_SHOWNORMAL);
//Eigenschaftsseite „Sound“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,2', SW_SHOWNORMAL);
//Eigenschaftsseite „Anzeige“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,3', SW_SHOWNORMAL);
//Eigenschaftsseite „Maus“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,4', SW_SHOWNORMAL);
//Eigenschaftsseite „Allgemein“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,5', SW_SHOWNORMAL);
//Passworteinstellung, es werden keine Parameter zur Unterscheidung zwischen den beiden Eigenschaftenseiten „Passwort ändern“ und „Benutzerkonfiguration ändern“ bereitgestellt.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL PassWord.cpl', SW_SHOWNORMAL);
//Regionale Einstellungen, können den Parameter „ItemNo“ haben
//Eigenschaftsseite „Regionale Einstellungen“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,0', SW_SHOWNORMAL);
//Eigenschaftsseite „Nummer“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,1', SW_SHOWNORMAL);
//Eigenschaftsseite „Währung“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,2', SW_SHOWNORMAL);
//Eigenschaftsseite „Zeit“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,3', SW_SHOWNORMAL);
//Eigenschaftsseite „Datum“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,4', SW_SHOWNORMAL);
//Datums-/Uhrzeiteinstellung, kann den Parameter „ItemNo“ haben
//Eigenschaftsseite „Datum und Uhrzeit“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL TimeDate.cpl,,0', SW_SHOWNORMAL);
//Eigenschaftsseite „Zeitzone“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL TimeDate.cpl,,1', SW_SHOWNORMAL);
//Mauseinstellungen, es werden keine Parameter zur Unterscheidung der drei Eigenschaftenseiten „Button“, „Pointer“ und „Move“ bereitgestellt.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Main.cpl', SW_SHOWNORMAL);
//Programmeinstellungen hinzufügen/löschen, optionaler ItemNo-Parameter
//Eigenschaftsseite „Installation/Deinstallation“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL AppWiz.cpl,,1', SW_SHOWNORMAL);
//Eigenschaftsseite „Windows Installer“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL AppWiz.cpl,,2', SW_SHOWNORMAL);
//Eigenschaftsseite „Bootdiskette“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL AppWiz.cpl,,3', SW_SHOWNORMAL);
//Netzwerkeinstellungen, es werden keine Parameter zur Unterscheidung der drei Eigenschaftenseiten „Konfiguration“, „Identifikation“ und „Zugriffskontrolle“ bereitgestellt.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL NetCpl.cpl', SW_SHOWNORMAL);
//Systemeinstellungen,
//Eigenschaftsseite „Allgemein“, kann den Parameter „ItemNo“ haben
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,0', SW_SHOWNORMAL);
//Eigenschaftsseite „Geräte-Manager“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,1', SW_SHOWNORMAL);
//Eigenschaftsseite „Hardwareprofil“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,2', SW_SHOWNORMAL);
//Eigenschaftsseite „Leistung“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,3', SW_SHOWNORMAL);
//Anzeigeeinstellungen, kann ItemNo-Parameter haben
//Eigenschaftsseite „Hintergrund“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLLdesk.cpl,,0', SW_SHOWNORMAL);
//Eigenschaftsseite „Bildschirmschoner“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLLdesk.cpl,,1', SW_SHOWNORMAL);
//Eigenschaftsseite „Aussehen“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLLdesk.cpl,,2', SW_SHOWNORMAL);
//Eigenschaftsseite „Einstellungen“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLLdesk.cpl,,3', SW_SHOWNORMAL);
//Gamecontroller-Einstellungen, kann den ItemNo-Parameter haben
//Eigenschaftsseite „Allgemein“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Joy.cpl,,0', SW_SHOWNORMAL);
//Eigenschaftsseite „Erweitert“.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Joy.cpl,,1', SW_SHOWNORMAL);
//Scanner- und Digitalkameraeinstellungen, es werden keine Parameter zur Unterscheidung der beiden Eigenschaftenseiten „Gerät“ und „Aufnahmeeinstellungen“ bereitgestellt.
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL StiCpl.cpl', SW_SHOWNORMAL);
Das obige Programm wurde debuggt und unter PWIN98+DELPHI3.0 übergeben.