<< Klicken um Inhaltsverzeichnis aufzurufen >> Navigation: Channels > Dynamische Channels > Beispiele zu Dynamischen Channels |
Beispiel 1: Dynamischer Channel für laufende Anwendungen
Dieses Beispiel zeigt, wie man alle Benutzer adressieren kann, welche momentan eine bestimme Anwendung verwenden (in diesem Beispiel: Notepad). Die Prozessliste wird hierbei mit dem eingetragenen Prozessnamen überprüft und identifiziert.
program ChannelScript; |
Beispiel 2: Dynamischer Channel für eine Website / Anwendungstitel
Dieses Beispiel zeigt, wie man mit einem Dynamischen Channel den Titel einer Anwendung bzw. eines Fensters überprüfen kann. In diesem Beispiel wird die Nachricht so lange angezeigt, wie auch der Titel des Fensters bzw. der Anwenung vorhanden ist. Zusätzlich wird die Nachricht erst dann gestoppt, wenn die Nachricht bereits angezeigt wurde, aber die Konditionen nicht mehr übereinstimmen.
program ChannelScript; |
Beispiel 3: Einen Response von einem Dynamischen Channel senden
In diesem Beispiel verwenden wir einen Dynamischen Channel um zu überprüfen, ob ein bestimmter Eintrag in der Konfigurationsdatei Infoclient.ini vorhanden ist. Der Benutzer wird hierbei über den laufenden Monitoring-Prozess benachrichtigt und das Ergebnis des Monitoring-Prozesses wird als response zum Infoserver zurück gesendet. Der Monitorung-Prozess soll nur einen statischen Wert zurück liefern, deshalb sollte dieser nur ein mal ausgeführt werden. Entweder wählt man den Typ "Statisch" bei einem Dynamischen Channel aus oder es wird im Channelscript so eingestellt (Wie in diesem Beispiel).
program ChannelScript; var // Deklaration der Variablen Res: Boolean; // wird fuer die Definition der Parameter und fuer das Resultat der LiveAbfrage verwendet SType,SValue,SResult,FileName,SectionItem: String; begin // Anfangskondition: Die Nachricht wurde noch nicht angezeigt If ((InfoRan = false) AND (InfoRuns = false)) Then begin // Setze den Typ der Abfrage SType := 'diInifileValue'; // Setze den Pfad und den Dateinamen FileName := 'C:\Program Files\Cordaware\Infoband\Infoclient.ini'; // Setze die Sektion [General] und den Eintrag Serverlist fuer die Abfrage SectionItem := 'General=Serverlist'; // Verbinde FileName und SectionItem fuer einen gueltigen Abfragewert SValue := FileName + ';' + SectionItem; // Fuehre die Abfrage aus // Die Abfrage holt sich den Wert aus dem Eintrag "Serverlist" in der [General] Sektion // wenn der Eintrag nicht vorhanden ist oder keinen Wert besitzt, dann ist das Resultat ein leerer String // wenn der Eintrag vorhanden ist und einen Wert besitzt, dann ist das Resultat der Wert SResult := DICV(SType,SValue); // Das Resultat der Abfrage wird als Response im Spaltenname 'Serverlist' eingetragen SendResponse(SResult,'Serverlist'); // editiere die Nachricht SetInfoText('Monitoring wird durchgefuehrt - bitte haben Sie Geduld'); // Benachrichtige den Benutzer, InfoRuns wird zu TRUE gesetzt <-Vorkondition!!! StartInfo; end; end. |
Beispiel 4: Dynamischer Channel für einen Countdown in einer Info
Dieses Beispiel zeig ein Script, mit welchem Sie einen Countdown in Ihrem Laufband bzw. Pop-up anzeigen lassen können.
Hier Beispiele:
program ClientScript; var DDiffInDays: Double;
IHours: Integer; IMinutes: Integer; IPos: Integer; ISeconds: Integer;
SCountdown: String; SDateTime: String; SHours: String; SInfo: String; SMinutes: String; SNewInfo: String; SSeconds: String; begin // Abrufen des aktuellen Infotextes SInfo := InfoClientValue('$Info$'); SNewInfo := '';
// Schleife durch den Infotext und Ersetzen der Countdowns while (Length(SInfo) > 0) do begin // Suche nach dem nächsten Countdown IPos := Pos('[Countdown=', SInfo);
// Wenn kein Countdown gefunden wurde, fügen Sie den Rest des Infotextes in den neuen Infotext ein if IPos = 0 then begin SNewInfo := SNewInfo + SInfo; SInfo := ''; end else begin // Extrahieren der Countdown-Zeit SDateTime := Copy(SInfo, IPos + 11, 19); // Berechnen des Countdowns DDiffInDays := StrToDatetime(SDateTime) - Now; // Formatierung des Countdowns IHours := trunc(DDiffInDays * 24) mod 24; // Sicherstellen, dass die Countdown-Stunden nicht unter 0 gehen if IHours < 0 then IHours := 0; SHours := IntToStr(IHours); // Gegebenenfalls eine führende Null hinzufügen if Length(SHours) = 1 then SHours := '0' + SHours; IMinutes := trunc(DDiffInDays * 24 * 60) mod 60; // Sicherstellen, dass die Countdown-Minuten nicht unter 0 gehen if IMinutes < 0 then IMinutes := 0; SMinutes := IntToStr(IMinutes); // Gegebenenfalls eine führende Null hinzufügen if Length(SMinutes) = 1 then SMinutes := '0' + SMinutes; ISeconds := trunc(DDiffInDays * 24 * 60 * 60) mod 60; // Sicherstellen, dass die Countdown-Sekunden nicht unter 0 gehen if ISeconds < 0 then ISeconds := 0; SSeconds := IntToStr(ISeconds); // Gegebenenfalls eine führende Null hinzufügen if Length(SSeconds) = 1 then SSeconds := '0' + SSeconds; SCountdown := SHours + ':' + SMinutes + ':' + SSeconds;
// Hinzufügen des Countdowns zum neuen Infotext if Copy(SInfo, IPos - 4, 4) = '<!--' then begin SNewInfo := SNewInfo + Copy(SInfo, 1, IPos + 34 - 1) + SCountdown; Delete(SInfo, 1, IPos + 42 - 1); end else begin SNewInfo := SNewInfo + Copy(SInfo, 1, IPos - 1) + '<!--[Countdown=' + SDateTime + ']-->' + SCountdown; Delete(SInfo, 1, IPos + 31 - 1); end; end; end;
// Setzen Sie den neuen Infotext SetInfoText(SNewInfo); // Neustart der Info RestartInfo; end. |
Um jetzt den Countdown anzeigen zu können, fügen Sie in Ihrem Infoeditor den folgenden Text ein. Der Countdown zählt bis zu dem Zeitpunkt, welcher hier angegeben wird:
[Countdown=dd.mm.yyyy hh:ii:ss] |
(dd=Tag mm=Monat yyyy= Jahr hh=Stunde ii=Minute ss=Sekunde)
Ein Beispiel dafür wäre: [Countdown=14.10.2024 17:00:00] Dieser Countdown zählt bis zum 14.10.2024 17 Uhr. Der Countdown hängt von der jeweiligen Computerzeit ab.