ZooFlow: Save Window Position, Fix FlowForm Designer, Add Logger

This commit is contained in:
Jonathan Jenne 2020-08-17 12:33:56 +02:00
parent 1698e9cc97
commit 834a672b72
8 changed files with 188 additions and 212 deletions

View File

@ -1,7 +1,6 @@
Imports System.Drawing.Imaging Imports System.Runtime.InteropServices
Imports System.Runtime.InteropServices
Class Win32 Public Class ClassWin32
Public Enum Bool Public Enum Bool
[False] = 0 [False] = 0
[True] [True]
@ -81,60 +80,4 @@ Class Win32
<DllImport("User32.dll")> <DllImport("User32.dll")>
Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
End Function End Function
End Class
Public Class ClassFlowForm
Inherits Form
Public Sub New()
FormBorderStyle = FormBorderStyle.None
TopMost = True
End Sub
Public Sub SetBitmap(ByVal bitmap As Bitmap)
SetBitmap(bitmap, 255, bitmap.Width, bitmap.Height)
End Sub
Public Sub SetBitmap(ByVal Bitmap As Bitmap, ByVal Opacity As Byte, ByVal Width As Integer, ByVal Height As Integer)
If Bitmap.PixelFormat <> PixelFormat.Format32bppArgb Then
Throw New ApplicationException("The bitmap must be 32ppp with alpha-channel.")
End If
Dim oScreenDeviceContext As IntPtr = Win32.GetDC(IntPtr.Zero)
Dim oMemoryDeviceContext As IntPtr = Win32.CreateCompatibleDC(oScreenDeviceContext)
Dim oBitmap As IntPtr = IntPtr.Zero
Dim oOldBitmap As IntPtr = IntPtr.Zero
Try
oBitmap = Bitmap.GetHbitmap(Color.FromArgb(0))
oOldBitmap = Win32.SelectObject(oMemoryDeviceContext, oBitmap)
Dim oSize As Win32.Size = New Win32.Size(Width, Height)
Dim oPointSource As Win32.Point = New Win32.Point(0, 0)
Dim oTopPos As Win32.Point = New Win32.Point(Left, Top)
Dim oBlend As Win32.BLENDFUNCTION = New Win32.BLENDFUNCTION With {
.BlendOp = Win32.AC_SRC_OVER,
.BlendFlags = 0,
.SourceConstantAlpha = Opacity,
.AlphaFormat = Win32.AC_SRC_ALPHA
}
Win32.UpdateLayeredWindow(Handle, oScreenDeviceContext, oTopPos, oSize, oMemoryDeviceContext, oPointSource, 0, oBlend, Win32.ULW_ALPHA)
Finally
Win32.ReleaseDC(IntPtr.Zero, oScreenDeviceContext)
If oBitmap <> IntPtr.Zero Then
Win32.SelectObject(oMemoryDeviceContext, oOldBitmap)
Win32.DeleteObject(oBitmap)
End If
Win32.DeleteDC(oMemoryDeviceContext)
End Try
End Sub
Protected Overrides ReadOnly Property CreateParams As CreateParams
Get
Dim oParams As CreateParams = MyBase.CreateParams
oParams.ExStyle = oParams.ExStyle Or &H80000
Return oParams
End Get
End Property
End Class End Class

View File

@ -89,6 +89,7 @@
<Compile Include="Base\BaseClass.vb" /> <Compile Include="Base\BaseClass.vb" />
<Compile Include="ClassClipboardWatcher.vb" /> <Compile Include="ClassClipboardWatcher.vb" />
<Compile Include="ClassInit.vb" /> <Compile Include="ClassInit.vb" />
<Compile Include="ClassWin32.vb" />
<Compile Include="ClipboardWatcher\State.vb" /> <Compile Include="ClipboardWatcher\State.vb" />
<Compile Include="Events\OnFlowFormInteractionEvent.vb" /> <Compile Include="Events\OnFlowFormInteractionEvent.vb" />
<Compile Include="Events\OnFlowFormStateChangedEvent.vb" /> <Compile Include="Events\OnFlowFormStateChangedEvent.vb" />
@ -97,7 +98,6 @@
<Compile Include="Config\ClassConfig.vb" /> <Compile Include="Config\ClassConfig.vb" />
<Compile Include="ClassConstants.vb" /> <Compile Include="ClassConstants.vb" />
<Compile Include="ClassEnvironment.vb" /> <Compile Include="ClassEnvironment.vb" />
<Compile Include="ClassFlowForm.vb" />
<Compile Include="ClassInitLoader.vb" /> <Compile Include="ClassInitLoader.vb" />
<Compile Include="Config\ClassUIConfig.vb" /> <Compile Include="Config\ClassUIConfig.vb" />
<Compile Include="frmConfigDatabase.Designer.vb"> <Compile Include="frmConfigDatabase.Designer.vb">

View File

@ -24,25 +24,26 @@
''' the contents of this method with the code editor. ''' the contents of this method with the code editor.
''' </summary> ''' </summary>
Private Sub InitializeComponent() Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim SplashScreenManager As DevExpress.XtraSplashScreen.SplashScreenManager = New DevExpress.XtraSplashScreen.SplashScreenManager(Me, GetType(Global.DigitalData.GUIs.ZooFlow.frmSplash), True, True) Dim SplashScreenManager As DevExpress.XtraSplashScreen.SplashScreenManager = New DevExpress.XtraSplashScreen.SplashScreenManager(Me, GetType(Global.DigitalData.GUIs.ZooFlow.frmSplash), True, True)
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmAdmin)) Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmAdmin))
Me.ribbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl() Me.ribbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.ApplicationMenu = New DevExpress.XtraBars.Ribbon.ApplicationMenu() Me.ApplicationMenu = New DevExpress.XtraBars.Ribbon.ApplicationMenu(Me.components)
Me.ButtonSettings = New DevExpress.XtraBars.BarButtonItem() Me.ButtonSettings = New DevExpress.XtraBars.BarButtonItem()
Me.ButtonExit = New DevExpress.XtraBars.BarButtonItem() Me.ButtonExit = New DevExpress.XtraBars.BarButtonItem()
Me.SkinDropDownButtonItem1 = New DevExpress.XtraBars.SkinDropDownButtonItem() Me.SkinDropDownButtonItem1 = New DevExpress.XtraBars.SkinDropDownButtonItem()
Me.ribbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.ribbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.ribbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.ribbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.NotifyIconMain = New System.Windows.Forms.NotifyIcon() Me.NotifyIconMain = New System.Windows.Forms.NotifyIcon(Me.components)
Me.ContextMenuStripMain = New System.Windows.Forms.ContextMenuStrip() Me.ContextMenuStripMain = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.AnzeigenVersteckenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.AnzeigenVersteckenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.AdministrationToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
Me.BeendenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.BeendenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ToastNotificationsManager = New DevExpress.XtraBars.ToastNotifications.ToastNotificationsManager() Me.ToastNotificationsManager = New DevExpress.XtraBars.ToastNotifications.ToastNotificationsManager(Me.components)
Me.TimerRefreshData = New System.Windows.Forms.Timer() Me.TimerRefreshData = New System.Windows.Forms.Timer(Me.components)
Me.ImageListDebugTree = New System.Windows.Forms.ImageList() Me.ImageListDebugTree = New System.Windows.Forms.ImageList(Me.components)
CType(Me.ribbonControl1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.ribbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ApplicationMenu, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.ApplicationMenu, System.ComponentModel.ISupportInitialize).BeginInit()
Me.ContextMenuStripMain.SuspendLayout() Me.ContextMenuStripMain.SuspendLayout()
@ -57,13 +58,13 @@
' '
Me.ribbonControl1.ApplicationButtonDropDownControl = Me.ApplicationMenu Me.ribbonControl1.ApplicationButtonDropDownControl = Me.ApplicationMenu
Me.ribbonControl1.ExpandCollapseItem.Id = 0 Me.ribbonControl1.ExpandCollapseItem.Id = 0
Me.ribbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.ribbonControl1.ExpandCollapseItem, Me.ButtonSettings, Me.ButtonExit, Me.SkinDropDownButtonItem1}) Me.ribbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.ribbonControl1.ExpandCollapseItem, Me.ribbonControl1.SearchEditItem, Me.ButtonSettings, Me.ButtonExit, Me.SkinDropDownButtonItem1})
Me.ribbonControl1.Location = New System.Drawing.Point(0, 0) Me.ribbonControl1.Location = New System.Drawing.Point(0, 0)
Me.ribbonControl1.MaxItemId = 4 Me.ribbonControl1.MaxItemId = 4
Me.ribbonControl1.Name = "ribbonControl1" Me.ribbonControl1.Name = "ribbonControl1"
Me.ribbonControl1.PageHeaderItemLinks.Add(Me.SkinDropDownButtonItem1) Me.ribbonControl1.PageHeaderItemLinks.Add(Me.SkinDropDownButtonItem1)
Me.ribbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.ribbonPage1}) Me.ribbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.ribbonPage1})
Me.ribbonControl1.Size = New System.Drawing.Size(906, 143) Me.ribbonControl1.Size = New System.Drawing.Size(906, 158)
' '
'ApplicationMenu 'ApplicationMenu
' '
@ -76,14 +77,14 @@
' '
Me.ButtonSettings.Caption = "Einstellungen" Me.ButtonSettings.Caption = "Einstellungen"
Me.ButtonSettings.Id = 1 Me.ButtonSettings.Id = 1
Me.ButtonSettings.ImageOptions.Image = CType(resources.GetObject("ButtonSettings.ImageOptions.Image"), System.Drawing.Image) Me.ButtonSettings.ImageOptions.SvgImage = CType(resources.GetObject("ButtonSettings.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.ButtonSettings.Name = "ButtonSettings" Me.ButtonSettings.Name = "ButtonSettings"
' '
'ButtonExit 'ButtonExit
' '
Me.ButtonExit.Caption = "Beenden" Me.ButtonExit.Caption = "Beenden"
Me.ButtonExit.Id = 2 Me.ButtonExit.Id = 2
Me.ButtonExit.ImageOptions.Image = CType(resources.GetObject("ButtonExit.ImageOptions.Image"), System.Drawing.Image) Me.ButtonExit.ImageOptions.SvgImage = CType(resources.GetObject("ButtonExit.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.ButtonExit.Name = "ButtonExit" Me.ButtonExit.Name = "ButtonExit"
' '
'SkinDropDownButtonItem1 'SkinDropDownButtonItem1
@ -111,38 +112,39 @@
' '
'ContextMenuStripMain 'ContextMenuStripMain
' '
Me.ContextMenuStripMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.AnzeigenVersteckenToolStripMenuItem, Me.AdministrationToolStripMenuItem, Me.ToolStripSeparator2, Me.ToolStripSeparator1, Me.BeendenToolStripMenuItem}) Me.ContextMenuStripMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.AnzeigenVersteckenToolStripMenuItem, Me.ToolStripSeparator2, Me.ToolStripMenuItem1, Me.ToolStripSeparator1, Me.BeendenToolStripMenuItem})
Me.ContextMenuStripMain.Name = "ContextMenuStripMain" Me.ContextMenuStripMain.Name = "ContextMenuStripMain"
Me.ContextMenuStripMain.Size = New System.Drawing.Size(185, 82) Me.ContextMenuStripMain.Size = New System.Drawing.Size(285, 82)
' '
'AnzeigenVersteckenToolStripMenuItem 'AnzeigenVersteckenToolStripMenuItem
' '
Me.AnzeigenVersteckenToolStripMenuItem.Name = "AnzeigenVersteckenToolStripMenuItem" Me.AnzeigenVersteckenToolStripMenuItem.Name = "AnzeigenVersteckenToolStripMenuItem"
Me.AnzeigenVersteckenToolStripMenuItem.Size = New System.Drawing.Size(184, 22) Me.AnzeigenVersteckenToolStripMenuItem.Size = New System.Drawing.Size(284, 22)
Me.AnzeigenVersteckenToolStripMenuItem.Text = "Anzeigen/Verstecken" Me.AnzeigenVersteckenToolStripMenuItem.Text = "Administration Anzeigen/Verstecken"
'
'AdministrationToolStripMenuItem
'
Me.AdministrationToolStripMenuItem.Name = "AdministrationToolStripMenuItem"
Me.AdministrationToolStripMenuItem.Size = New System.Drawing.Size(184, 22)
Me.AdministrationToolStripMenuItem.Text = "Administration"
' '
'ToolStripSeparator2 'ToolStripSeparator2
' '
Me.ToolStripSeparator2.Name = "ToolStripSeparator2" Me.ToolStripSeparator2.Name = "ToolStripSeparator2"
Me.ToolStripSeparator2.Size = New System.Drawing.Size(181, 6) Me.ToolStripSeparator2.Size = New System.Drawing.Size(281, 6)
Me.ToolStripSeparator2.Tag = "MODULE_ITEM_START" Me.ToolStripSeparator2.Tag = "MODULE_ITEM_START"
' '
'ToolStripMenuItem1
'
Me.ToolStripMenuItem1.Enabled = False
Me.ToolStripMenuItem1.Name = "ToolStripMenuItem1"
Me.ToolStripMenuItem1.Size = New System.Drawing.Size(284, 22)
Me.ToolStripMenuItem1.Text = "Placeholder for module-specific actions"
'
'ToolStripSeparator1 'ToolStripSeparator1
' '
Me.ToolStripSeparator1.Name = "ToolStripSeparator1" Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
Me.ToolStripSeparator1.Size = New System.Drawing.Size(181, 6) Me.ToolStripSeparator1.Size = New System.Drawing.Size(281, 6)
Me.ToolStripSeparator1.Tag = "MODULE_ITEM_END" Me.ToolStripSeparator1.Tag = "MODULE_ITEM_END"
' '
'BeendenToolStripMenuItem 'BeendenToolStripMenuItem
' '
Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem" Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem"
Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(184, 22) Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(284, 22)
Me.BeendenToolStripMenuItem.Text = "Beenden" Me.BeendenToolStripMenuItem.Text = "Beenden"
' '
'ToastNotificationsManager 'ToastNotificationsManager
@ -192,7 +194,6 @@
Private WithEvents ribbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup Private WithEvents ribbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents NotifyIconMain As NotifyIcon Friend WithEvents NotifyIconMain As NotifyIcon
Friend WithEvents ContextMenuStripMain As ContextMenuStrip Friend WithEvents ContextMenuStripMain As ContextMenuStrip
Friend WithEvents AdministrationToolStripMenuItem As ToolStripMenuItem
Friend WithEvents ToolStripSeparator2 As ToolStripSeparator Friend WithEvents ToolStripSeparator2 As ToolStripSeparator
Friend WithEvents ToolStripSeparator1 As ToolStripSeparator Friend WithEvents ToolStripSeparator1 As ToolStripSeparator
Friend WithEvents BeendenToolStripMenuItem As ToolStripMenuItem Friend WithEvents BeendenToolStripMenuItem As ToolStripMenuItem
@ -204,4 +205,5 @@
Friend WithEvents SkinDropDownButtonItem1 As DevExpress.XtraBars.SkinDropDownButtonItem Friend WithEvents SkinDropDownButtonItem1 As DevExpress.XtraBars.SkinDropDownButtonItem
Friend WithEvents TimerRefreshData As Timer Friend WithEvents TimerRefreshData As Timer
Friend WithEvents ImageListDebugTree As ImageList Friend WithEvents ImageListDebugTree As ImageList
Friend WithEvents ToolStripMenuItem1 As ToolStripMenuItem
End Class End Class

View File

@ -120,110 +120,48 @@
<metadata name="ApplicationMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="ApplicationMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>702, 17</value> <value>702, 17</value>
</metadata> </metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="DevExpress.Data.v19.2" name="DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="ButtonSettings.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ButtonSettings.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAACt0RVh0VGl0 AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
bGUAU2V0dXA7Q3VzdG9taXo7RGVzaWduO1NldHRpbmc7UHJvcGVydDgftSEAAApzSURBVFhHnVdnVFVX LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
Fr7WkGKmJJkxa7ISgyODiUQdUSMKFkSUGAU1gqBA4mCJDQyg+FAJxRIBUVZQo6CoCKigFJH+6B0UEKQL dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAO4DAAAC77u/
0rsIdlx7vn3ee6iz5sdM9lof5917zznf7ucg/Q4ZBowARgNqSrwFjASGA/+/HDgW/N/hw7gkeQDuRy/x PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
VEFuv+/4DDevi+TqdZ5cPc+Ti2cgLV258Wt8YyWG7Tt8Vtp7CDgYIDkf9JdkHmekPR6nBZzcf5N2u52S IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
drue5P0UwmQvBl++AQiTCbz2ji0cJTtw2is1q4SePR8USMm8TassbI/iG3uD5wytVT6Ld719j6TevgGp MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+8GA5ODih1dKeV0BiGoRu5kt4lG1CT+/s/ewf1ljSxf1PnxM7d0Pqba+hVavsy/HtzEAh4bnMV4P0yhg Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
eBfIu3r7pZ/2+uJRKe4+QW+QG3675l2XI+eigXg7mbcO3ok4r7NxmLDb1c/D0+8yPX32QpA3t/cSLKPN MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
tu60xMTmkLGpzUTMZUXGWG3cvXCn87EkO5nPzfEaWh/iHSs0vLOnX7KVHcNPpbh5Xxxy8SKQu3kHxpRV WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz
1lNFzX06GRhJzh6nb+xxOxV22DdkMDo+m1rauql/4Kkgb2ztofsAzz8VcJXcPAMHbZ28o2z3+CR7nwyl OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
wuIqyi4oJzvZ0YRx47/4CBysxLAdu72ZTyE/e13gga0fse+wf3RZZYOwsP/RU3r85DkVl9VSTmE5DYjn Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
Z9TTN0CtHQ8EcX1zF91r6qQ6oKmtl9q7+ig16zbl36oU8/j7rbv1FBmXQUuMbWLB8Q4wXN/oe+ZUiMuR Pg0KICA8ZyBpZD0iUHJvcGVydGllcyI+DQogICAgPHBhdGggZD0iTTMwLDE4di00bC00LjQtMC43Yy0w
QB5YgZF7D/pHlJbXCbLuB4+oq3cAGz2iB/2PCfGj1s4H1ATL77d2Y3MQN3ZSTUM7Vd5rpfLaFiqracLv LjItMC44LTAuNS0xLjUtMC45LTIuMWwyLjYtMy42bC0yLjgtMi44bC0zLjYsMi42Yy0wLjctMC40LTEu
NvGutKqR0vMqKKuomsKjUslg6Q+J4HgXGDHf0JI5FbIfZaMMwYgtDoe0j58Oe/no8VOQ91NHTz+sekht NC0wLjctMi4xLTAuOUwxOCwyaC00ICAgbC0wLjcsNC40Yy0wLjgsMC4yLTEuNSwwLjUtMi4xLDAuOUw3
nX3UAqvZylfkHVTd0EaVda0gbqE7VU1UfLeBisrrqaCkjrJvVZM8p4yK8bxhqwtpzzJaDA5RKXMN1jKf LjUsNC43TDQuNyw3LjVsMi42LDMuNmMtMC40LDAuNy0wLjcsMS40LTAuOSwyLjFMMiwxNHY0bDQuNCww
QmA1FBjkn5zpbzm6+MXculNNPbCYXdoGq5s7ekGOeLd00z2Q1za2U3U9LAd5eU2zsJbJC8vqKb+kFuQ1 LjdjMC4yLDAuOCwwLjUsMS41LDAuOSwyLjEgICBsLTIuNiwzLjZsMi44LDIuOGwzLjYtMi42YzAuNyww
lJZ3l9ILKijkWgLNN1wrx94fACIHdBeYY1CKDA3i+YtXCtjv9Q3LyC2lXridY93CyQbyBiZHrDmuze09 LjQsMS40LDAuNywyLjEsMC45TDE0LDMwaDRsMC43LTQuNGMwLjgtMC4yLDEuNS0wLjUsMi4xLTAuOWwz
8IgiCfndneomkN+jPCV5RkElJWWWCgVOng0nvYXmN7D3kAJKDIkoP2CkmbWt5s9Hzg32DzwRIRCZriJH LjYsMi42bDIuOC0yLjhsLTIuNi0zLjYgICBjMC40LTAuNywwLjctMS40LDAuOS0yLjFMMzAsMTh6IE0x
vJlQnlZAdrsOkfHqrcAWsnM8TDeTc+hOZaOId0ZhJcmz71BcejHdTL1NOcXVtN3xl5df6xlpg4OTkHsE NiwyMGMtMi4yLDAtNC0xLjgtNC00YzAtMi4yLDEuOC00LDQtNHM0LDEuOCw0LDRDMjAsMTguMiwxOC4y
8wkl+A83G24Ub2/f5ekdFplCnAPNHT2CsAFNh63k3ycDrpCewdrWmbomNppac77U1NKZ9LWeycb5S6xa LDIwLDE2LDIweiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
/U5fpsI79yglt5xiQRyTcouik4vwXEbHfrvK3ZL771+B9wHOBeaVRlhvcv5ym6Onq63saOH+Q/7U3NpJ
3ch+LrMGLjNYfq+pi+TpBaRvZF2jrvHP8VjHlrA7+SB69/MJUzQWG9tUJ6TmUwoS74ZcQR6ZWECRSYV0
U15Am+0OkJm1Q9ly0x8958w3mYF1bwPS6J2yYxQZm0FVtU305Okz6ut/IrK9HqR195Hp9W3UBGW22LnT
7AWrf8AalRuHQge8N9fAbP1PMk94oY6iQBqRmE/X4vMoLDYXYy6l59+llKxikROmVo6ENX8CJLUdTkdB
/BxZ/4hakPEcbyavvc+ZzmXWIhRYaW5Lf9ec9hnWiETint7R/ZD3EMn76biJn69d7yRKMyIB5HFMnkNX
bmZTaHQWBUdl0uWYbErLvUvfrbVnBf7Ci9W27fIUCnCpNTQrMl1FXgHycjQXrntTSweaMFF7HNawAsPb
u/uktq4+3kMo8Jn6F+pWG/eKkIXH5dJVJo/JohCQX4rMpKCIdKEEJ+cKcztWgPNBemv9Vle6EpGIhlFL
2FC4vaq+lSqUna0E2V0Dq+xl3mS4zJp7KHczVSarQjDmG5N/2ew7cEoozlZfvsHkmSDPoJCoDFERQeHJ
uEMEkLHZDlbgz4A00vDb7ycvN912cKWFXemGba5UUlYHy9HdUNslFffpVnkD3UaTiUspIPP1TlWTJuto
YN17gOqoHTNpio7m95v316Rml1B+aS2FgpytZXIegyNSCfvTvMXrKmbNXXFs4ldzZmMdGzJkgdhI38jK
1/fEJXS6DgU5OltBaR1quYaK0GjOBceQ9ab9bSZrtmyYrrNIa8bsRVorzLdu2rDdoy04PFF0RU4+QQ6X
X7yWilDkksztBIHYHxyfAJx8XAHMK0SVzaP1l6yZvNX+8GAj+n0Rt1Umv11DmUVVor4z0NniU4vI+9dg
cth3nBz3+9LRE6GUmlMqyOPTSykYVgddT6cLIA8MT0Ey5tLSVZtfqmtMnQMOviuIywkgGpEEi3jgBxFL
U2vH6xExaXB7PWVyV0Ndx6WXIIaobXmRaDJZRZUIUaPIFSbOuV2Nms8XLr94PY0uhIM8LIVCkHxuXmdp
pp5JPPYeC7CnmUtBzrJugzMPQwp8t+6npPiUPCpCPcdnFFNs2quuFpVUQNdRYq+yHCUm4p2hcDnIzyvJ
A64kCy94+oXQ9NnLM7H3x4BQYMoMIwxKsVjvxAMrMHrRUquFDs4+4shldyvIiygajYW7moI8j67ezEGW
Z4ssFy4Hucrl567KKeByMp0JTQISUQFZZGy6hdQ1tI3Bwck7QmvaIuZUiJn1Lh44JmorLWzj4+V5ogLY
5TfY5ajbOLj9eoKiq10BeaiSXLg8Ai6/liasPhcmR/zxG144HZxAvwEBUMTDO5C0phmkgOOPAHv6VQi+
s7TnQShgbLY9PiYhS5xo8SCWI/HOXIwmH9zvYtM4DIWwPlu4PChCEe/zsPo8rGeFQvHe5ZczdOj4BYQk
Q+GFkARyOeJPX0xZkASOPwB8CL1SYKXFTh74xaixf1P/cMWa7QmXwhIoMDSO1tk40VwDi1TdBWaxqy3t
Xzq7n6CgaymizITVsPR8eBr5B8fSNhzL+kaWL6fONEqcMn1JJv5ZIXevQNoPhbSmLkxVe2fMp+Dg8huu
MWkucyrExGyHhJsO/xSl+MFHn3yEK1Os7kJz+eTpi/gaxReJDzQnzZqqZ2DmA0UoBqcdu/ws4s1dz3DZ
D4S5vh9/8o+ZmMvZ/vG48VONYXWa5lfzktTeFuTiPggM0/hSF4NSlq3eJtU3dUro4fwolAD4xOMFnLX8
rHo3FkdyVUxynki4QCjgFxhF2jrLq/GNmwzXOa9hcMJxzNntbLkgR8lKbyjwzaofJVwwJdzzJNxm+RWH
gxXhBTzyM4OT531dfdMT3r8GiY4Xirjbybxo0lSDU/jGHY6bjGo+r+c1Q/vgxiQx3lBgickmSU/fQtLV
N5fmzFsjzZ5vJqAzz1Rg1tzVPE2llBpcvWDBYiuaD8xbbEnzDC1JfYL2QnwT8eW5ugYWGIYUES7/T/we
UVnFoWBr+TznI5VPNdUJyXP+R5GkfwMPT3OfchuhBQAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="ButtonExit.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="ButtonExit.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAACN0RVh0VGl0 AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
bGUAQ2FuY2VsO1N0b3A7RXhpdDtCYXJzO1JpYmJvbjtMlpayAAALFUlEQVRYR5WXB1RVxxaGx/dSfEGM LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
xq50BUUEC1goAtJBwYZiiRpFDREJNkBApVgQE7FjJMYSg6KiXlBRNNJEqQIXROBSlM6lKqLI1bf+7DkX dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALMCAAAC77u/
iHkr67319lrfmrlzZvb/zz5zDgdWsz+Y2C0n9G+g8Wpqq0M4wYyiz3/jRYA/ex7gxyp2+rLnRIW/Nyv3 PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
9WLl271Ymc9WVuq9hUm2bWaSrZ40naJmXxD7d+vzbl6wD38DRY/AP4h/Ep8Qn/4HfIzDr/N5fd7XP2Pv IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
6wvZ+zrOU/a+poDJasRMVp3Hijw9aApF1d4A9qGlnKj4K2SIokdYEM302jyleIdvcOku/0dlu/xyKgL8 MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
PpTv9P0g8ffOlfh6P8732rwnYcN6A5r7GZ9PyI0I4vm94rKqXFa4cQNdoqgM3sk+NJcRZOIjKHp2/Kl4 Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+7bFJCip/DEEzbFX0CFOxdtnmaB5RBneFKbjdU4yGq9HomJvIJ5t2yxJc3dbTms/JwQjMm6gSi4uq3zC MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
8r9zo2GKil1+7H2jpJtSoaUQdp3g7ja6xH97ek34EXTkpeJ9fRE6i9LQkX4Xr1Nv4uXdi3h55ze0J91A ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
e0oM3oqTIKvOR3t2IirC9kPs4Z55dsH8cZSLV0SoRteLbNb1PIvlrVtLPynK/Lez9w3FvVBw8U/SPT2s OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
JTu2t7beE6HrRR5eP75NYpFy4i6g7TZx6zzaYs+iVXQGrddPoyX6FFqunsTL+IvoLE6DNCYK+R7urTFL dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkRlbGV0ZUNpcmNsZWQiPg0KICAgIDxwYXRoIGQ9Ik0x
lzhQTl4NuYnSNJa9ejV1KSQ+2+jePGWy2kL+UxBP3fCdjWSXf1d7ViLeZP8uF7opp/XmObTFnCVI9MYv Niw0QzkuNCw0LDQsOS40LDQsMTZzNS40LDEyLDEyLDEyczEyLTUuNCwxMi0xMlMyMi42LDQsMTYsNHog
JPwzWq9FkPBPaL58As0Xj6Hpt8NoPB+G9oRotD2MQ66Hu+y688JeE53FqSxzxUqux1jRZk/WVZnHu0LZ TTIzLjEsMjAuMmwtMi44LDIuOEwxNiwxOC44bC00LjIsNC4yICAgbC0yLjgtMi44bDQuMi00LjJsLTQu
Rd+sGFfos625PfMBXlGCFi5C8FaABFu4YDQXpR1fOUnC4Wi+dBxNkUfQeOEQGs/9iMYzByD9OUSoSmtS Mi00LjJsMi44LTIuOGw0LjIsNC4ybDQuMi00LjJsMi44LDIuOEwxOC44LDE2TDIzLjEsMjAuMnoiIGNs
LDJcXVuOWVvrkoZwOx4vXcY1GROvWc26yrN5l5fnszyPjY+lsVFUxig08+RXaGe9cLFuwSjaLRcVdtwj YXNzPSJSZWQiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
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
X9ttAMYAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<metadata name="NotifyIconMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="NotifyIconMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@ -232,6 +170,7 @@
<metadata name="ContextMenuStripMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="ContextMenuStripMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>325, 17</value> <value>325, 17</value>
</metadata> </metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="NotifyIconMain.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="NotifyIconMain.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAQAEBAAAAEACABoBQAARgAAABAQAAABABgAaAMAAK4FAAAgIAAAAQAIAKgIAAAWCQAAICAAAAEA AAABAAQAEBAAAAEACABoBQAARgAAABAQAAABABgAaAMAAK4FAAAgIAAAAQAIAKgIAAAWCQAAICAAAAEA
@ -373,14 +312,14 @@
<value>847, 17</value> <value>847, 17</value>
</metadata> </metadata>
<metadata name="ImageListDebugTree.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="ImageListDebugTree.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>996, 17</value> <value>17, 56</value>
</metadata> </metadata>
<data name="ImageListDebugTree.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="ImageListDebugTree.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABU ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABU
CwAAAk1TRnQBSQFMAgEBBQEAAVgBAAFYAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo CwAAAk1TRnQBSQFMAgEBBQEAAXABAAFwAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

View File

@ -60,7 +60,16 @@ Partial Public Class frmAdmin
Visible = False Visible = False
End Sub End Sub
Private Sub frmMain_FormClosed(sender As Object, e As FormClosedEventArgs) Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
If FlowForm IsNot Nothing Then
FlowForm.Close()
End If
End Sub
Private Sub frmMain_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
My.UIConfig.FlowForm.Location = FlowForm.Location
My.UIConfigManager.Save()
EventBus.Instance.Unregister(Me) EventBus.Instance.Unregister(Me)
End Sub End Sub
@ -150,9 +159,6 @@ Partial Public Class frmAdmin
ToggleVisibility() ToggleVisibility()
End Sub End Sub
#End Region #End Region
Private Sub ToggleVisibility() Private Sub ToggleVisibility()
@ -197,6 +203,4 @@ Partial Public Class frmAdmin
Logger.Error(ex) Logger.Error(ex)
End Try End Try
End Sub End Sub
End Class End Class

View File

@ -1,6 +1,6 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmFlowForm Partial Class frmFlowForm
Inherits ClassFlowForm Inherits Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _ <System.Diagnostics.DebuggerNonUserCode()> _
@ -22,8 +22,24 @@ Partial Class frmFlowForm
'Das Bearbeiten mit dem Code-Editor ist nicht möglich. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _ <System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent() Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.SucheToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ContextMenuStrip1.SuspendLayout()
Me.SuspendLayout() Me.SuspendLayout()
' '
'ContextMenuStrip1
'
Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.SucheToolStripMenuItem})
Me.ContextMenuStrip1.Name = "ContextMenuStrip1"
Me.ContextMenuStrip1.Size = New System.Drawing.Size(107, 26)
'
'SucheToolStripMenuItem
'
Me.SucheToolStripMenuItem.Name = "SucheToolStripMenuItem"
Me.SucheToolStripMenuItem.Size = New System.Drawing.Size(106, 22)
Me.SucheToolStripMenuItem.Text = "Suche"
'
'frmFlowForm 'frmFlowForm
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@ -31,7 +47,11 @@ Partial Class frmFlowForm
Me.ClientSize = New System.Drawing.Size(800, 450) Me.ClientSize = New System.Drawing.Size(800, 450)
Me.Name = "frmFlowForm" Me.Name = "frmFlowForm"
Me.Text = "frmFlowForm" Me.Text = "frmFlowForm"
Me.ContextMenuStrip1.ResumeLayout(False)
Me.ResumeLayout(False) Me.ResumeLayout(False)
End Sub End Sub
Friend WithEvents ContextMenuStrip1 As ContextMenuStrip
Friend WithEvents SucheToolStripMenuItem As ToolStripMenuItem
End Class End Class

View File

@ -117,4 +117,7 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="ContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root> </root>

View File

@ -1,20 +1,35 @@
Imports System.ComponentModel Imports System.ComponentModel
Imports System.Drawing.Imaging
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Messaging Imports DigitalData.Modules.Messaging
Public Class frmFlowForm Public Class frmFlowForm
Private WithEvents Watcher As ClassClipboardWatcher = ClassClipboardWatcher.Singleton Private WithEvents Watcher As ClassClipboardWatcher = ClassClipboardWatcher.Singleton
Private ActiveModules As List(Of String) Private ActiveModules As List(Of String)
Private Logger As Logger
Private ESCHitCount As Integer = 0 Private ESCHitCount As Integer = 0
Private CurrentState As OnFlowFormStateChangedEvent.FlowFormState = OnFlowFormStateChangedEvent.FlowFormState.Default Private CurrentState As OnFlowFormStateChangedEvent.FlowFormState = OnFlowFormStateChangedEvent.FlowFormState.Default
Public Event ClipboardChanged As EventHandler(Of IDataObject) Public Event ClipboardChanged As EventHandler(Of IDataObject)
Public Sub New()
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
ActiveModules = New List(Of String)
Logger = My.LogConfig.GetLogger()
End Sub
Public Sub New(ActiveModules As List(Of String)) Public Sub New(ActiveModules As List(Of String))
' Dieser Aufruf ist für den Designer erforderlich. ' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent() InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Me.ActiveModules = ActiveModules Me.ActiveModules = ActiveModules
Logger = My.LogConfig.GetLogger()
End Sub End Sub
Private Sub frmFlowForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load Private Sub frmFlowForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
@ -22,7 +37,9 @@ Public Class frmFlowForm
TopMost = True TopMost = True
AllowDrop = True AllowDrop = True
ShowInTaskbar = False ShowInTaskbar = False
SetFlowFormState(OnFlowFormStateChangedEvent.FlowFormState.Default)
SetFormLocation()
SetFormState(OnFlowFormStateChangedEvent.FlowFormState.Default)
' === Register Events === ' === Register Events ===
@ -38,17 +55,16 @@ Public Class frmFlowForm
Try Try
EventBus.Instance.Unregister(Me) EventBus.Instance.Unregister(Me)
Catch ex As Exception Catch ex As Exception
Logger.Error(ex)
End Try End Try
End Sub End Sub
Private Sub Form_MouseClick(sender As Object, ByVal e As MouseEventArgs) Private Sub Form_MouseClick(sender As Object, ByVal e As MouseEventArgs)
If e.Button = MouseButtons.Right Then If e.Button = MouseButtons.Right Then
MsgBox("RightMouseClick", MsgBoxStyle.OkOnly) ContextMenuStrip1.Show(Cursor.Position)
Else Else
If CurrentState = OnFlowFormStateChangedEvent.FlowFormState.HasSearchResults Then If CurrentState = OnFlowFormStateChangedEvent.FlowFormState.HasSearchResults Then
SetFlowFormState(OnFlowFormStateChangedEvent.FlowFormState.Default) SetFormState(OnFlowFormStateChangedEvent.FlowFormState.Default)
EventBus.Instance.PostEvent(New OnFlowFormInteractionEvent(OnFlowFormInteractionEvent.FlowFormInteraction.Click)) EventBus.Instance.PostEvent(New OnFlowFormInteractionEvent(OnFlowFormInteractionEvent.FlowFormInteraction.Click))
End If End If
End If End If
@ -57,16 +73,19 @@ Public Class frmFlowForm
Private Sub Form_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Private Sub Form_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
If e.Button = MouseButtons.Left Then If e.Button = MouseButtons.Left Then
Win32.ReleaseCapture() ClassWin32.ReleaseCapture()
Win32.SendMessage(Handle, Win32.WM_NCLBUTTONDOWN, Win32.HTCAPTION, 0) ClassWin32.SendMessage(Handle, ClassWin32.WM_NCLBUTTONDOWN, ClassWin32.HTCAPTION, 0)
End If End If
End Sub End Sub
Private Sub Form_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs) Private Sub Form_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs)
If e.KeyCode = Keys.Escape Then If e.KeyCode = Keys.Escape Then
If ESCHitCount > 0 Then If ESCHitCount > 0 Then
Dim result As DialogResult = MessageBox.Show("Exit Zooflow", "Please Varify", MessageBoxButtons.YesNo) Dim result As DialogResult = MessageBox.Show("Exit Zooflow", "Please Varify", MessageBoxButtons.YesNo)
If result = DialogResult.Yes Then If result = DialogResult.Yes Then
Application.Exit() Application.Exit()
Else
ESCHitCount = 0
End If End If
Else Else
ESCHitCount += 1 ESCHitCount += 1
@ -75,16 +94,15 @@ Public Class frmFlowForm
If ActiveModules.Contains(ClassConstants.MODULE_ZOOFLOW) Then If ActiveModules.Contains(ClassConstants.MODULE_ZOOFLOW) Then
MsgBox("Search") MsgBox("Search")
End If End If
End If End If
End Sub End Sub
Public Sub OnEvent(e As OnFlowFormStateChangedEvent) Public Sub OnEvent(e As OnFlowFormStateChangedEvent)
CurrentState = e.State CurrentState = e.State
SetFlowFormState(e.State) SetFormState(e.State)
End Sub End Sub
Public Sub SetFlowFormState(State As OnFlowFormStateChangedEvent.FlowFormState) Public Sub SetFormState(State As OnFlowFormStateChangedEvent.FlowFormState)
Select Case State Select Case State
Case OnFlowFormStateChangedEvent.FlowFormState.HasSearchResults Case OnFlowFormStateChangedEvent.FlowFormState.HasSearchResults
SetBitmap(My.Resources.CW_GEFUNDEN_klein) SetBitmap(My.Resources.CW_GEFUNDEN_klein)
@ -95,6 +113,10 @@ Public Class frmFlowForm
End Select End Select
End Sub End Sub
Public Sub SetFormLocation()
Me.Location = My.UIConfig.FlowForm.Location
End Sub
Private Sub frmFlowForm_DragOver(sender As Object, e As DragEventArgs) Handles Me.DragOver Private Sub frmFlowForm_DragOver(sender As Object, e As DragEventArgs) Handles Me.DragOver
If Not ActiveModules.Contains(ClassConstants.MODULE_GLOBAL_INDEXER) Then If Not ActiveModules.Contains(ClassConstants.MODULE_GLOBAL_INDEXER) Then
e.Effect = DragDropEffects.None e.Effect = DragDropEffects.None
@ -102,15 +124,15 @@ Public Class frmFlowForm
If e.Data.GetDataPresent(DataFormats.FileDrop) Then If e.Data.GetDataPresent(DataFormats.FileDrop) Then
' Handle file dragged from Windows ' Handle file dragged from Windows
e.Effect = DragDropEffects.Copy e.Effect = DragDropEffects.Copy
SetFlowFormState(OnFlowFormStateChangedEvent.FlowFormState.HasFileDropped) SetFormState(OnFlowFormStateChangedEvent.FlowFormState.HasFileDropped)
ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
' Handle a message dragged from Outlook ' Handle a message dragged from Outlook
e.Effect = DragDropEffects.Copy e.Effect = DragDropEffects.Copy
SetFlowFormState(OnFlowFormStateChangedEvent.FlowFormState.HasFileDropped) SetFormState(OnFlowFormStateChangedEvent.FlowFormState.HasFileDropped)
ElseIf e.Data.GetDataPresent("aryFileGroupDescriptor") AndAlso (e.Data.GetDataPresent("FileContents")) Then ElseIf e.Data.GetDataPresent("aryFileGroupDescriptor") AndAlso (e.Data.GetDataPresent("FileContents")) Then
' Handle a message dragged from Thunderbird? ' Handle a message dragged from Thunderbird?
e.Effect = DragDropEffects.Copy e.Effect = DragDropEffects.Copy
SetFlowFormState(OnFlowFormStateChangedEvent.FlowFormState.HasFileDropped) SetFormState(OnFlowFormStateChangedEvent.FlowFormState.HasFileDropped)
Else Else
' Otherwise, do not handle ' Otherwise, do not handle
e.Effect = DragDropEffects.None e.Effect = DragDropEffects.None
@ -119,7 +141,7 @@ Public Class frmFlowForm
End Sub End Sub
Private Sub frmFlowForm_DragLeave(sender As Object, e As EventArgs) Handles Me.DragLeave Private Sub frmFlowForm_DragLeave(sender As Object, e As EventArgs) Handles Me.DragLeave
SetFlowFormState(OnFlowFormStateChangedEvent.FlowFormState.Default) SetFormState(OnFlowFormStateChangedEvent.FlowFormState.Default)
End Sub End Sub
Private Sub Watcher_ClipboardChanged(sender As Object, e As IDataObject) Handles Watcher.ClipboardChanged Private Sub Watcher_ClipboardChanged(sender As Object, e As IDataObject) Handles Watcher.ClipboardChanged
@ -128,10 +150,6 @@ Public Class frmFlowForm
End If End If
End Sub End Sub
Private Sub frmFlowForm_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
End Sub
'''' <summary> '''' <summary>
'''' DragDrop Support '''' DragDrop Support
'''' </summary> '''' </summary>
@ -143,4 +161,51 @@ Public Class frmFlowForm
' MyBase.WndProc(m) ' MyBase.WndProc(m)
'End Sub 'End Sub
Public Sub SetBitmap(ByVal bitmap As Bitmap)
SetBitmap(bitmap, 255, bitmap.Width, bitmap.Height)
End Sub
Public Sub SetBitmap(ByVal Bitmap As Bitmap, ByVal Opacity As Byte, ByVal Width As Integer, ByVal Height As Integer)
If Bitmap.PixelFormat <> PixelFormat.Format32bppArgb Then
Throw New ApplicationException("The bitmap must be 32ppp with alpha-channel.")
End If
Dim oScreenDeviceContext As IntPtr = ClassWin32.GetDC(IntPtr.Zero)
Dim oMemoryDeviceContext As IntPtr = ClassWin32.CreateCompatibleDC(oScreenDeviceContext)
Dim oBitmap As IntPtr = IntPtr.Zero
Dim oOldBitmap As IntPtr = IntPtr.Zero
Try
oBitmap = Bitmap.GetHbitmap(Color.FromArgb(0))
oOldBitmap = ClassWin32.SelectObject(oMemoryDeviceContext, oBitmap)
Dim oSize As ClassWin32.Size = New ClassWin32.Size(Width, Height)
Dim oPointSource As ClassWin32.Point = New ClassWin32.Point(0, 0)
Dim oTopPos As ClassWin32.Point = New ClassWin32.Point(Left, Top)
Dim oBlend As ClassWin32.BLENDFUNCTION = New ClassWin32.BLENDFUNCTION With {
.BlendOp = ClassWin32.AC_SRC_OVER,
.BlendFlags = 0,
.SourceConstantAlpha = Opacity,
.AlphaFormat = ClassWin32.AC_SRC_ALPHA
}
ClassWin32.UpdateLayeredWindow(Handle, oScreenDeviceContext, oTopPos, oSize, oMemoryDeviceContext, oPointSource, 0, oBlend, ClassWin32.ULW_ALPHA)
Finally
ClassWin32.ReleaseDC(IntPtr.Zero, oScreenDeviceContext)
If oBitmap <> IntPtr.Zero Then
ClassWin32.SelectObject(oMemoryDeviceContext, oOldBitmap)
ClassWin32.DeleteObject(oBitmap)
End If
ClassWin32.DeleteDC(oMemoryDeviceContext)
End Try
End Sub
Protected Overrides ReadOnly Property CreateParams As CreateParams
Get
Dim oParams As CreateParams = MyBase.CreateParams
oParams.ExStyle = oParams.ExStyle Or &H80000
Return oParams
End Get
End Property
End Class End Class