diff --git a/Automation/App.config b/Automation/App.config new file mode 100644 index 00000000..5534e287 --- /dev/null +++ b/Automation/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Automation/Automation.vbproj b/Automation/Automation.vbproj new file mode 100644 index 00000000..40c4e738 --- /dev/null +++ b/Automation/Automation.vbproj @@ -0,0 +1,139 @@ + + + + + Debug + AnyCPU + {483A3DA7-6F7A-4E57-B77F-ED33F4E280C5} + WinExe + Automation.My.MyApplication + Automation + Automation + 512 + WindowsForms + v4.6.1 + true + + + AnyCPU + true + full + true + true + bin\Debug\ + Automation.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + Automation.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + D:\ProgramFiles\GdPicture.NET 14\Redist\GdPicture.NET\GdPicture.NET.14.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Form + + + Form1.vb + Form + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + Form1.vb + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + {903b2d7d-3b80-4be9-8713-7447b704e1b0} + Logging + + + {5efaef9b-90b9-4f05-9f70-f79ad77fff86} + Windows + + + + \ No newline at end of file diff --git a/Automation/ClassClipboard.vb b/Automation/ClassClipboard.vb new file mode 100644 index 00000000..71f2f3fa --- /dev/null +++ b/Automation/ClassClipboard.vb @@ -0,0 +1,68 @@ +Imports System.Runtime.InteropServices +Public Class ClassClipboardWatcher + Inherits NativeWindow + Implements IDisposable + + Private Class Win32 + + Public Shared Function SetClipboardViewer(ByVal hWnd As IntPtr) As IntPtr + End Function + End Class + + Const WM_DRAWCLIPBOARD As Integer = &H308 + + Public Event ClipboardChanged As EventHandler(Of IDataObject) + Public Shared Singleton As New ClassClipboardWatcher + + Private _handle As IntPtr + + Private Sub New() + MyBase.CreateHandle(New CreateParams) + _handle = Win32.SetClipboardViewer(Handle) + End Sub + + Protected Overrides Sub WndProc(ByRef m As Message) + + Select Case m.Msg + Case WM_DRAWCLIPBOARD + Dim oData As IDataObject = Clipboard.GetDataObject + RaiseEvent ClipboardChanged(Me, oData) + End Select + MyBase.WndProc(m) + End Sub + +#Region "IDisposable Support" + ' Für diese Klasse ist korrekte Ressourcenbereinigung besonders wichtig, da + ' mit systemübergreifenden Ressourcen gearbeitet wird + + ' So ermitteln Sie überflüssige Aufrufe + Private disposedValue As Boolean = False + + Protected Overridable Sub Dispose(ByVal disposing As Boolean) + If Not disposedValue Then + If disposing Then + ' TODO: Verwaltete Ressourcen freigeben, wenn sie explizit + ' aufgerufen werden + End If + MyBase.DestroyHandle() + Dim H As IntPtr = Win32.SetClipboardViewer(_handle) + End If + disposedValue = True + End Sub + + ' Dieser Code wird von Visual Basic hinzugefügt, um das Dispose-Muster + ' richtig zu implementieren. + Public Sub Dispose() Implements IDisposable.Dispose + ' Sie sollten diesen Code nicht ändern, sondern stattdessen ihren + ' Bereinigungscode oben in + ' Dispose(ByVal disposing As Boolean) einfügen. + Dispose(True) + GC.SuppressFinalize(Me) + End Sub + + Protected Overrides Sub Finalize() + MyBase.Finalize() + Dispose(False) + End Sub +#End Region +End Class diff --git a/Automation/Form1.Designer.vb b/Automation/Form1.Designer.vb new file mode 100644 index 00000000..01d27c1b --- /dev/null +++ b/Automation/Form1.Designer.vb @@ -0,0 +1,215 @@ + +Partial Class Form1 + 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.Timer1 = New System.Windows.Forms.Timer(Me.components) + Me.TextBox1 = New System.Windows.Forms.TextBox() + Me.Label4 = New System.Windows.Forms.Label() + Me.Label5 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.Label7 = New System.Windows.Forms.Label() + Me.TextBox9 = New System.Windows.Forms.TextBox() + Me.TextBox10 = New System.Windows.Forms.TextBox() + Me.TextBox11 = New System.Windows.Forms.TextBox() + Me.TextBox12 = New System.Windows.Forms.TextBox() + Me.Label21 = New System.Windows.Forms.Label() + Me.TextBox6 = New System.Windows.Forms.TextBox() + Me.TextBox7 = New System.Windows.Forms.TextBox() + Me.TextBox8 = New System.Windows.Forms.TextBox() + Me.ComboBox1 = New System.Windows.Forms.ComboBox() + Me.Label1 = New System.Windows.Forms.Label() + Me.SuspendLayout() + ' + 'Timer1 + ' + ' + 'TextBox1 + ' + Me.TextBox1.Location = New System.Drawing.Point(12, 12) + Me.TextBox1.Name = "TextBox1" + Me.TextBox1.Size = New System.Drawing.Size(100, 20) + Me.TextBox1.TabIndex = 0 + Me.TextBox1.Text = "Top Left" + ' + 'Label4 + ' + Me.Label4.AutoSize = True + Me.Label4.Location = New System.Drawing.Point(183, 105) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(25, 13) + Me.Label4.TabIndex = 6 + Me.Label4.Text = "Left" + ' + 'Label5 + ' + Me.Label5.AutoSize = True + Me.Label5.Location = New System.Drawing.Point(183, 183) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(40, 13) + Me.Label5.TabIndex = 6 + Me.Label5.Text = "Bottom" + ' + 'Label6 + ' + Me.Label6.AutoSize = True + Me.Label6.Location = New System.Drawing.Point(183, 157) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(26, 13) + Me.Label6.TabIndex = 6 + Me.Label6.Text = "Top" + ' + 'Label7 + ' + Me.Label7.AutoSize = True + Me.Label7.Location = New System.Drawing.Point(183, 131) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(32, 13) + Me.Label7.TabIndex = 6 + Me.Label7.Text = "Right" + ' + 'TextBox9 + ' + Me.TextBox9.Location = New System.Drawing.Point(231, 102) + Me.TextBox9.Name = "TextBox9" + Me.TextBox9.Size = New System.Drawing.Size(100, 20) + Me.TextBox9.TabIndex = 1 + ' + 'TextBox10 + ' + Me.TextBox10.Location = New System.Drawing.Point(231, 180) + Me.TextBox10.Name = "TextBox10" + Me.TextBox10.Size = New System.Drawing.Size(100, 20) + Me.TextBox10.TabIndex = 2 + ' + 'TextBox11 + ' + Me.TextBox11.Location = New System.Drawing.Point(231, 154) + Me.TextBox11.Name = "TextBox11" + Me.TextBox11.Size = New System.Drawing.Size(100, 20) + Me.TextBox11.TabIndex = 3 + ' + 'TextBox12 + ' + Me.TextBox12.Location = New System.Drawing.Point(231, 128) + Me.TextBox12.Name = "TextBox12" + Me.TextBox12.Size = New System.Drawing.Size(100, 20) + Me.TextBox12.TabIndex = 4 + ' + 'Label21 + ' + Me.Label21.AutoSize = True + Me.Label21.Location = New System.Drawing.Point(183, 77) + Me.Label21.Name = "Label21" + Me.Label21.Size = New System.Drawing.Size(115, 13) + Me.Label21.TabIndex = 8 + Me.Label21.Text = "CURRENT CONTROL" + ' + 'TextBox6 + ' + Me.TextBox6.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.TextBox6.Location = New System.Drawing.Point(12, 298) + Me.TextBox6.Name = "TextBox6" + Me.TextBox6.Size = New System.Drawing.Size(100, 20) + Me.TextBox6.TabIndex = 0 + Me.TextBox6.Text = "Bottom Left" + ' + 'TextBox7 + ' + Me.TextBox7.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TextBox7.Location = New System.Drawing.Point(255, 12) + Me.TextBox7.Name = "TextBox7" + Me.TextBox7.Size = New System.Drawing.Size(100, 20) + Me.TextBox7.TabIndex = 0 + Me.TextBox7.Text = "TopRight" + ' + 'TextBox8 + ' + Me.TextBox8.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TextBox8.Location = New System.Drawing.Point(255, 298) + Me.TextBox8.Name = "TextBox8" + Me.TextBox8.Size = New System.Drawing.Size(100, 20) + Me.TextBox8.TabIndex = 0 + Me.TextBox8.Text = "BottomRight" + ' + 'ComboBox1 + ' + Me.ComboBox1.FormattingEnabled = True + Me.ComboBox1.Items.AddRange(New Object() {"TopLeft", "TopRight", "BottomLeft", "BottomRight"}) + Me.ComboBox1.Location = New System.Drawing.Point(30, 102) + Me.ComboBox1.Name = "ComboBox1" + Me.ComboBox1.Size = New System.Drawing.Size(121, 21) + Me.ComboBox1.TabIndex = 9 + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(27, 86) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(41, 13) + Me.Label1.TabIndex = 8 + Me.Label1.Text = "Anchor" + ' + 'Form1 + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(367, 330) + Me.Controls.Add(Me.ComboBox1) + Me.Controls.Add(Me.Label1) + Me.Controls.Add(Me.Label21) + Me.Controls.Add(Me.Label7) + Me.Controls.Add(Me.Label6) + Me.Controls.Add(Me.Label5) + Me.Controls.Add(Me.Label4) + Me.Controls.Add(Me.TextBox12) + Me.Controls.Add(Me.TextBox11) + Me.Controls.Add(Me.TextBox10) + Me.Controls.Add(Me.TextBox9) + Me.Controls.Add(Me.TextBox6) + Me.Controls.Add(Me.TextBox8) + Me.Controls.Add(Me.TextBox7) + Me.Controls.Add(Me.TextBox1) + Me.Name = "Form1" + Me.Text = "Form1" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents Timer1 As Timer + Friend WithEvents TextBox1 As TextBox + Friend WithEvents Label4 As Label + Friend WithEvents Label5 As Label + Friend WithEvents Label6 As Label + Friend WithEvents Label7 As Label + Friend WithEvents TextBox9 As TextBox + Friend WithEvents TextBox10 As TextBox + Friend WithEvents TextBox11 As TextBox + Friend WithEvents TextBox12 As TextBox + Friend WithEvents Label21 As Label + Friend WithEvents TextBox6 As TextBox + Friend WithEvents TextBox7 As TextBox + Friend WithEvents TextBox8 As TextBox + Friend WithEvents ComboBox1 As ComboBox + Friend WithEvents Label1 As Label +End Class diff --git a/Automation/Form1.resx b/Automation/Form1.resx new file mode 100644 index 00000000..d0d99f42 --- /dev/null +++ b/Automation/Form1.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/Automation/Form1.vb b/Automation/Form1.vb new file mode 100644 index 00000000..67190f0f --- /dev/null +++ b/Automation/Form1.vb @@ -0,0 +1,47 @@ +Imports System.Runtime.InteropServices +Imports DigitalData.Modules.Logging +Imports DigitalData.Modules.Windows + +Public Class Form1 + Private Logger As Logger + Private LogConfig As LogConfig + + Private Watcher As ClassClipboardWatcher + Private Window As Window + + Private CurrentAnchor As Window.Anchor = Window.Anchor.TopLeft + + Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Timer1.Interval = 1000 + Timer1.Enabled = True + + LogConfig = New LogConfig(LogConfig.PathType.AppData) + Logger = LogConfig.GetLogger() + Window = New Window(LogConfig) + + Watcher = ClassClipboardWatcher.Singleton + AddHandler Watcher.ClipboardChanged, AddressOf Watcher_ClipboardChanged + End Sub + + Private Sub Watcher_ClipboardChanged(sender As Object, e As IDataObject) + Dim oControl As Window.RectangleInfo = Window.GetFocusedControlLocation(CurrentAnchor) + + TextBox9.Text = oControl.Left + TextBox12.Text = oControl.Right + TextBox11.Text = oControl.Top + TextBox10.Text = oControl.Bottom + End Sub + + Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged + Select Case ComboBox1.Text + Case "TopLeft" + CurrentAnchor = Window.Anchor.TopLeft + Case "TopRight" + CurrentAnchor = Window.Anchor.TopRight + Case "BottomLeft" + CurrentAnchor = Window.Anchor.BottomLeft + Case "BottomRight" + CurrentAnchor = Window.Anchor.BottomRight + End Select + End Sub +End Class diff --git a/Automation/My Project/Application.Designer.vb b/Automation/My Project/Application.Designer.vb new file mode 100644 index 00000000..79646505 --- /dev/null +++ b/Automation/My Project/Application.Designer.vb @@ -0,0 +1,38 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + 'NOTE: This file is auto-generated; do not modify it directly. To make changes, + ' or if you encounter build errors in this file, go to the Project Designer + ' (go to Project Properties or double-click the My Project node in + ' Solution Explorer), and make changes on the Application tab. + ' + Partial Friend Class MyApplication + + _ + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = false + Me.EnableVisualStyles = true + Me.SaveMySettingsOnExit = true + Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + _ + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Global.Automation.Form1 + End Sub + End Class +End Namespace diff --git a/Automation/My Project/Application.myapp b/Automation/My Project/Application.myapp new file mode 100644 index 00000000..1243847f --- /dev/null +++ b/Automation/My Project/Application.myapp @@ -0,0 +1,11 @@ + + + true + Form1 + false + 0 + true + 0 + 0 + true + diff --git a/Automation/My Project/AssemblyInfo.vb b/Automation/My Project/AssemblyInfo.vb new file mode 100644 index 00000000..da3bda89 --- /dev/null +++ b/Automation/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' Allgemeine Informationen über eine Assembly werden über die folgenden +' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +' die einer Assembly zugeordnet sind. + +' Werte der Assemblyattribute überprüfen + + + + + + + + + + +'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird. + + +' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +' +' Hauptversion +' Nebenversion +' Buildnummer +' Revision +' +' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +' übernehmen, indem Sie "*" eingeben: +' + + + diff --git a/Automation/My Project/Resources.Designer.vb b/Automation/My Project/Resources.Designer.vb new file mode 100644 index 00000000..3ed5a386 --- /dev/null +++ b/Automation/My Project/Resources.Designer.vb @@ -0,0 +1,62 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My.Resources + + 'This class was auto-generated by the StronglyTypedResourceBuilder + 'class via a tool like ResGen or Visual Studio. + 'To add or remove a member, edit your .ResX file then rerun ResGen + 'with the /str option, or rebuild your VS project. + ''' + ''' A strongly-typed resource class, for looking up localized strings, etc. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Returns the cached ResourceManager instance used by this class. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Automation.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Overrides the current thread's CurrentUICulture property for all + ''' resource lookups using this strongly typed resource class. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set(ByVal value As Global.System.Globalization.CultureInfo) + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/Automation/My Project/Resources.resx b/Automation/My Project/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/Automation/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Automation/My Project/Settings.Designer.vb b/Automation/My Project/Settings.Designer.vb new file mode 100644 index 00000000..8c88c5f6 --- /dev/null +++ b/Automation/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +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" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + 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 +#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 +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.Automation.My.MySettings + Get + Return Global.Automation.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/Automation/My Project/Settings.settings b/Automation/My Project/Settings.settings new file mode 100644 index 00000000..85b890b3 --- /dev/null +++ b/Automation/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + +