diff --git a/Class2.vb b/Class2.vb new file mode 100644 index 0000000..b663058 --- /dev/null +++ b/Class2.vb @@ -0,0 +1,41 @@ +Public Class Class1 + Public sAppPath As String = Application.StartupPath + 'Public Shared DBConString As String = "Server=NBMIESENBECK\SPIELWIESE;Initial Catalog=Doku;User ID=sa;Password=verag#3;Connection Timeout=5;" + + Public Shared DBConstringDev As String = "Server=DEVELOPER.verag.ost.dmn\DEVSQL;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" + Public Shared DBADMINBuchhaltung As String = "Data Source=SQLGuide01.verag.ost.dmn;Initial Catalog=ADMIN;Integrated Security=false;User ID=sa;Password=BmWr501956;" + Public Shared DBAdmin As String = "[SQLGuide01.verag.ost.dmn].ADMIN" + Public Shared DBDoku As String = "Server=SQLGuide01.verag.ost.dmn\Verag;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" + 'Public Shared DBDoku As String = "Server=dokusql.verag.ost.dmn\sqlexpress;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" + Public Shared DBDokuTest As String = "Server=DEVELOPER.verag.ost.dmn\DEVSQL;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" + 'Public Shared FilePath As String = "\\192.168.0.253\backup\temp_Sebastian\Spielwiese\Doku" + Public Shared FilePath As String ' = "\\192.168.0.90\f\EDV-Wartung\Dokumentation" + Public Shared Absender As String = "Absender Standard" + 'Public Shared sAppPath As String = Application.StartupPath + + Public Shared DBConString As String = DBDoku + + Public Shared Standorte As New List(Of String) + Public Shared AlleStandorte As New List(Of String) + Public Shared LoggedOnUser As New cBenutzer + + Public Shared LoggedOnUserisAdmin As Boolean = False + Public Shared DebugMode As Boolean = False + Public Shared DebugText As String = "" + Public Shared GroupUsers As List(Of cBenutzer) + Public Shared dtSuchergebnis As DataTable + Public Shared TeamviewerToken As String = "6920997-rtea7sZy35Ujw2Erm3OP" + + Public Shared HostList As New List(Of String) + Public Shared TerminalServerList As New List(Of String) + + Public Shared Function DBNull2emptyString(totest As Object) + + If IsDBNull(totest) Then + Return "" + Else + Return totest + End If + + End Function +End Class diff --git a/Main.Designer.vb b/Main.Designer.vb index aa6888b..73e61c6 100644 --- a/Main.Designer.vb +++ b/Main.Designer.vb @@ -28,17 +28,20 @@ Partial Class TSUserReporter Me.NotifyIcon1 = New System.Windows.Forms.NotifyIcon(Me.components) Me.ContextMenuStripIcon = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.ReportToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.BeendenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ReporterAnzeigenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() + Me.BeendenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.Label1 = New System.Windows.Forms.Label() + Me.UpdateTimer = New System.Windows.Forms.Timer(Me.components) + Me.btnTest = New System.Windows.Forms.Button() + Me.Button1 = New System.Windows.Forms.Button() Me.cmdMini = New System.Windows.Forms.Button() Me.ContextMenuStripIcon.SuspendLayout() Me.SuspendLayout() ' 'cmdGetLocalUser ' - Me.cmdGetLocalUser.Location = New System.Drawing.Point(12, 123) + Me.cmdGetLocalUser.Location = New System.Drawing.Point(12, 161) Me.cmdGetLocalUser.Name = "cmdGetLocalUser" Me.cmdGetLocalUser.Size = New System.Drawing.Size(199, 23) Me.cmdGetLocalUser.TabIndex = 0 @@ -64,12 +67,6 @@ Partial Class TSUserReporter Me.ReportToolStripMenuItem.Size = New System.Drawing.Size(169, 22) Me.ReportToolStripMenuItem.Text = "Report" ' - 'BeendenToolStripMenuItem - ' - Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem" - Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(169, 22) - Me.BeendenToolStripMenuItem.Text = "Beenden" - ' 'ReporterAnzeigenToolStripMenuItem ' Me.ReporterAnzeigenToolStripMenuItem.Name = "ReporterAnzeigenToolStripMenuItem" @@ -81,6 +78,12 @@ Partial Class TSUserReporter Me.ToolStripSeparator1.Name = "ToolStripSeparator1" Me.ToolStripSeparator1.Size = New System.Drawing.Size(166, 6) ' + 'BeendenToolStripMenuItem + ' + Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem" + Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(169, 22) + Me.BeendenToolStripMenuItem.Text = "Beenden" + ' 'Label1 ' Me.Label1.AutoSize = True @@ -90,6 +93,30 @@ Partial Class TSUserReporter Me.Label1.TabIndex = 2 Me.Label1.Text = "Label1" ' + 'UpdateTimer + ' + Me.UpdateTimer.Enabled = True + Me.UpdateTimer.Interval = 300000 + ' + 'btnTest + ' + Me.btnTest.Location = New System.Drawing.Point(136, 132) + Me.btnTest.Name = "btnTest" + Me.btnTest.Size = New System.Drawing.Size(75, 23) + Me.btnTest.TabIndex = 4 + Me.btnTest.Text = "Test" + Me.btnTest.UseVisualStyleBackColor = True + Me.btnTest.Visible = False + ' + 'Button1 + ' + Me.Button1.Image = Global.TSUserReporter.My.Resources.Resources.Print20x20 + Me.Button1.Location = New System.Drawing.Point(168, 38) + Me.Button1.Name = "Button1" + Me.Button1.Size = New System.Drawing.Size(43, 23) + Me.Button1.TabIndex = 5 + Me.Button1.UseVisualStyleBackColor = True + ' 'cmdMini ' Me.cmdMini.Image = Global.TSUserReporter.My.Resources.Resources.del @@ -103,8 +130,10 @@ Partial Class TSUserReporter ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(219, 157) + Me.ClientSize = New System.Drawing.Size(219, 196) Me.ControlBox = False + Me.Controls.Add(Me.Button1) + Me.Controls.Add(Me.btnTest) Me.Controls.Add(Me.cmdMini) Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.cmdGetLocalUser) @@ -128,4 +157,7 @@ Partial Class TSUserReporter Friend WithEvents BeendenToolStripMenuItem As ToolStripMenuItem Friend WithEvents Label1 As Label Friend WithEvents cmdMini As Button + Friend WithEvents UpdateTimer As Timer + Friend WithEvents btnTest As Button + Friend WithEvents Button1 As Button End Class diff --git a/Main.resx b/Main.resx index bda4d42..3a4dc32 100644 --- a/Main.resx +++ b/Main.resx @@ -1256,6 +1256,9 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + 306, 17 + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAMMOAADDDgAAAAAAAAAA diff --git a/Main.vb b/Main.vb index 5450c10..c9538a3 100644 --- a/Main.vb +++ b/Main.vb @@ -1,10 +1,31 @@ -Public Class TSUserReporter +Imports System.Environment +Imports System.IO +Public Class TSUserReporter + Dim lastupdate As DateTime + Dim StartTime As DateTime + Public sNetlogon As String = "\\verag.ost.dmn\NETLOGON" + Public Printer As New List(Of Drucker) + Dim Standarddrucker As New Drucker("", "") + Dim Bondrucker As New Drucker("", "") + Public Message As String + Dim ThinClient As String + Dim isTS As Boolean = False + Dim ID As String = "" Private Sub TSUserReporter_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Me.Visible = False + StartTime = Date.Now + Routine() + + SetPrinterRoutine() + + FillLabel() + ID = StartTime.ToString("dd.MM HH:mm:ss") & cRes.LocalUser.BenutzeranmeldeName + LogLogOn() End Sub Private Sub cmdGetLocalUser_Click(sender As Object, e As EventArgs) Handles cmdGetLocalUser.Click @@ -12,13 +33,49 @@ End Sub Sub Routine() - cRes.LocalUser.FillWithLoggedOnUser() - cRes.LocalTeamviewerID = getregkey() + Try + cRes.LocalUser.FillWithLoggedOnUser(True) + cRes.LocalTeamviewerID = getregkey() + cRes.LocalDomUser.getDomUserByBenutzerAnmeldename(Environment.UserDomainName, Environment.UserName) - Report() - FillLabel() + isTS = cRes.LocalUser.Hostname Like "TS*" + 'isTS = True + 'MsgBox(isTS) + + Report() + ' FillLabel() + + If cRes.LocalDomUser.du_autologoff = True And cRes.DisableAutoLogoff = False Then + CheckAutoLogOffAndIfthenAutoLogOff() + End If + Catch ex As Exception + 'MsgBox(ex.Message) + End Try End Sub + Sub LogLogOn() + 'Make ID + + Try + cSQL.InsertSQL("TbL_LogOnLogOffLog", "(Benutzeranmeldename, LogOn, TSServer, LogOff, ID) VALUES ( +'" & cRes.LocalUser.BenutzeranmeldeName & "', +'" & Date.Now & "', +'" & cRes.LocalUser.Hostname & "', +' ', +'" & ID & "')") + Catch ex As Exception + + End Try + End Sub + + Function CheckAutoLogOffAndIfthenAutoLogOff() + + If cRes.LocalDomUser.du_autologofftime.TimeOfDay < DateTime.Now.TimeOfDay And DateTime.Now.TimeOfDay < cRes.LocalDomUser.du_autologofftime.AddMinutes(15).TimeOfDay Then + Dim frm As New frmLogOff + frm.Show() + End If + End Function + Function getregkey() Dim Reg As String = Nothing If My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TeamViewer", "ClientIDOfTSUser", Nothing) Is Nothing Then @@ -31,36 +88,73 @@ End Function Function Report() - lastupdate = Date.Now - Dim ds As New DataSet - cSQL.SQL2DS("select * from TbL_TSSitzungen where Benutzeranmeldename = '" & cRes.LocalUser.BenutzeranmeldeName & " ' ", ds) - If Not ds.Tables(0).Rows.Count = 0 Then - RemoveSitzung() - End If - cSQL.InsertSQL("TbL_TSSitzungen", "(Benutzeranmeldename, Name, TeamviewerID, LastReport, TSServer) VALUES ( + Try + lastupdate = Date.Now + Dim ds As New DataSet + cSQL.SQL2DS("select * from TbL_TSSitzungen where Benutzeranmeldename = '" & cRes.LocalUser.BenutzeranmeldeName & " ' AND TSServer = '" & cRes.LocalUser.Hostname & "'", ds) + If Not ds.Tables(0).Rows.Count = 0 Then + RemoveSitzung() + End If + If isTS Then + Dim ds2 As New DataSet + cSQL.SQL2DS("select * from [TbL_ThinClients] where Benutzeranmeldename = '" & cRes.LocalUser.BenutzeranmeldeName & "'", ds2) + 'cSQL.SQL2DS("select * from [TbL_ThinClients] where Benutzeranmeldename = 'veragost\tw' ", ds2) + If Not ds2.Tables(0).Rows.Count = 0 Then + ThinClient = ds2.Tables(0).Rows(0).Item("ClientName").ToString + End If + End If + + 'MsgBox(ThinClient) + + cSQL.InsertSQL("TbL_TSSitzungen", "(Benutzeranmeldename, Name, TeamviewerID, LastReport, Domain, Company, LastLogon, TSServer) VALUES ( '" & cRes.LocalUser.BenutzeranmeldeName & "', '" & cRes.LocalUser.Name & "', '" & cRes.LocalTeamviewerID & "', '" & Date.Now & "', +'" & cRes.LocalUser.Domäne & "', +'" & cRes.LocalUser.Company & "', +'" & StartTime.ToString("dd.MM HH:mm") & "', '" & cRes.LocalUser.Hostname & "')") + Catch ex As Exception + + MsgBox("Report():" & vbCrLf & ex.Message) + End Try + + SetUserEnviroment() + End Function Function FillLabel() Label1.Text = "" Label1.Text &= cRes.LocalUser.BenutzeranmeldeName & vbCrLf Label1.Text &= cRes.LocalUser.Name & vbCrLf - Label1.Text &= cRes.LocalUser.Hostname & vbCrLf + Label1.Text &= "Hostname:" & cRes.LocalUser.Hostname & vbCrLf + Label1.Text &= "ThinClient:" & ThinClient& & vbCrLf Label1.Text &= "TeamviewerID: " & cRes.LocalTeamviewerID & vbCrLf Label1.Text &= vbCrLf Label1.Text &= "Letzte Aktualisierung:" & vbCrLf - Label1.Text &= lastupdate + Label1.Text &= lastupdate & vbCrLf + Label1.Text &= Standarddrucker.Druckername & vbCrLf + Label1.Text &= Bondrucker.Druckername & vbCrLf & vbCrLf + Label1.Text &= Message End Function Sub RemoveSitzung() - cSQL.DeleteSQL("TbL_TSSitzungen", "Benutzeranmeldename = '" & cRes.LocalUser.BenutzeranmeldeName & " ' ") + cSQL.DeleteSQL("TbL_TSSitzungen", "Benutzeranmeldename = '" & cRes.LocalUser.BenutzeranmeldeName & " ' AND TSServer = '" & cRes.LocalUser.Hostname & "'") + End Sub + + Sub LogLogOff() + Dim where As String = "ID = '" & ID & "'" + Dim Values As String = "LogOff ='" & Date.Now & "'" + Try + cSQL.UpdateSQL("TbL_LogOnLogOffLog", Values, where) + Catch ex As Exception + MsgBox(ex.Message) + End Try End Sub Private Sub TSUserReporter_Closed(sender As Object, e As EventArgs) Handles Me.Closed + LogLogOff() RemoveSitzung() End Sub @@ -82,4 +176,155 @@ Me.WindowState = WindowState.Minimized Me.Hide() End Sub + + Private Sub UpdateTimer_Tick(sender As Object, e As EventArgs) Handles UpdateTimer.Tick + Routine() + End Sub + + Private Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click + 'If LoadDefaultPrinter(cRes.LocalUser.Hostname) Then + ' SetDefaultPrinter() + ' MsgBox(Drucker) + 'End If + + + End Sub + + Function SetUserEnviroment() + Try + Environment.SetEnvironmentVariable("PC_SERVER", "pbx3.flashnet.at", EnvironmentVariableTarget.User) + Environment.SetEnvironmentVariable("PC_USER", cRes.LocalDomUser.mit_username & "@verag", EnvironmentVariableTarget.User) + 'Environment.SetEnvironmentVariable("PC_PASS", cRes.LocalDomUser.mit_pwd, EnvironmentVariableTarget.User) + ' Environment.SetEnvironmentVariable("PC_USE_CUSTOM_NOTIFICATIONS_AS_DEFAULT", "ENA", EnvironmentVariableTarget.User) + ' MsgBox(Environment.GetEnvironmentVariable("PC_SErVER")) + + Message = "UserEnv eingetragen." + Catch ex As Exception + Message = ex.Message + End Try + End Function + + Public Function LoadDefaultPrinter(ByVal Hostname As String) + Dim PrintINI As String = "" + 'If isTS Then + ' PrintINI = "C:\Users\" & cRes.LocalUser.Username & "\Documents\AVISO_OPTIONS.txt" + ' Try + ' Dim lines = IO.File.ReadAllLines(PrintINI) + ' Dim colCount = lines.First.Split(":"c).Length + + ' For Each line In lines + ' Dim objFields = From field In line.Split(":"c) + + ' 'Select Case objFields(0).ToString + ' ' Case Benutzername + ' If String.Compare("PRINTER", objFields(0).ToString, True) = 0 Then + ' Drucker = objFields(1).ToString + ' '_ConString = objFields(2).ToString + ' Return True + ' Exit Function + ' End If + + ' ' End Select + ' Next + ' Return False + ' Catch ex As Exception + ' ' MsgBox("Fehler beim Lesen TSAnmeldung.ini: " & vbCrLf & ex.Message) + ' End Try + ' Else + PrintINI = sNetlogon & "\ClientDrucker.ini" + Printer.Clear() + Try + Dim lines = IO.File.ReadAllLines(PrintINI) + Dim colCount = lines.First.Split(";"c).Length + + For Each line In lines + Dim objFields = From field In line.Split(";"c) + + 'Select Case objFields(0).ToString + ' Case Benutzername + If String.Compare(Hostname, objFields(0).ToString, True) = 0 Then + Dim p As New Drucker(objFields(1).ToString, objFields(2).ToString) + Printer.Add(p) + '_ConString = objFields(2).ToString + ' Return True + ' Exit Function + End If + + ' End Select + Next + If Printer.Count = 0 Then + Dim p As New Drucker("kein Drucker hinterlegt", "") + Printer.Add(p) + Return False + Else + + Return True + End If + + + Catch ex As Exception + Return False + ' MsgBox("Fehler beim Lesen TSAnmeldung.ini: " & vbCrLf & ex.Message) + End Try + ' End If + + + End Function + + Public Function SetDefaultPrinter() + For Each p As Drucker In Printer + If p.Druckertype = "" Or p.Druckertype = "Standard" Then + Standarddrucker = p + My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", "Device", p.Druckername) + ElseIf p.Druckertype = "Bon" Then + Bondrucker = p + End If + Next + writeoutAVISO_OPTIONS() + End Function + + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + SetPrinterRoutine() + FillLabel() + End Sub + + Sub SetPrinterRoutine() + If isTS Then + If LoadDefaultPrinter(ThinClient) Then + SetDefaultPrinter() + End If + Else + If LoadDefaultPrinter(cRes.LocalUser.Hostname) Then + SetDefaultPrinter() + End If + End If + + End Sub + + Sub writeoutAVISO_OPTIONS() + Dim PrintINI As String = "C:\Users\" & cRes.LocalUser.Username & "\Documents\AVISO_OPTIONS.txt" + Dim Text As String = "" + + If Printer.Count = 0 Then + Text = "" + Else + Text = "PRINTER:" & Standarddrucker.Druckername & vbCrLf + Text &= "BON:" & Bondrucker.Druckername + End If + + My.Computer.FileSystem.WriteAllText(PrintINI, Text, False) + + End Sub + +End Class + +Public Class Drucker + Property Druckername As String = "" + Property Druckertype As String = "" + + Sub New(a As String, b As String) + Me.Druckername = a + Me.Druckertype = b + End Sub + End Class diff --git a/My Project/Application.Designer.vb b/My Project/Application.Designer.vb index fac78ef..3225758 100644 --- a/My Project/Application.Designer.vb +++ b/My Project/Application.Designer.vb @@ -25,7 +25,7 @@ Namespace My Public Sub New() MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) Me.IsSingleInstance = false - Me.EnableVisualStyles = true + Me.EnableVisualStyles = false Me.SaveMySettingsOnExit = true Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses End Sub diff --git a/My Project/Application.myapp b/My Project/Application.myapp index 5566167..98c634d 100644 --- a/My Project/Application.myapp +++ b/My Project/Application.myapp @@ -4,7 +4,7 @@ TSUserReporter false 0 - true + false 0 true \ No newline at end of file diff --git a/My Project/Resources.Designer.vb b/My Project/Resources.Designer.vb index 842cdd9..97acf6f 100644 --- a/My Project/Resources.Designer.vb +++ b/My Project/Resources.Designer.vb @@ -69,5 +69,15 @@ Namespace My.Resources Return CType(obj,System.Drawing.Bitmap) End Get End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + ''' + Friend ReadOnly Property Print20x20() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("Print20x20", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property End Module End Namespace diff --git a/My Project/Resources.resx b/My Project/Resources.resx index d2501f0..1187221 100644 --- a/My Project/Resources.resx +++ b/My Project/Resources.resx @@ -121,4 +121,7 @@ ..\Resources\del.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Print20x20.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/My Project/Settings.Designer.vb b/My Project/Settings.Designer.vb index 99f0fcb..9a65ce9 100644 --- a/My Project/Settings.Designer.vb +++ b/My Project/Settings.Designer.vb @@ -1,10 +1,10 @@ '------------------------------------------------------------------------------ ' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 ' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. ' '------------------------------------------------------------------------------ @@ -13,42 +13,42 @@ Option Explicit On Namespace My - - _ + + _ Partial Friend NotInheritable Class MySettings Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) - -#Region "My.Settings Auto-Save Functionality" + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "Automatische My.Settings-Speicherfunktion" #If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean + Private Shared addedHandler As Boolean - Private Shared addedHandlerLockObject As New Object + Private Shared addedHandlerLockObject As New Object - _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub #End If #End Region - + Public Shared ReadOnly Property [Default]() As MySettings Get - + #If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If #End If Return defaultInstance End Get @@ -57,13 +57,13 @@ Namespace My End Namespace Namespace My - - _ + + _ Friend Module MySettingsProperty - - _ + + _ Friend ReadOnly Property Settings() As Global.TSUserReporter.My.MySettings Get Return Global.TSUserReporter.My.MySettings.Default diff --git a/Resources/Print20x20.png b/Resources/Print20x20.png new file mode 100644 index 0000000..bd83b69 Binary files /dev/null and b/Resources/Print20x20.png differ diff --git a/TSUserReporter.vbproj b/TSUserReporter.vbproj index e0cb9e4..3ec8bb3 100644 --- a/TSUserReporter.vbproj +++ b/TSUserReporter.vbproj @@ -78,12 +78,14 @@ + + @@ -100,8 +102,16 @@ + + + + frmLogOff.vb + + + Form + Form @@ -126,6 +136,9 @@ + + frmLogOff.vb + Main.vb @@ -150,6 +163,7 @@ + diff --git a/cBenutzer.vb b/cBenutzer.vb index e6d0748..be0125a 100644 --- a/cBenutzer.vb +++ b/cBenutzer.vb @@ -16,9 +16,11 @@ Public Class cBenutzer Property localdistinguishedName As String = "" Property suchname As String = "" Property Hostname As String = "" + Property Company As String = "" + Property Username As String = "" - + 'test Function FillWithLoggedOnUser(Optional ByVal dcabfrage As Boolean = False, Optional ByVal LDAPa As String = "") '"LDAP://DC=VERAG,DC=OST,DC=DMN") @@ -30,9 +32,10 @@ Public Class cBenutzer End Try Domäne = System.DirectoryServices.ActiveDirectory.Domain.GetCurrentDomain.ToString BenutzeranmeldeName = Environment.UserDomainName & "\" & Environment.UserName + Username = Environment.UserName If dcabfrage = True Then - 'cRes.DebugText = userPrincipalName & LDAPa + 'Class1.DebugText = userPrincipalName & LDAPa FillFromDC(userPrincipalName, "userPrincipalName", LDAPa) End If End Function @@ -96,6 +99,7 @@ Public Class cBenutzer .PropertiesToLoad.Add("distinguishedName") .PropertiesToLoad.Add("msDS-PrincipalName") .PropertiesToLoad.Add("userPrincipalName") + .PropertiesToLoad.Add("company") End With Dim Result As DirectoryServices.SearchResult = searcher.FindOne @@ -110,6 +114,7 @@ Public Class cBenutzer Me.BenutzeranmeldeName = blablabla(Result, "msDS-PrincipalName") Me.msDSPrincipalName = blablabla(Result, "msDS-PrincipalName") Me.userPrincipalName = blablabla(Result, "userPrincipalName") + Me.Company = blablabla(Result, "company") Catch ex As Exception MsgBox("FillFromDC: " & ex.Message) diff --git a/cDomUser.vb b/cDomUser.vb new file mode 100644 index 0000000..f03a804 --- /dev/null +++ b/cDomUser.vb @@ -0,0 +1,258 @@ +Imports System.Reflection + +Public Class cDomUser + + Property du_ID As String = "" + Property du_Email_Activated As Boolean = False + Property du_EMail As String = "" + Property du_Vorname As String = "" + Property du_Nachname As String = "" + Property du_Abteilung As String = "" + Property du_TelNummer As String = "" + Property du_DW As String = "" + Property du_Kennwort As String = "" + Property du_Dom As String = "" + Property du_sAMAc As String = "" + Property du_Info As String = "" + Property du_autologoff As Boolean = False + Property du_autologofftime As DateTime + Property mit_username As String = "" + Property mit_pwd As String = "" + '----------------------------------------- + Dim SelectItems As String = "" + Public Exist As Boolean = False + + Public Sub New() + SelectItems = Selectinator3000(getparameterlistMaster()) + ' MsgBox(SelectItems) + End Sub + + + Function getparameterlistMaster() As List(Of SQLVariable) + Dim list As New List(Of SQLVariable) + + list.Add(New SQLVariable("du_ID", du_ID)) + list.Add(New SQLVariable("du_Email_Activated", du_Email_Activated)) + list.Add(New SQLVariable("du_EMail", du_EMail)) + list.Add(New SQLVariable("du_Vorname", du_Vorname)) + list.Add(New SQLVariable("du_Nachname", du_Nachname)) + list.Add(New SQLVariable("du_Abteilung", du_Abteilung)) + list.Add(New SQLVariable("du_TelNummer", du_TelNummer)) + list.Add(New SQLVariable("du_DW", du_DW)) + list.Add(New SQLVariable("du_Kennwort", du_Kennwort)) + list.Add(New SQLVariable("du_Dom", du_Dom)) + list.Add(New SQLVariable("du_sAMAc", du_sAMAc)) + list.Add(New SQLVariable("du_Info", du_Info)) + list.Add(New SQLVariable("du_autologoff", du_autologoff)) + list.Add(New SQLVariable("du_autologofftime", du_autologofftime)) + list.Add(New SQLVariable("mit_username", mit_username)) + list.Add(New SQLVariable("mit_pwd", mit_pwd)) + Return list + End Function + + Public Function getDomUser(Filterspalte As String, Filterbegriff As String) + Dim ds As New DataSet + + cSQL.SQL2DS("select " & SelectItems & " from [SQLGuide01.verag.ost.dmn].doku.dbo.tbl_domuser as Doku left join [SQLGuide01.verag.ost.dmn].ADMIN.dbo.tblMitarbeiter on mit_AliasAD_Username = du_sAMAc where " & Filterspalte & "= '" & Filterbegriff & "'", ds) + + If ds.Tables(0).Rows.Count > 0 Then Exist = True + + For Each c As DataColumn In ds.Tables(0).Columns + Dim propInfo As PropertyInfo = Me.GetType.GetProperty(c.ColumnName) + If propInfo IsNot Nothing Then + If Not IsDBNull(c.Table.Rows(0).Item(c)) Then + propInfo.SetValue(Me, c.Table.Rows(0).Item(c)) + End If + End If + Next + ' MsgBox("hier") + End Function + + Public Function getDomUserByID(ID As String) + Dim ds As New DataSet + + cSQL.SQL2DS("select " & SelectItems & " from [SQLGuide01.verag.ost.dmn].doku.dbo.tbl_domuser as Doku left join [SQLGuide01.verag.ost.dmn].ADMIN.dbo.tblMitarbeiter on mit_AliasAD_Username = du_sAMAc WHERE du_ID = '" & ID & "'", ds) + + If ds.Tables(0).Rows.Count > 0 Then Exist = True + + For Each c As DataColumn In ds.Tables(0).Columns + Dim propInfo As PropertyInfo = Me.GetType.GetProperty(c.ColumnName) + If propInfo IsNot Nothing Then + If Not IsDBNull(c.Table.Rows(0).Item(c)) Then + propInfo.SetValue(Me, c.Table.Rows(0).Item(c)) + End If + End If + Next + ' MsgBox("hier") + End Function + + Public Function getDomUserByBenutzerAnmeldename(Dom As String, Username As String) + Dim ds As New DataSet + Try + + + cSQL.SQL2DS("select " & SelectItems & " from [SQLGuide01.verag.ost.dmn].doku.dbo.tbl_domuser as Doku left join [SQLGuide01.verag.ost.dmn].ADMIN.dbo.tblMitarbeiter on mit_AliasAD_Username = du_sAMAc WHERE du_Dom = '" & Dom & "' AND du_sAMAc = '" & Username & "'", ds) + + If ds.Tables(0).Rows.Count > 0 Then Exist = True + If ds.Tables(0).Rows.Count = 0 Then Exit Function + 'MsgBox("getDomUserByBenutzerAnmeldename" & Dom & vbCrLf & ds.Tables(0).Rows.Count & Username & vbCrLf) + + + For Each c As DataColumn In ds.Tables(0).Columns + Dim propInfo As PropertyInfo = Me.GetType.GetProperty(c.ColumnName) + If propInfo IsNot Nothing Then + If Not IsDBNull(c.Table.Rows(0).Item(c)) Then + propInfo.SetValue(Me, c.Table.Rows(0).Item(c)) + End If + End If + Next + + Catch ex As Exception + 'MsgBox("getDomUserByBenutzerAnmeldename" & Dom & vbCrLf & ds.Tables(0).Rows.Count & Username & vbCrLf & ex.Message) + End Try + + ' MsgBox("hier") + End Function + + Public Function Save() + If du_sAMAc = "" Or du_Dom = "" Then + MsgBox("Domänen-Benutzer und Domäne sind Pflichtfelder!") : Exit Function + End If + + If CheckExist() = True Then + '-------------------------------------------------------------------------Update + Dim update, where As String + Dim list = getparameterlistMaster() + For Each i In list + If i.SQLText = "mit_pwd" Or i.SQLText = "mit_username" Then + ElseIf Not i.SQLText = "du_ID" Then + update &= "[" & i.SQLText & "]='" & i.SQLValue & "'," + Else + where &= "du_ID = '" & i.SQLValue & "'" + End If + Next + update = update.Substring(0, update.Length - 1) + cSQL.UpdateSQL("TbL_DomUser", update, where, Class1.DBDoku) + + ElseIf CheckExist() = -1 Then + Exit Function + Else + '-------------------------------------------------------------------------Insert + Dim Spalten As String = "" + Dim Werte As String = "" + Dim InsertString As String = "" + du_ID = Guid.NewGuid().ToString("N") + Dim List As List(Of SQLVariable) = getparameterlistMaster() + For Each i In List + If i.SQLText = "mit_pwd" Or i.SQLText = "mit_username" Then + Else + Spalten &= i.SQLText & "," + Werte &= "'" & i.SQLValue & "'," + End If + Next + Spalten = Spalten.Substring(0, Spalten.Length - 1) + Werte = Werte.Substring(0, Werte.Length - 1) + + cSQL.InsertSQL("TbL_DomUser", "(" & Spalten & ") VALUES (" & Werte & ")", Class1.DBDoku) + End If + + End Function + + Function CheckExist() As Boolean + Dim ds As New DataSet + cSQL.SQL2DS("select * from Doku.dbo.TbL_DomUser where du_ID = '" & du_ID & "'", ds, Class1.DBADMINBuchhaltung) + + If ds.Tables(0).Rows.Count > 0 Then + Return True + Else + Dim dsa As New DataSet + cSQL.SQL2DS("select * from Doku.dbo.TbL_DomUser where du_sAMAc = '" & du_sAMAc & "' AND du_Dom = '" & du_Dom & "'", dsa, Class1.DBADMINBuchhaltung) + If dsa.Tables(0).Rows.Count > 0 Then + If MsgBox("Achtung! Die Kombination aus Domäne und Benutzer existiert bereits! Trotzdem speichern?", MsgBoxStyle.YesNo, "Speichern...") = MsgBoxResult.No Then + Return -1 + Exit Function + End If + + End If + Return False + End If + End Function + Public Function getFromAvisoUser(Optional ByVal AvisoUser As String = "") + If AvisoUser = "" Then + AvisoUser = Me.mit_username + End If + + Dim ds As New DataSet + cSQL.SQL2DS("select * from ADMIN.dbo.tblMitarbeiter where mit_username = '" & AvisoUser & "'", ds, Class1.DBADMINBuchhaltung) + + If ds.Tables(0).Rows.Count = 0 Then MsgBox("Benutzer nicht gefunden.") : Exit Function + If ds.Tables(0).Rows.Count = 1 Then + du_EMail = Class1.DBNull2emptyString(ds.Tables(0).Rows(0).Item("mit_email")) + If du_EMail.Length > 1 Then du_Email_Activated = True + mit_username = Class1.DBNull2emptyString(ds.Tables(0).Rows(0).Item("mit_username")) + mit_pwd = Class1.DBNull2emptyString(ds.Tables(0).Rows(0).Item("mit_pwd")) + du_Vorname = Class1.DBNull2emptyString(ds.Tables(0).Rows(0).Item("mit_vname")) + du_Nachname = Class1.DBNull2emptyString(ds.Tables(0).Rows(0).Item("mit_nname")) + du_Abteilung = Class1.DBNull2emptyString(ds.Tables(0).Rows(0).Item("mit_abteilung")) + du_TelNummer = Class1.DBNull2emptyString(ds.Tables(0).Rows(0).Item("mit_mobiltel")) + du_DW = Class1.DBNull2emptyString(ds.Tables(0).Rows(0).Item("mit_durchwahl")) + du_Dom = Class1.DBNull2emptyString(ds.Tables(0).Rows(0).Item("mit_aliasad_domain")) + du_sAMAc = Class1.DBNull2emptyString(ds.Tables(0).Rows(0).Item("mit_aliasad_username")) + End If + + Exist = True + + ' MsgBox(du_EMail) + End Function + + Public Function getFromAvisoUserLIST(AvisoUser As String) + Dim ds As New DataSet + Dim AvisoUserList As New List(Of cDomUser) + cSQL.SQL2DS("select * from ADMIN.dbo.tblMitarbeiter where mit_username = '" & AvisoUser & "'", ds, Class1.DBADMINBuchhaltung) + For Each row As DataRow In ds.Tables(0).Rows + Dim tempdu As New cDomUser + tempdu.du_EMail = Class1.DBNull2emptyString(row.Item("mit_email")) + If tempdu.du_EMail.Length > 1 Then tempdu.du_Email_Activated = True + tempdu.mit_username = Class1.DBNull2emptyString(row.Item("mit_username")) + tempdu.mit_pwd = Class1.DBNull2emptyString(row.Item("mit_pwd")) + tempdu.du_Vorname = Class1.DBNull2emptyString(row.Item("mit_vname")) + tempdu.du_Nachname = Class1.DBNull2emptyString(row.Item("mit_nname")) + tempdu.du_Abteilung = Class1.DBNull2emptyString(row.Item("mit_abteilung")) + tempdu.du_TelNummer = Class1.DBNull2emptyString(row.Item("mit_mobiltel")) + tempdu.du_DW = Class1.DBNull2emptyString(row.Item("mit_durchwahl")) + tempdu.du_Dom = Class1.DBNull2emptyString(row.Item("mit_aliasad_domain")) + tempdu.du_sAMAc = Class1.DBNull2emptyString(row.Item("mit_aliasad_username")) + AvisoUserList.Add(tempdu) + Next + Return AvisoUserList + End Function + + Public Function Selectinator3000(varlist As List(Of SQLVariable)) As String + Dim Ding As String = "" + + For Each var In varlist + Ding &= var.SQLText & ", " + Next + Ding = Ding.Substring(0, (Ding.Length - 2)) + + Return Ding + End Function + + Public Function Delete() + If MsgBox("Benutzer " & du_Vorname & " " & du_Nachname & ", " & du_sAMAc & " löschen?", MsgBoxStyle.OkCancel, "Benutzer löschen?") = MsgBoxResult.Ok Then + cSQL.DeleteSQL("Doku.dbo.TbL_DomUser", "du_ID = '" & du_ID & "'", Class1.DBADMINBuchhaltung) + Else + Exit Function + End If + End Function + + Public Shared Function Delete(ID As String) + If MsgBox("Benutzer löschen?", MsgBoxStyle.OkCancel, "Benutzer löschen?") = MsgBoxResult.Ok Then + cSQL.DeleteSQL("Doku.dbo.TbL_DomUser", "du_ID = '" & ID & "'", Class1.DBADMINBuchhaltung) + Else + Exit Function + End If + End Function + + +End Class diff --git a/cRes.vb b/cRes.vb index 86b69c4..91b2fa5 100644 --- a/cRes.vb +++ b/cRes.vb @@ -1,8 +1,12 @@ Public Class cRes - Public Shared DBConString As String = "Server=buchhaltung.verag.ost.dmn\SQLEXPRESS;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" + Public Shared DBConString As String = "Server=sqlcluster.verag.ost.dmn\verag;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" + 'Public Shared DBConString As String = "Server=buchhaltung.verag.ost.dmn\SQLEXPRESS;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" Public Shared DBConstringDev As String = "Server=DEVELOPER.verag.ost.dmn\DEVSQL;Initial Catalog=Doku;User ID=sa;Password=BmWr501956;Connection Timeout=5;" Public Shared LocalUser As New cBenutzer Public Shared LocalTeamviewerID As String + Public Shared LocalDomUser As New cDomUser + + Public Shared DisableAutoLogoff As Boolean = False End Class diff --git a/cSQL.vb b/cSQL.vb index 8cc7799..14ca097 100644 --- a/cSQL.vb +++ b/cSQL.vb @@ -1,22 +1,28 @@ Imports System.Data.SqlClient Public Class cSQL - Public Shared Sub SQL2DS(ByRef selector As String, ByRef ds As DataSet) + + Public Shared Sub SQL2DS(ByRef selector As String, ByRef ds As DataSet, Optional ByRef DBConnect As String = "") + If DBConnect = "" Then DBConnect = Class1.DBConString Dim con As New SqlConnection Dim cmd As New SqlCommand - con.ConnectionString = cRes.DBConString + con.ConnectionString = DBConnect 'Class1.DBConString cmd.Connection = con - - Dim dataadapter As New SqlDataAdapter(selector, con) - con.Open() - dataadapter.Fill(ds) - con.Close() + Try + Dim dataadapter As New SqlDataAdapter(selector, con) + con.Open() + dataadapter.Fill(ds) + con.Close() + Catch ex As Exception + 'MsgBox("hier") + End Try End Sub - Public Shared Sub UpdateSQL(ByRef table As String, ByRef values As String, ByRef where As String) + Public Shared Sub UpdateSQL(ByRef table As String, ByRef values As String, ByRef where As String, Optional ByRef DBConnect As String = "") + If DBConnect = "" Then DBConnect = Class1.DBConString Dim con As New SqlConnection Dim cmd As New SqlCommand - con.ConnectionString = cRes.DBConString + con.ConnectionString = DBConnect ' Class1.DBConString cmd.Connection = con con.Open() @@ -25,10 +31,11 @@ Public Class cSQL con.Close() End Sub - Public Shared Sub InsertSQL(ByRef table As String, ByRef insert As String) + Public Shared Sub InsertSQL(ByRef table As String, ByRef insert As String, Optional ByRef DBConnect As String = "") + If DBConnect = "" Then DBConnect = Class1.DBConString Dim con As New SqlConnection Dim cmd As New SqlCommand - con.ConnectionString = cRes.DBConString + con.ConnectionString = DBConnect ' Class1.DBConString cmd.Connection = con con.Open() @@ -37,10 +44,11 @@ Public Class cSQL con.Close() End Sub - Public Shared Sub DeleteSQL(ByRef table As String, ByRef where As String) + Public Shared Sub DeleteSQL(ByRef table As String, ByRef where As String, Optional ByRef DBConnect As String = "") + If DBConnect = "" Then DBConnect = Class1.DBConString Dim con As New SqlConnection Dim cmd As New SqlCommand - con.ConnectionString = cRes.DBConString + con.ConnectionString = DBConnect ' Class1.DBConString cmd.Connection = con con.Open() @@ -49,6 +57,19 @@ Public Class cSQL con.Close() End Sub + Public Shared Sub SQLCommand(command As String, Optional ByRef DBConnect As String = "") + If DBConnect = "" Then DBConnect = Class1.DBConString + Dim con As New SqlConnection + Dim cmd As New SqlCommand + con.ConnectionString = DBConnect ' Class1.DBConString + cmd.Connection = con + + con.Open() + cmd.CommandText = command + cmd.ExecuteNonQuery() + con.Close() + End Sub + End Class @@ -70,7 +91,9 @@ Public Class SQLVariable Public ReadOnly Property SQLValue() As Object Get - Return Value + Return value End Get End Property + End Class + diff --git a/frmLogOff.Designer.vb b/frmLogOff.Designer.vb new file mode 100644 index 0000000..0e76feb --- /dev/null +++ b/frmLogOff.Designer.vb @@ -0,0 +1,87 @@ + _ +Partial Class frmLogOff + Inherits System.Windows.Forms.Form + + 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Wird vom Windows Form-Designer benötigt. + Private components As System.ComponentModel.IContainer + + 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. + 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. + 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. + _ + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Me.Label1 = New System.Windows.Forms.Label() + Me.BtnAbbrechen = New System.Windows.Forms.Button() + Me.Timer1 = New System.Windows.Forms.Timer(Me.components) + Me.Label2 = New System.Windows.Forms.Label() + Me.SuspendLayout() + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 20.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label1.Location = New System.Drawing.Point(12, 9) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(703, 62) + Me.Label1.TabIndex = 0 + Me.Label1.Text = "Automatische Abmeldung wird in Kürze durchgeführt." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Nicht gespeicherte Dokumente " & + "werden verworfen." + ' + 'BtnAbbrechen + ' + Me.BtnAbbrechen.Font = New System.Drawing.Font("Microsoft Sans Serif", 22.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.BtnAbbrechen.ForeColor = System.Drawing.Color.Red + Me.BtnAbbrechen.Location = New System.Drawing.Point(188, 200) + Me.BtnAbbrechen.Name = "BtnAbbrechen" + Me.BtnAbbrechen.Size = New System.Drawing.Size(368, 53) + Me.BtnAbbrechen.TabIndex = 1 + Me.BtnAbbrechen.Text = "Abbrechen" + Me.BtnAbbrechen.UseVisualStyleBackColor = True + ' + 'Timer1 + ' + Me.Timer1.Interval = 1000 + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 20.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label2.Location = New System.Drawing.Point(322, 112) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(95, 31) + Me.Label2.TabIndex = 2 + Me.Label2.Text = "Label2" + ' + 'frmLogOff + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(720, 292) + Me.Controls.Add(Me.Label2) + Me.Controls.Add(Me.BtnAbbrechen) + Me.Controls.Add(Me.Label1) + Me.Name = "frmLogOff" + Me.Text = "Abmeldung" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents Label1 As Label + Friend WithEvents BtnAbbrechen As Button + Friend WithEvents Timer1 As Timer + Friend WithEvents Label2 As Label +End Class diff --git a/frmLogOff.resx b/frmLogOff.resx new file mode 100644 index 0000000..d0d99f4 --- /dev/null +++ b/frmLogOff.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/frmLogOff.vb b/frmLogOff.vb new file mode 100644 index 0000000..3789c0a --- /dev/null +++ b/frmLogOff.vb @@ -0,0 +1,28 @@ +Public Class frmLogOff + + Dim FinalCountdown As Integer = 30 + Private Sub frmLogOff_Load(sender As Object, e As EventArgs) Handles Me.Load + Label2.Text = FinalCountdown.ToString + Timer1.Start() + End Sub + + Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick + If FinalCountdown > 0 Then + FinalCountdown = FinalCountdown - 1 + Label2.Text = FinalCountdown.ToString + Else + Timer1.Stop() + Process.Start("shutdown", "-l") + Me.Close() + End If + + End Sub + + Private Sub BtnAbbrechen_Click(sender As Object, e As EventArgs) Handles BtnAbbrechen.Click + Timer1.Stop() + cRes.DisableAutoLogoff = True + Me.Close() + End Sub + + +End Class \ No newline at end of file