Manchmal ist es sinnvoll, aus der individuellen Maske nach einer bestimmten Aktion (z.B. nach dem Speichern) eine parametrisierte Batch-Datei oder eine Applikation auf dem Server (auf dem cmdbcore.exe läuft) auszuführen. Direkt aus dem Client-Browser ist dies natürlich nicht möglich, daher behelfen wir uns mit der Server-Side-Programmierung, die es ermöglicht, die Logik auf dem Server in C# zu programmieren (teilweise).
Nach dem Speichern eines Rechners sollte auf dem Server eine Standard-Konfigurationdatei (sofern sie noch nicht existiert) aus einem Muster erstellt werden.
HWM | Rechner-Tabelle |
HWM.HWM_COMPNAME | Rechnername |
c:\test\_muster.cfg | Inhalt frei |
c:\test\copy_muster.bat | copy c:\test\_muster.cfg c:\test\%1%.cfg |
Hinweis: die Funktionalität dieser Batch-Datei könnte auch direkt mit Server-Side-Programmierung erzeugt werden. In diesem Beispiel dient das Batch nur zur Demonstration.
Reiter Server-Side-Code ➟ unten Button "Hinzufügen" ➟ SQL:
Name | GetRechnerName |
Rückgabewert | string |
Parameter | Typ=int, Name=hwmid |
select HWM_COMPNAME from HWM where HWM_ID = @hwmid
Reiter Server-Side-Code ➟ unten Button "Hinzufügen" ➟ Serverfunktion:
Name | CallExternalBat |
Rückgabewert | string |
Parameter | Typ=string, Name=rechnerName |
/* returns: null wenn OK, ansonst Fehlermeldung */ string destfile= "c:\\test\\" + rechnerName + ".cfg"; if (!System.IO.File.Exists(destfile)) // wenn nicht existent { // run batch System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.FileName = "C:\\test\\copy_muster.bat"; p.StartInfo.Arguments = rechnerName; p.StartInfo.CreateNoWindow = true; try { p.Start(); } catch(System.Exception e) { return e.Message; } } return null;
Reiter "Design" ➟ Hauptformular (MainForm) ➟ Ereignisse (Server) ➟ AfterSave:
var errmsg = this.CallExternalBat( this.GetRechnerName(MainForm.BaseObjID) ); if (errmsg != null) PostJS.Alert(errmsg);
Nach dem Speichern des Rechners mit dem Namen "NB1234" sollte die Datei c:\test\NB1234.cfg angezeigt werden.