Digital Data - Marlon Schreiber 3121aadc12 Start
2019-07-16 10:24:33 +02:00

363 lines
16 KiB
VB.net

Imports System.ComponentModel
Imports System.Threading
Imports DD_LIB_Standards
Public Class frmStart
Dim WithEvents Hotkey As New clsHotkey(Me)
Private PID As Integer
Private WithEvents _Watcher As ClipboardWatcher = ClipboardWatcher.Singleton
Private Sub frmClipboardWatch_Disposed(ByVal sender As Object,
ByVal e As EventArgs) Handles Me.Disposed
_Watcher.Dispose()
End Sub
Private Sub _Watcher_Changed(ByVal sender As Object,
ByVal e As EventArgs) Handles _Watcher.Changed
clsHotkey.GetCaption()
If DT_USER_PROFILES Is Nothing Then
Exit Sub
End If
If DT_USER_PROFILES.Rows.Count = 0 Then
Exit Sub
End If
CURR_MATCH_RESULT = Nothing
'CURR_MATCH_WM_SEARCH = Nothing
If MONITORING_ACTIVE = False Then
NotifyIconMain.ShowBalloonTip(20000, "Clipboard Watcher", "Clipboard-watcher is inactive.", ToolTipIcon.Info)
Exit Sub
End If
Dim Data As IDataObject = Clipboard.GetDataObject
' Dim RelevantWindow = clsWINDOWSApi.IsRelevantWindow("jonathan")
'With Me.TextBox1
' .AppendText(String.Concat("Available Formats:", vbNewLine))
' .AppendText(String.Join(vbNewLine, Data.GetFormats))
' .AppendText(String.Concat(vbNewLine, vbNewLine, "Text = '", _
' Clipboard.GetText, "'", vbNewLine, vbNewLine))
'End With
Dim oFound As Boolean = False
CLIPBOARD_TEXT = Clipboard.GetText
Logger.Debug(String.Format(" >>[{0}] Clipboard-Watcher fired for process '{1}'", Now.ToString, CurrPROC_Name), False)
Dim oDTMatchProfiles As DataTable = New DataTable
oDTMatchProfiles.Columns.Add("GUID")
oDTMatchProfiles.Columns.Add("NAME")
oDTMatchProfiles.Columns.Add("COUNT")
oDTMatchProfiles.Columns.Add("COMMENT")
For Each oProfileRow As DataRow In DT_USER_PROFILES.Rows
Dim oProfileID = oProfileRow.Item("GUID")
'If found = True Then Exit For
'#### 1st CHECK: PROCESSNAME EQUAL ####
If CurrPROC_Name.ToUpper = oProfileRow.Item("PROC_NAME").ToString.ToUpper Then
'### 2nd CHECK: MATCH ClipboardValue
Dim oRegex_expression = oProfileRow.Item("REGEX_EXPRESSION")
Dim oRegex As New System.Text.RegularExpressions.Regex(oRegex_expression)
Dim oMatch As System.Text.RegularExpressions.Match = oRegex.Match(CLIPBOARD_TEXT)
If oMatch.Success Then
' If match.Groups(0).Value <> CURR_MATCH_RESULT Then
CURR_MATCH_RESULT = oMatch.Groups(0).Value
If Not IsNothing(CURR_MATCH_RESULT) Then
'#### 3rd CHECK: WindowTitle Match
Dim oMatchWindow As Boolean = True
Dim oCountWindowDefinitions As Integer = 0
For Each oWindowMatchRow As DataRow In DTPROFILE_REL_WINDOW.Rows
If oWindowMatchRow.Item("PROFILE_ID") = oProfileID Then
oCountWindowDefinitions += 1
oRegex_expression = oWindowMatchRow.Item("REGEX")
oRegex = New System.Text.RegularExpressions.Regex(oRegex_expression)
oMatch = oRegex.Match(CURR_FOCUSED_WINDOWNAME)
oMatchWindow = oMatch.Success
If oMatchWindow = True Then
Logger.Debug($"Found a match on windowtitle [{CURR_FOCUSED_WINDOWNAME}]")
Exit For
End If
End If
Next
If oMatchWindow = False Then
Logger.Debug($"Found NO MATCH on windowtitle [{CURR_FOCUSED_WINDOWNAME}], but [{oCountWindowDefinitions}] definitions are configured")
Exit For
End If
'CURR_MATCH_WM_SEARCH = oProfileRow.Item("WD_SEARCH")
Dim oSQL_COUNT As String = oProfileRow.Item("SQL_COUNT_RESULT")
Dim oRESULTDocs As Integer
If oSQL_COUNT <> String.Empty Then
oSQL_COUNT = clsPatterns.ReplaceAllValues(oSQL_COUNT, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_EMAIL, USER_ID, oProfileID)
Try
oRESULTDocs = ClassDatabase.Execute_Scalar(oSQL_COUNT, MyConnectionString)
Catch ex As Exception
oRESULTDocs = 99999
End Try
Else
oRESULTDocs = 99998
End If
If (oRESULTDocs <> 99998 And oRESULTDocs <> 99998 And oRESULTDocs <> 0) Then
Dim onewMatchRow As DataRow = oDTMatchProfiles.NewRow
onewMatchRow("GUID") = oProfileID
onewMatchRow("NAME") = oProfileRow.Item("NAME")
onewMatchRow("COMMENT") = oProfileRow.Item("COMMENT")
onewMatchRow("COUNT") = oRESULTDocs
oDTMatchProfiles.Rows.Add(onewMatchRow)
oFound = True
End If
End If
'Else
' NotifyIconMain.ShowBalloonTip(20000, "Clipboard Watcher", String.Format("Clipboard Watcher fired but Clipboardcontent is equal: '{0}'", CURR_MATCH_RESULT), ToolTipIcon.Info)
' Logger.Debug(String.Format(" >> {0} - Equal Clipboard-result '{1}'", Now.ToString, CURR_MATCH_RESULT), False)
' Exit For
'End If
Else
'Logger.Debug(String.Format(" >> {0} - No regex-match for cliboardtext '{1}'", Now.ToString, oMatch.Groups(0).Value), False)
End If
End If
Next
If oFound = False Then
Logger.Debug(String.Format(" >> {0} - oFound is false - no match on Clipboardvalue '{1}'!", Now.ToString, CURR_MATCH_RESULT), False)
CurrDT_PROFILE_MATCH = Nothing
Else
CurrDT_PROFILE_MATCH = oDTMatchProfiles
End If
End Sub
Public Sub New()
Dim splash As New frmSplash()
splash.ShowDialog()
If ERROR_INIT <> "INVALID USER" Then
Dim cultureInfo As System.Globalization.CultureInfo
cultureInfo = New System.Globalization.CultureInfo(USER_LANGUAGE)
'cultureInfo.DateTimeFormat.ShortDatePattern = USER_DATE_FORMAT
Thread.CurrentThread.CurrentCulture = cultureInfo
Thread.CurrentThread.CurrentUICulture = cultureInfo
Globalization.CultureInfo.DefaultThreadCurrentCulture = cultureInfo
Globalization.CultureInfo.DefaultThreadCurrentUICulture = cultureInfo
End If
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
End Sub
Private Sub btnUserConfig_Click(sender As Object, e As EventArgs) Handles btnUserConfig.Click
frmConfig_Basic.ShowDialog()
End Sub
Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
Logger.Info(">> Logout time: " & Now.ToString, False)
If ERROR_INIT = "INVALID USER" Or ERROR_INIT = "NO CLIENT" Then
Exit Sub
End If
Try
'Dim sql = String.Format("UPDATE TBDD_USER SET LOGGED_IN = 0, LOGGED_WHERE = '{0}' WHERE (LOWER(USERNAME) = LOWER('{1}'))", "", USER_USERNAME)
'clsDatabase.Execute_non_Query(sql, True)
Dim sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_ID & " AND UPPER(MODULE) = UPPER('Clipboard-Watcher')"
clsDatabase.Execute_non_Query(sql, True)
ClassWindowLocation.SaveFormLocationSize(Me, "")
My.Settings.Save()
Catch ex As Exception
End Try
Try
Hotkey.RemoveHotKey(354522017)
Catch ex As Exception
End Try
Try
Hotkey.RemoveHotKey(354523017)
Catch ex As Exception
End Try
'TempDateien löschen
Try
For Each _file In TEMP_FILES
System.IO.File.Delete(_file)
Next
Catch ex As Exception
End Try
If clsLogger.LOGG_MSG <> String.Empty Then
Logger.Info(clsLogger.LOGG_MSG, False)
End If
End Sub
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
ClassWindowLocation.LoadFormLocationSize(Me)
If ERROR_INIT = "FAILED DBCONNECTION" Or ERROR_INIT = "DATABASE" Then
frmConfig_Basic.ShowDialog()
End If
If clsDatabase.DB_DEFAULT_INITIALIZED = True Then
If ERROR_INIT <> "" Then
If ERROR_INIT = "NO CLIENT" Then
MsgBox("You are not related to a client!" & vbNewLine & "Please contact the system administrator!", MsgBoxStyle.Exclamation)
Else
MsgBox("Sorry Something went wrong in user configuration!" & vbNewLine & "Reason: " & ERROR_INIT & vbNewLine & "Please contact the system administrator!", MsgBoxStyle.Exclamation)
End If
Exit Sub
End If
Me.NotifyIconMain.Visible = True
clsHotkey.Refresh_Profile_Links()
Hotkey.AddHotKey(Keys.T, clsHotkey.MODKEY.MOD_CONTROL, 354522017)
Dim keyCode As Keys
Dim kc As New KeysConverter
Dim obj As Object = kc.ConvertFromString(HotkeySearchKey.ToUpper)
keyCode = CType(obj, Keys)
If HotkeyFunctionKey = "strg" Then
Hotkey.AddHotKey(keyCode, clsHotkey.MODKEY.MOD_CONTROL, 354523017)
ElseIf HotkeyFunctionKey = "SHIFT" Then
Hotkey.AddHotKey(keyCode, clsHotkey.MODKEY.MOD_SHIFT, 354523017)
End If
End If
tslblUser.Text = USER_USERNAME
lbHKFunction.Text = HotkeyFunctionKey & " + " & HotkeySearchKey.ToUpper
End Sub
Private Sub ReceiveHotKey(ByVal HotKeyID As String) Handles Hotkey.HotKeyPressed
If HotKeyID = 354523017 Then
If Not IsNothing(CURR_MATCH_RESULT) And Not IsNothing(CurrDT_PROFILE_MATCH) And MONITORING_ACTIVE = True Then
CHECK_PROFILE_MATCH()
End If
'If Not IsNothing(CURR_MATCH_RESULT) And Not IsNothing(CURR_MATCH_WM_SEARCH) Then
' clsSearch.RUN_WD_SEARCH(CURR_MATCH_WM_SEARCH)
' 'Close Wait Form
'End If
ElseIf HotKeyID = 354522017 Then
Change_Monitoring_State()
End If
End Sub
Sub CHECK_PROFILE_MATCH()
If CurrDT_PROFILE_MATCH.Rows.Count = 1 Then
If CurrDT_PROFILE_MATCH.Rows(0).Item("COUNT") = 99999 Then
NotifyIconMain.ShowBalloonTip(20000, "Clipboard Watcher", "Found match but check is wrong - Check Your MatchCountConfig in Profiles!", ToolTipIcon.Info)
Exit Sub
ElseIf CurrDT_PROFILE_MATCH.Rows(0).Item("COUNT") = 99998 Then
NotifyIconMain.ShowBalloonTip(10000, "Clipboard Watcher", "Found match but MatchCountConfig is not configured!", ToolTipIcon.Info)
End If
CurrDocSearch2Load = CurrDT_PROFILE_MATCH.Rows(0).Item("GUID")
frmResultDoc.Show()
'frmProfileMatch.ShowDialog()
'clsSearch.RUN_WD_SEARCH(CURR_MATCH_WM_SEARCH)
Else
frmProfileMatch.ShowDialog()
End If
End Sub
Sub Change_Monitoring_State()
If MONITORING_ACTIVE = True Then
NotifyIconMain.ShowBalloonTip(30000, "Clipboard Watcher", "Clipboard-Watcher wurde inaktiviert!", ToolTipIcon.Info)
MONITORING_ACTIVE = False
Else
MONITORING_ACTIVE = True
NotifyIconMain.ShowBalloonTip(30000, "Clipboard Watcher", "Clipboard-Watcher wurde wieder aktiviert!", ToolTipIcon.Info)
End If
End Sub
Private Sub frmMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown
If ERROR_INIT <> "INVALID USER" And LICENSE_COUNT > 0 Then
If DT_USER_PROFILES.Rows.Count >= 1 Then
Me.Hide()
End If
Else
If USER_IS_ADMIN = True And ERROR_INIT = "NO LICENSE" Then
MsgBox("As an admin You have access! Please inform Digital Data to add a valid license!", MsgBoxStyle.Exclamation, "")
Else
If Not USER_IS_ADMIN Then
MsgBox("Application will close now!", MsgBoxStyle.Critical, "")
Me.Close()
End If
End If
End If
If USER_IS_ADMIN = True Then
btnAdminConfig.Visible = True
End If
End Sub
Private Sub NotifyIcon1_DoubleClick(sender As Object, e As EventArgs) Handles NotifyIconMain.DoubleClick
OpenClose()
End Sub
Sub OpenClose()
If Me.Visible = False Then
Me.BringToFront()
Me.Visible = True
TimerClose.Start()
Else
Me.Hide()
NotifyIconMain.Visible = True
End If
End Sub
Private Sub frmMain_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
If e.KeyCode = Keys.F12 And USER_IS_ADMIN = True Then
frmLicense.ShowDialog()
End If
End Sub
Private Sub tsmiChangeState_Click(sender As Object, e As EventArgs) Handles tsmiChangeState.Click
If tsmiChangeState.Tag = "stop" Then
tsmiChangeState.Tag = "start"
tsmiChangeState.Image = My.Resources.control_start_blue
tsmiChangeState.Text = "Überwachung Clipboard starten"
MONITORING_ACTIVE = False
NotifyIconMain.ShowBalloonTip(30000, "Clipboard Watcher", "Clipboard-Watcher wurde inaktiviert!", ToolTipIcon.Info)
Else
tsmiChangeState.Image = My.Resources.StatusAnnotations_Stop_16xLG
tsmiChangeState.Tag = "stop"
tsmiChangeState.Text = "Überwachung Clipboard stoppen"
MONITORING_ACTIVE = True
NotifyIconMain.ShowBalloonTip(30000, "Clipboard Watcher", "Clipboard-Watcher wurde wieder aktiviert!", ToolTipIcon.Info)
End If
End Sub
'Private Sub Timer1_Tick(sender As Object, e As EventArgs)
' clsWINDOWSApi.Get_ForegroundWindow_Info()
' If PID <> PROC_PID Then
' PID = PROC_PID
' With Me.TextBox1
' .AppendText(String.Concat("Process-ID:" & PROC_PID, vbNewLine))
' .AppendText(String.Concat("Process-Name:" & PROC_Name, vbNewLine))
' .AppendText("Window-Title: " & PROC_WindowTitle)
' .AppendText(String.Concat("", vbNewLine))
' End With
' End If
'End Sub
Private Sub btnAdminConfig_Click(sender As Object, e As EventArgs) Handles btnAdminConfig.Click
TimerClose.Stop()
MONITORING_ACTIVE = False
frmAdministration.ShowDialog()
TimerClose.Start()
MONITORING_ACTIVE = True
End Sub
Private Sub TimerClose_Tick(sender As Object, e As EventArgs) Handles TimerClose.Tick
Me.Hide()
End Sub
Private Sub frmMain_VisibleChanged(sender As Object, e As EventArgs) Handles Me.VisibleChanged
If TimerClose.Enabled = True Then
TimerClose.Stop()
End If
End Sub
Private Sub MinimierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MinimierenToolStripMenuItem.Click
Me.Hide()
End Sub
Private Sub ClientÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ClientÖffnenToolStripMenuItem.Click
OpenClose()
End Sub
End Class