From 037422186d903d7a8da7bbf3872618646213f9e9 Mon Sep 17 00:00:00 2001 From: Digital Data - Marlon Schreiber Date: Wed, 15 Aug 2018 15:41:26 +0200 Subject: [PATCH] MS Initialiserung windreamdll --- DDMonorepo.sln | 7 + Modules.Windream/ClassHelper.vb | 3 + Modules.Windream/Constants.vb | 3 + Modules.Windream/Helpers.vb | 36 + Modules.Windream/Modules.Windream.vbproj | 30 +- Modules.Windream/Session.vb | 5 - Modules.Windream/Windream.vb | 969 +++++++++++++++++++++ Modules.Windream/packages.config | 4 + TestGUI/App.config | 6 + TestGUI/Form1.Designer.vb | 62 ++ TestGUI/Form1.resx | 120 +++ TestGUI/Form1.vb | 7 + TestGUI/My Project/Application.Designer.vb | 38 + TestGUI/My Project/Application.myapp | 11 + TestGUI/My Project/AssemblyInfo.vb | 35 + TestGUI/My Project/Resources.Designer.vb | 62 ++ TestGUI/My Project/Resources.resx | 117 +++ TestGUI/My Project/Settings.Designer.vb | 73 ++ TestGUI/My Project/Settings.settings | 7 + TestGUI/TestGUI.vbproj | 125 +++ 20 files changed, 1714 insertions(+), 6 deletions(-) create mode 100644 Modules.Windream/ClassHelper.vb create mode 100644 Modules.Windream/Helpers.vb delete mode 100644 Modules.Windream/Session.vb create mode 100644 Modules.Windream/Windream.vb create mode 100644 Modules.Windream/packages.config create mode 100644 TestGUI/App.config create mode 100644 TestGUI/Form1.Designer.vb create mode 100644 TestGUI/Form1.resx create mode 100644 TestGUI/Form1.vb create mode 100644 TestGUI/My Project/Application.Designer.vb create mode 100644 TestGUI/My Project/Application.myapp create mode 100644 TestGUI/My Project/AssemblyInfo.vb create mode 100644 TestGUI/My Project/Resources.Designer.vb create mode 100644 TestGUI/My Project/Resources.resx create mode 100644 TestGUI/My Project/Settings.Designer.vb create mode 100644 TestGUI/My Project/Settings.settings create mode 100644 TestGUI/TestGUI.vbproj diff --git a/DDMonorepo.sln b/DDMonorepo.sln index 72d2dbb9..9a0d30e6 100644 --- a/DDMonorepo.sln +++ b/DDMonorepo.sln @@ -17,6 +17,8 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Modules.Windream", "Modules EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{7AF3F9C2-C939-4A08-95C1-0453207E298A}" EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TestGUI", "TestGUI\TestGUI.vbproj", "{93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -35,6 +37,10 @@ Global {4C86DF8F-A280-40D4-85B0-10B1BF66C15C}.Debug|Any CPU.Build.0 = Debug|Any CPU {4C86DF8F-A280-40D4-85B0-10B1BF66C15C}.Release|Any CPU.ActiveCfg = Release|Any CPU {4C86DF8F-A280-40D4-85B0-10B1BF66C15C}.Release|Any CPU.Build.0 = Release|Any CPU + {93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -43,6 +49,7 @@ Global {5284F4E5-A6C1-4BCF-896F-3ABEA985B741} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB} {903B2D7D-3B80-4BE9-8713-7447B704E1B0} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC} {4C86DF8F-A280-40D4-85B0-10B1BF66C15C} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC} + {93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C1BE4090-A0FD-48AF-86CB-39099D14B286} diff --git a/Modules.Windream/ClassHelper.vb b/Modules.Windream/ClassHelper.vb new file mode 100644 index 00000000..48750655 --- /dev/null +++ b/Modules.Windream/ClassHelper.vb @@ -0,0 +1,3 @@ +Public Class ClassHelper + +End Class diff --git a/Modules.Windream/Constants.vb b/Modules.Windream/Constants.vb index 722d3935..68f5ce14 100644 --- a/Modules.Windream/Constants.vb +++ b/Modules.Windream/Constants.vb @@ -33,4 +33,7 @@ Public Const INDEX_FLAG_MASK = &HFFFFF000 Public Const INDEX_TYPE_VECTOR = &H1000 Public Const INDEX_TYPE_DEFAULT_VALUE = &H4000 + 'Single Index Types + Public Const WMObjectVariableValueTypeUndefined = 0 + End Class diff --git a/Modules.Windream/Helpers.vb b/Modules.Windream/Helpers.vb new file mode 100644 index 00000000..23db57fa --- /dev/null +++ b/Modules.Windream/Helpers.vb @@ -0,0 +1,36 @@ +Public Class Helpers + Inherits Constants + Friend Shared Function Convert_VectorType(vType As Object, value As String) + Select Case vType + Case INDEX_TYPE_HASH ' 36865 + 'Umwandeln in String + Return CStr(value) + Case INDEX_TYPE_VECTOR_STRING '4097 + 'Umwandeln in String + Return CStr(value) + Case INDEX_TYPE_VECTOR_INTEGER '4098 + 'Umwandeln in Integer + value = value.ToString.Replace(" ", "") + Return CInt(value) + Case INDEX_TYPE_VECTOR_FLOAT '4099 + Dim Str As String = value + Str = Str.ToString.Replace(" ", "") + 'Umwandeln in Double + Return CDbl(Str.Replace(".", ",")) + Case INDEX_TYPE_VECTOR_BOOLEAN '4100 + 'Umwandeln in Boolean + Return CBool(value) + Case INDEX_TYPE_VECTOR_DATE '4101 + 'Umwandeln in Date + Return CDate(value) + Case INDEX_TYPE_VECTOR_INTEGER_64BIT '4107 + Return Convert.ToInt64(value) + Case INDEX_TYPE_VECTOR_DATE_TIME '4103 + 'Umwandeln in Datum Uhrzeit + Return value + Case Else + 'Umwandeln in String + Return CStr(value) + End Select + End Function +End Class diff --git a/Modules.Windream/Modules.Windream.vbproj b/Modules.Windream/Modules.Windream.vbproj index 854a4ce6..d8b4b6ca 100644 --- a/Modules.Windream/Modules.Windream.vbproj +++ b/Modules.Windream/Modules.Windream.vbproj @@ -43,8 +43,33 @@ On + + P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll + False + + + P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOBRWSLib.dll + True + + + P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOSRCHLib.dll + True + + + P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOTOOLLib.dll + True + + + + ..\packages\NLog.4.5.8\lib\net45\NLog.dll + + + + + + @@ -63,8 +88,9 @@ + - + True @@ -80,6 +106,7 @@ Settings.settings True + @@ -99,6 +126,7 @@ My Settings.Designer.vb + \ No newline at end of file diff --git a/Modules.Windream/Session.vb b/Modules.Windream/Session.vb deleted file mode 100644 index 1b9c25cf..00000000 --- a/Modules.Windream/Session.vb +++ /dev/null @@ -1,5 +0,0 @@ -Public Class Session - Public Sub New() - - End Sub -End Class diff --git a/Modules.Windream/Windream.vb b/Modules.Windream/Windream.vb new file mode 100644 index 00000000..458a4f4d --- /dev/null +++ b/Modules.Windream/Windream.vb @@ -0,0 +1,969 @@ +Imports WINDREAMLib +Imports WINDREAMLib.WMCOMEvent +Imports WINDREAMLib.WMEntity +Imports WINDREAMLib.WMObjectEditMode +Imports WINDREAMLib.WMSearchOperator +Imports WINDREAMLib.WMSearchRelation +Imports WMOBRWSLib +Imports WMOSRCHLib +Public Class Windream + Inherits Constants +#Region "+++++ Variables +++++" + Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger + + Public Shared CurrentSession As WMObject = Nothing + Public Shared CurrentSessionIsLoggedIn As Boolean = False + Private Shared CurrentObjecttypes As WINDREAMLib.WMObjects + Private Shared CurrentController As WMOSearchController + Private Shared CurrentWMConnect ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht) + Public Shared CurrentWMServer As String + Private Shared WMDriveLetter As String = "W" + Private Shared _Session_Reconnect As Boolean = False +#End Region +#Region "+++++ Init +++++" + ''' + ''' Initializes windream and creates a windream session with the actual user + ''' + ''' + Public Sub New(WMDRIVE As String, SessionReconnect As Boolean) + Try + WMDriveLetter = WMDRIVE + NewSession() + Catch ex As Exception + Logger.Error(ex) + End Try + End Sub + ''' + ''' Creates a windream session with the actual user + ''' + ''' Returns true when created, false if not + ''' + Public Shared Function NewSession() + Try + Dim wmbrwsr + wmbrwsr = CreateObject("WMOBrws.ServerBrowser") + '================================================================== + ' get the current DMS-server to log in + '================================================================== + CurrentWMServer = wmbrwsr.GetCurrentServer + Logger.Info("ECMServer: " & CurrentWMServer) + Dim Connect + Try + Connect = CreateObject("Windream.WMConnect") + Catch ex As Exception + CurrentSession = Nothing + CurrentSessionIsLoggedIn = False + Logger.Error(ex) + Return False + End Try + '================================================================== + ' create a session + '================================================================== + 'Prüfen ob sich personifiziert angemeldet werden muss? + Try + CurrentSession = CreateObject("Windream.WMSession", CurrentWMServer) + Catch ex As Exception + CurrentSession = Nothing + CurrentSessionIsLoggedIn = False + Logger.Error(ex) + Return False + End Try + '================================================================== + ' login session + '================================================================== + Try + Connect.LoginSession(CurrentSession) + If CurrentSession.aLoggedin Then + CurrentSessionIsLoggedIn = True + Try + CurrentSession.SwitchEvents(WMCOMEventWMSessionNeedIndex, False) + ' der Parameter WMEntityDocument definiert, dass nur Dokumenttypen und keine + ' Ordnertypen ausgelesen werden + CurrentObjecttypes = CurrentSession.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument) + Catch ex As Exception + Logger.Error(ex) + 'clsLogger.Add("Could not get Objecttypes: " & ex.Message, True) + End Try + Return True + Else + CurrentSessionIsLoggedIn = False + Logger.Warn("Session could be built but user cannot be logged in!") + Return False + End If + Catch ex As Exception + If Not IsNothing(CurrentSession) Then + If CurrentSession.aLoggedin Then + Logger.Info("User is already logged in!....") + CurrentSessionIsLoggedIn = True + Else + CurrentSessionIsLoggedIn = False + End If + Return True + Else + Logger.Error(ex) + CurrentSession = Nothing + CurrentSessionIsLoggedIn = False + Return False + End If + End Try + Catch ex As Exception + CurrentSession = Nothing + CurrentSessionIsLoggedIn = False + Logger.Error(ex) + 'clsLogger.Add("Unexpected Error in Create Session: " & ex.Message, True) + Return False + End Try + End Function +#End Region +#Region "+++++ New +++++" + Public Shared Function NewFile() + + End Function + ''' + ''' Creates a folder in windream. All folder-parts will be checked + ''' + ''' full path of new folder + ''' Returns true when folder was created, false if not + ''' + Public Shared Function NewFolder(ByVal folderpath As String) + Try + If folderpath.StartsWith("\") = False And folderpath.ToUpper.StartsWith(WMDriveLetter.ToUpper) Then + folderpath = folderpath.Substring(2) + End If + Dim folders() As String = folderpath.Split("\") + For Each folder As String In folders + Dim WMObject As WINDREAMLib.WMObject + If TestFolderExists(folder) = False Then + Try + WMObject = CurrentSession.GetNewWMObjectFS(WMEntityFolder, folder, WMObjectEditModeNoEdit) + Catch ex As Exception + Logger.Error(ex) + 'clsLogger.Add("Could not create WMObject for folderpath '" & folder & "': " & ex.Message, True) + Return False + End Try + + End If + Next + Return True + Catch ex As Exception + Logger.Error(ex) + 'clsLogger.Add("Unexpected error in NewFolder: " & ex.Message, True) + Return False + End Try + End Function + ''' + ''' Indexes the file with the given values + ''' + ''' full filepath + ''' Name of the index + ''' values as array + ''' Returns true when folder was created, false if not + ''' + Private Shared Function NewIndexFile(WMFile As String, ByVal indexname As String, ByVal aValues() As String) + + If Not WMFile.StartsWith("\") And WMFile.ToUpper.StartsWith(WMDriveLetter.ToUpper) Then + WMFile = WMFile.Substring(2) + End If + Dim oWMFile As WINDREAMLib.WMObject + Try + oWMFile = CurrentSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WMFile) 'WINDREAMLib.WMEntity.WMEntityDocument + Catch ex As Exception + Logger.Error(ex) + 'clsLogger.Add(">> Could not create oWMFile-Indexing file '" & WD_File & ": " & ex.Message, True) + Return False + End Try + Dim vektInsState As Integer = 1 + Try + If Not oWMFile.aLocked Then + oWMFile.lock() + Else + Logger.Info("WMDoc is locked already!") + Return False + End If + + + If aValues.Length = 1 And aValues(0) = "" Then + Logger.Info("Indexvalue is empty - No indexing") + + Return False + End If + Logger.Info("Indexing of index '" & indexname) + + Dim oWMType + Try + ' das entsprechende Attribut aus windream auslesen + Dim oAttribute = CurrentSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname) + ' den Variablentyp (String, Integer, ...) auslesen + oWMType = oAttribute.getVariableValue("dwAttrType") + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + + ' wenn in aValues an Position i ein Wert steht + Dim i As Integer = 0 + Dim value = aValues(i) + + Dim oWMValueConverted + + Dim vektor As Boolean = False + 'Den Typ des Index-Feldes auslesen + Logger.Info("type of windreamIndex: " & oWMType.ToString) + Select Case (oWMType) + + Case INDEX_TYPE_STRING + oWMValueConverted = CStr(value) + Case INDEX_TYPE_INTEGER + value = value.ToString.Replace(" ", "") + value = value.ToString.Replace(" ", "") + oWMValueConverted = CInt(value) + Case INDEX_TYPE_FLOAT + value = value.ToString.Replace(" ", "") + oWMValueConverted = CDbl(value) + Case INDEX_TYPE_FIXED_POINT + value = value.ToString.Replace(" ", "") + oWMValueConverted = CDbl(value) + Case INDEX_TYPE_BOOLEAN + oWMValueConverted = CBool(value) + Case INDEX_TYPE_DATE + 'Dim _date As Date = value + oWMValueConverted = value + Case INDEX_TYPE_TIME + oWMValueConverted = CDbl(value) + Case INDEX_TYPE_CURRENCY + 'Wegen currency muß ein eigenes Objekt vom typ Variant erzeugt werden + Dim aValueWrapper As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(CDec(value)) + oWMValueConverted = aValueWrapper + Case INDEX_TYPE_TIME + 'If ((value)) Then + ' oWMValueConverted = CDate(value) + 'Else + ' oWMValueConverted = "" + 'End If + 'Dim _date As Date = value + oWMValueConverted = oWMValueConverted '*_date.ToShortTimeString + Case INDEX_TYPE_FLOAT + oWMValueConverted = CStr(value) + Case INDEX_TYPE_VARIANT + + oWMValueConverted = CStr(value) + Case INDEX_TYPE_FULLTEXT + oWMValueConverted = CStr(value) + Case 4097 + 'Vektor alphanumerisch + vektor = True + Case 4098 + 'Vektor Numerisch + vektor = True + Case 4099 + 'Vektor Kommazahl + vektor = True + Case 4100 + 'Vektor Kommazahl + vektor = True + Case 4101 + 'Vektor Kommazahl + vektor = True + Case 4103 + 'Vektor DateTime + vektor = True + Case 4107 + vektor = True + Case 36865 + 'Vektor Kommazahl + vektor = True + Case Else + oWMValueConverted = "" + End Select + If vektor = False Then + If oWMValueConverted.ToString Is Nothing = False Then + Logger.Info("Converted value is: " & oWMValueConverted.ToString) + End If + End If + '############################################################################################ + '####################### Der eigentliche Indexierungsvorgang ################################ + '############################################################################################ + If vektor = False Then + Try + If oWMValueConverted.ToString Is Nothing = False Then + Logger.Info("Now: oWMFile.SetVariableValue(" & indexname & ", " & oWMValueConverted & ")") + oWMFile.SetVariableValue(indexname, CInt(oWMValueConverted)) + 'Die Datei speichern + oWMFile.Save() + Logger.Info("Index has been written!") + Else + Logger.Info("No indexvalue exists!") + End If + Catch ex As Exception + Logger.Error(ex) + oWMFile.Save() + oWMFile.unlock() + Return False + End Try + + Else + Logger.Info("Vectorfield: Preparing of Array!") + Dim myArray() + Dim Anzahl As Integer = aValues.Length + 'Vektorfeld wird mit EINEM Wert gefüllt + If Anzahl = 1 Then + Logger.Info("Vectorfield will be filled with ONE VALUE!") + ReDim myArray(0) + myArray(0) = Helpers.Convert_VectorType(oWMType, value) + 'Jetzt überprüfen ob Werte in Vektorfeld angefügt oder überschrieben werden sollen + Logger.Info("Converted Value: " & myArray(0).ToString) + Dim VektorArray() + VektorArray = Return_VektorArray(oWMFile, indexname, myArray, oWMType) + If VektorArray Is Nothing = False Then + ReDim myArray(VektorArray.Length - 1) + Array.Copy(VektorArray, myArray, VektorArray.Length) + 'Jetzt die Nachindexierung + oWMFile.SetVariableValue(indexname, myArray) ' + Logger.Info("Vectorindex has been written!") + 'Die Änderungen festsschreiben/speichern + oWMFile.Save() + End If + + End If + + End If + i += 1 + + oWMFile.unlock() + Logger.Info("...and unlock") + Return True + Catch ex As Exception + Logger.Error(ex) + oWMFile.Save() + oWMFile.unlock() + Return False + End Try + End Function + Private Shared Function NewLockWMFile(oWMFile As WMObject) As Boolean + Try + oWMFile.lock() + Return True + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + End Function + ''' + ''' Sets the folder-objecttype. + ''' + ''' full path of folder + ''' Obcjectype Name + ''' Returns true when Otype was set, false if not + ''' + Public Shared Function NewObjecttypeForFolder(folderpath As String, folderObjecttype As String) + Try + Dim result As Boolean = False + Dim WMFolder As WINDREAMLib.WMObject + If folderpath.StartsWith("\") = False And folderpath.ToUpper.StartsWith(WMDriveLetter.ToUpper) Then + folderpath = folderpath.Substring(2) + End If + + If TestFolderExists(folderpath) = True Then + WMFolder = CurrentSession.GetWMObjectByPath(WMEntityFolder, folderpath) + Try + ' die Datei sperren + WMFolder.lock() + Catch ex As Exception + ' nichts tun (Datei ist bereits gesperrt) + End Try + + ' wenn der Datei noch kein Dokumenttyp zugewiesen wurde + If WMFolder.aObjectType.aName = "Standard" Then + + ' ihr den entsprechenden Dokumenttyp zuweisen + WMFolder.aObjectType = CurrentSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, folderObjecttype) + ' WMObject.aObjectType = Me.selectedProfile.Dokumenttyp + Logger.Info("Objecttype has been set") + result = True + Else + If WMFolder.aObjectType.aName <> "Standard" Then + Logger.Warn("An Objecttype has already been set!") + End If + End If + + Try + WMFolder.Save() + Catch ex As Exception + ' wenn es einen Fehler beim speichern gab, dann konnte auch kein Dokumenttyp gesetzt werden -> es kann also auch keine + ' Indexierung stattfinden und die Indexierung muss nicht fortgesetzt werden + Return False + End Try + + Try + WMFolder.unlock() + Catch ex As Exception + ' wenn das entsperren nicht geklappt hat, dann war die Datei auch nicht gesperrt + End Try + Return result + End If + + + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + End Function + ''' + ''' Creates a new version of the file + ''' + ''' full path to the file + ''' Comment + ''' Returns true when version was created, false if not + ''' + Public Shared Function NewVersion(ByVal WMPath As String, ByVal Comment As String) + Try + If WMPath.StartsWith("\") = False And WMPath.ToUpper.StartsWith(WMDriveLetter.ToUpper) Then + WMPath = WMPath.Substring(2) + End If + + Dim WMObject As WINDREAMLib.WMObject '= CreateObject("WINDREAMLib.WMObject") 'New WINDREAMLib.WMObject + Try + WMObject = CurrentSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WMPath) 'WINDREAMLib.WMEntity.WMEntityDocument + Catch ex As Exception + Logger.Warn("Could not create WMObject in Create_Version for file '" & WMPath & "': " & ex.Message) + Return False + End Try + WMObject.CreateVersion2(False, "HISTORY_New_From_Version", Comment) + Return True + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + End Function +#End Region +#Region "+++++ Get +++++" + ''' + ''' Returns all choicelists + ''' + ''' choicelists as String-Array + ''' + Public Shared Function GetChoiceLists() As List(Of String) + Try + Dim oChoiceLists As WMObjects + Dim oChoiceList As IWMObject2 + ' den Objekttyp laden + oChoiceLists = CurrentSession.GetAllObjects(WMEntityChoiceList) + 'Array für Indizes vorbereiten + Dim choiceLists As New List(Of String) + + For j As Integer = 0 To oChoiceLists.Count() - 1 + + ' aktuellee Liste ausleseb auslesen + oChoiceList = oChoiceLists.Item(j) + + choiceLists.Add(oChoiceList.aName) + Next + + Return choiceLists + + Catch ex As Exception + Logger.Error(ex) + Return Nothing + End Try + End Function + ''' + ''' Returns all indices for an objecttype + ''' + ''' Name of objecttype + ''' Name of containing indices as String-Array + ''' + Public Shared Function GetIndicesByObjecttype(ByVal ObjecttypeName As String) As String() + Try + Dim oObjectType As WMObject + Dim oIndexAttributes As WMObjectRelation + Dim oIndexAttribute As WMObject + Dim oIndex As WMObject + Dim oRelProperties As WMObjectRelation + + ' den Objekttyp laden + oObjectType = CurrentSession.GetWMObjectByName(WMEntityObjectType, ObjecttypeName) + + ' Beziehung zu Indizes des Objekttyp auslesen + oIndexAttributes = oObjectType.GetWMObjectRelationByName("TypeAttributes") + + ' Array für Indizes vorbereiten + Dim aIndexNames(oIndexAttributes.Count - 1) As String + + ' alle Indizes durchlaufen + For j As Integer = 0 To oIndexAttributes.Count - 1 + + ' aktuellen Index auslesen + oIndexAttribute = oIndexAttributes.Item(j) + + ' Eigenschaften des Index auslesen + oRelProperties = oIndexAttribute.GetWMObjectRelationByName("Attribute") + + ' Index aus den Eigenschaften auslesen + oIndex = oRelProperties.Item(0) + + ' Indexname speichern + aIndexNames(j) = oIndex.aName + Next + + ' Indexarray zurückgeben + Return aIndexNames + + Catch ex As Exception + Logger.Error(ex) + Return Nothing + End Try + End Function + ''' + ''' Returns all items of a choicelist + ''' + ''' name of choicelist + ''' items as String-Array + ''' + Public Function GetChoicelistItems(ByVal NameChoicelist As String) As Object + Try + 'Dim oAttribute = Me.oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname) + 'Dim vType = oAttribute.getVariableValue("vItems") + 'Return vType + Dim oChoiceList = CurrentSession.GetWMObjectByName(WMEntityChoiceList, NameChoicelist) + If Err.Number = 0 And TypeName(oChoiceList) <> "Nothing" Then + Dim Values = oChoiceList + Values = oChoiceList.GetVariableValue("vItems") + Dim anz As Integer = 0 + + For Each CLItem In Values + If oChoiceList.aName IsNot Nothing Then + anz += 1 + End If + Next + Dim strListe(anz - 1) + Dim zahl As Integer = 0 + For Each CLItem In Values + If oChoiceList.aName IsNot Nothing Then + strListe(zahl) = CLItem + zahl += 1 + End If + Next + Return strListe + Else + Logger.Warn("WMchoicelist: " & NameChoicelist & " not found!") + Return Nothing + End If + + Catch ex As Exception + Logger.Error(ex) + Return Nothing + End Try + End Function + ''' + ''' Returns all Objecttypes of current server as array of strings + ''' + ''' array(String) of all objecttypes + ''' + Public Function GetObjecttypesAsStrings() As String() + Try + Dim objektTypenStr(CurrentObjecttypes.Count) As String + For i As Integer = 0 To CurrentObjecttypes.Count + objektTypenStr(i) = CurrentObjecttypes.Item(i).aName + Next + Return objektTypenStr + Catch ex As Exception + Logger.Error(ex) + Return Nothing + End Try + End Function + ''' + ''' Returns the result of windream-search + ''' + ''' filepath of windreamSearch-file + ''' Name of the Docid Index + ''' Returns datatable + ''' + Public Shared Function GetSearchDocuments(ByVal wdfLocation As String, NameIndexDocID As String) + Dim dt As New DataTable + dt.Columns.Add("DOC_ID", GetType(Integer)) + dt.Columns.Add("PATH", GetType(String)) + Try + Dim ProfileName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1) + Dim ProfilePath = wdfLocation.Substring(0, wdfLocation.Length - ProfileName.Length) + + CurrentController = New WMOSearchController + CurrentController.CheckSearchProfile(wdfLocation.ToLower) + Dim suchTyp = CurrentController.SearchProfileTargetProgID + Dim ExSettings As Object + Dim oSearch As Object + ExSettings = CurrentController.SearchProfileExSettings + If ExSettings = 0 Then ExSettings = 7 + + Dim srchQuick As WMOSRCHLib.WMQuickSearch = CreateObject("WMOSrch.WMQuickSearch") + Dim srchIndex As WMOSRCHLib.WMIndexSearch = CreateObject("WMOSrch.WMIndexSearch") + Dim srchObjectType As WMOSRCHLib.WMObjectTypeSearch = CreateObject("WMOSrch.WMObjectTypeSearch") + Dim suchTyp1 = suchTyp.ToString.ToUpper + '' Der öffentliche Member CheckSearchProfile für den Typ IWMQuickSearch7 wurde nicht gefunden. [Microsoft.VisualBasic] => GetSearchDocuments() + Select Case suchTyp.ToString.ToUpper + Case "WMOSRCH.WMQUICKSEARCH" + srchQuick.WMSession = CreateObject("Windream.WMSession", CurrentWMServer) + + CurrentWMConnect.LoginSession(srchQuick.WMSession) + + srchQuick.ClearSearch() + srchQuick.SearchProfilePath = ProfilePath + srchQuick.LoadSearchProfile(ProfileName) + + oSearch = srchQuick.GetSearch() + + Case "WMOSRCH.WMINDEXSEARCH" + srchIndex.WMSession = CreateObject("Windream.WMSession", CurrentWMServer) + + CurrentWMConnect.LoginSession(srchIndex.WMSession) + + srchIndex.ClearSearch() + srchIndex.SearchProfilePath = ProfilePath + srchIndex.LoadSearchProfile(ProfileName) + + oSearch = srchIndex.GetSearch() + + Case "WMOSRCH.WMOBJECTTYPESEARCH" + srchObjectType.WMSession = CreateObject("Windream.WMSession", CurrentWMServer) + + CurrentWMConnect.LoginSession(srchObjectType.WMSession) + + srchObjectType.ClearSearch() + srchObjectType.SearchProfilePath = ProfilePath + srchObjectType.LoadSearchProfile(ProfileName) + + oSearch = srchObjectType.GetSearch() + + Case Else + MsgBox("KEIN GÜLTIGER WINDREAM-SUCHTYP") + Return Nothing + End Select + Dim WMObjects As Object + WMObjects = oSearch.Execute + 'If returnDT = True Then + If WMObjects.Count > 0 Then + + For Each dok As WMObject In WMObjects + Dim path As String = dok.aPath + Dim DOC_ID = dok.GetVariableValue(NameIndexDocID) + dt.Rows.Add(DOC_ID, path) + Next + dt.AcceptChanges() + End If + Return dt + Catch ex As Exception + Logger.Error(ex) + Return dt + End Try + End Function + ''' + ''' Returns a windream-type as Integer. + ''' + ''' Name of indexfield + ''' Returns integer, which describes the type + ''' + Public Shared Function GetTypeOfIndexAsInt(ByVal indexname As String) As Integer + Try + Dim oAttribute = CurrentSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname) + Dim vType = oAttribute.getVariableValue("dwAttrType") + Return vType + Catch ex As Exception + Return Nothing + End Try + End Function + ''' + ''' Returns the value(s) for an index as a datatable + ''' + ''' filepath of windream-file + ''' Name of the index + ''' Datatable + ''' + Public Shared Function GetValueforIndex(ByVal WMFile As String, ByVal NameIndex As String) As DataTable + Dim dt As New DataTable + dt.Columns.Add("RESULT", GetType(String)) + Try + If Not WMFile.StartsWith("\") And WMFile.ToUpper.StartsWith(WMDriveLetter.ToUpper) Then + WMFile = WMFile.Substring(2) + End If + Dim WMObject As WINDREAMLib.WMObject '= CreateObject("WINDREAMLib.WMObject") 'New WINDREAMLib.WMObject + Try + WMObject = CurrentSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WMFile) 'WINDREAMLib.WMEntity.WMEntityDocument + Catch ex As Exception + Logger.Error(ex) + Return dt + End Try + + Dim result = WMObject.GetVariableValue(NameIndex) + If IsNothing(result) Then + Return Nothing + Else + If result.GetType.ToString.Contains("System.Object") Then + For Each val As String In result + dt.Rows.Add(val) + Next + dt.AcceptChanges() + Else + dt.Rows.Add(result) + End If + End If + Return dt + Catch ex As Exception + Logger.Error(ex) + Return dt + End Try + End Function + ''' + ''' Returns the values for a vektorfield plus the new ones + ''' + ''' filepath of windream-file + ''' Name of the index + ''' Returns value as Datatable + ''' + Public Shared Function Return_VektorArray(ByVal oDocument As WMObject, vktIndexName As String, arrIndexwerte As Object, vType As Object) + Try + Dim missing As Boolean = False + Dim valueCount As Integer = 0 + Dim ValueArray() + 'Jeden Wert des Vektorfeldes durchlaufen + Dim DT_RESULT = GetValueforIndex(oDocument.aPath, vktIndexName) + If DT_RESULT.Rows.Count > 0 Then + 'Erst die aktuellen Werte speichern und schreiben + For Each row As DataRow In DT_RESULT.Rows + + ReDim Preserve ValueArray(valueCount) + 'Den Wert im Array speichern + ValueArray(valueCount) = Helpers.Convert_VectorType(vType, row.Item(0)) + valueCount += 1 + Next + 'Jetzt die Neuen Werte auf Duplikate überprüfen + For Each NewValue As Object In arrIndexwerte + If NewValue Is Nothing = False Then + If ValueArray.Contains(NewValue) = False Then + 'Das Array anpassen + ReDim Preserve ValueArray(valueCount) + 'Den Wert im Array speichern + ValueArray(valueCount) = Helpers.Convert_VectorType(vType, NewValue) + valueCount += 1 + Else + Logger.Info("Value '" & NewValue.ToString & "' already existing in vectorfield(1)") + + End If + End If + Next + Else + Logger.Info(" vectorfield is empty....") + + 'Den/die Neuen Wert(e) anfügen + For Each NewValue As Object In arrIndexwerte + If NewValue Is Nothing = False Then + If ValueArray Is Nothing = False Then + If ValueArray.Contains(NewValue) = False Then + 'Das Array anpassen + ReDim Preserve ValueArray(valueCount) + 'Den Wert im Array speichern + ValueArray(valueCount) = Helpers.Convert_VectorType(vType, NewValue) + valueCount += 1 + Else + Logger.Info("Value '" & NewValue.ToString & "' already existing in vectorfield(2)") + + End If + Else 'Dererste Wert, also hinzufügen + 'Das Array anpassen + ReDim Preserve ValueArray(valueCount) + 'Den Wert im Array speichern + ValueArray(valueCount) = Helpers.Convert_VectorType(vType, NewValue) + valueCount += 1 + + End If + + + End If + Next + End If + + Return ValueArray + Catch ex As Exception + Logger.Error(ex) + End Try + End Function + ''' + ''' Returns a WMObject if file exists + ''' + ''' full path to the file + ''' Returns WMObject + ''' + Public Shared Function GetWMObjectForFile(ByVal WMPath As String) As WMObject + Try + If WMPath.StartsWith("\") = False And WMPath.ToUpper.StartsWith(WMDriveLetter.ToUpper) Then + WMPath = WMPath.Substring(2) + End If + Dim oWMObject As WINDREAMLib.WMObject + Try + oWMObject = CurrentSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WMPath) + Catch ex As Exception + Logger.Warn("Could not create WMObject for file '" & WMPath & "': " & ex.Message) + Return Nothing + End Try + Return oWMObject + Catch ex As Exception + Logger.Error(ex) + Return Nothing + End Try + End Function +#End Region +#Region "+++++ Test +++++" + ''' + ''' Checks if the folder exists + ''' + ''' The path of the folder + ''' True if exists or false if not or error occured + ''' + Public Shared Function TestFolderExists(folderpath As String) + Try + If folderpath.StartsWith("\") = False And folderpath.ToUpper.StartsWith(WMDriveLetter.ToUpper) Then + folderpath = folderpath.Substring(2) + End If + Try + Dim exists = CurrentSession.WMObjectExists(WMEntityFolder, folderpath, 0, 0) + Return exists + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + Catch ex As Exception + Return False + End Try + End Function + ''' + ''' Checks wether file exists in windream + ''' + ''' full path to the file + ''' Returns true when file was deleted, false if not + ''' + Public Shared Function TestFileExists(ByVal WMPath As String) + Try + If WMPath.StartsWith("\") = False And WMPath.ToUpper.StartsWith(WMDriveLetter.ToUpper) Then + WMPath = WMPath.Substring(2) + End If + Try + Dim WMObject As WINDREAMLib.WMObject = CurrentSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WMPath) + Catch ex As Exception + Logger.Warn("Could not create WMObject for file '" & WMPath & "' - so it is not existing") + Return False + End Try + Return True + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + End Function +#End Region +#Region "+++++ Remove +++++" + ''' + ''' Deletes a file in windream + ''' + ''' full path to the file + ''' Returns true when file was deleted, false if not + ''' + Public Shared Function RemFile(ByVal WMPath As String) + Try + If WMPath.StartsWith("\") = False And WMPath.ToUpper.StartsWith(WMDriveLetter.ToUpper) Then + WMPath = WMPath.Substring(2) + End If + Dim oWMObject = GetWMObjectForFile(WMPath) + If IsNothing(oWMObject) = False Then + oWMObject.Delete() + Return True + Else + Return False + End If + + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + End Function + ''' + ''' Removes the vektorlink from windream + ''' + ''' full path to the file + ''' Indexname of Vektor-Index + ''' Value which is to be deleted + ''' Returns true when indexing was successfull, false if not + ''' + Public Shared Function REMOVE_VEKTOR_LINK(ByVal WMPath As String, vktIndexName As String, deleteValue As String) + Try + Logger.Info("Removing Value '" & deleteValue & "' of Index '" & vktIndexName & "' " & WMPath) + Dim oWMFile As WINDREAMLib.WMObject = GetWMObjectForFile(WMPath) + If IsNothing(oWMFile) Then + Logger.Warn("Exit from REMOVE_VEKTOR_LINK...") + Return False + End If + Dim containsvalue As Boolean = False + Dim ValueArray() + 'Jeden Wert des Vektorfeldes durchlaufen + Dim WMValue = oWMFile.GetVariableValue(vktIndexName) + If WMValue Is Nothing = False Then + 'Nochmals prüfen ob wirklich Array + If WMValue.GetType.ToString.Contains("System.Object") Then + ' das entsprechende Attribut aus windream auslesen + Dim oAttribute = CurrentSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, vktIndexName) + ' den Variablentyp (String, Integer, ...) auslesen + Dim vType = oAttribute.getVariableValue("dwAttrType") + Dim Anzahl As Integer = 0 + For Each WDValue As Object In WMValue + If WDValue Is Nothing = False Then + If WDValue = deleteValue Then + containsvalue = True + Logger.Info("The Index contains the value to be deleted!") + End If + If WDValue <> deleteValue Then + 'Erst die ALten Werte schreiben + ReDim Preserve ValueArray(Anzahl) + 'Den Wert im Array speichern + ValueArray(Anzahl) = Helpers.Convert_VectorType(vType, WDValue) + Anzahl += 1 + End If + End If + Next + Else + Logger.Warn("Index is not a vector") + Return False + End If + Else + Logger.Warn("oWMObject is nothing") + Return True + End If + + If containsvalue = True Then 'And Not IsNothing(ValueArray) + If NewLockWMFile(oWMFile) = False Then + Return False + End If + 'Indexiern des Vektorfeldes + oWMFile.SetVariableValue(vktIndexName, ValueArray) + ' die Indexinformationen des Dokuments speichern + oWMFile.Save() + Logger.Info("The new vectorvalues were saved!") + ' Unlock in einem unbehandelten Try-Block um Fehler abzufangen, + Try + ' die Sperrung des Dokuments aufheben + oWMFile.unlock() + + Catch ex As Exception + ' nichts tun (Datei war nicht gesperrt) + End Try + 'Zurückgeben + Return True + Else + Logger.Info("containsvalue is not true") + Return True + End If + + Catch ex As Exception + Logger.Error(ex) + Return False + End Try + End Function +#End Region + + +End Class diff --git a/Modules.Windream/packages.config b/Modules.Windream/packages.config new file mode 100644 index 00000000..a3ffb2eb --- /dev/null +++ b/Modules.Windream/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/TestGUI/App.config b/TestGUI/App.config new file mode 100644 index 00000000..5534e287 --- /dev/null +++ b/TestGUI/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TestGUI/Form1.Designer.vb b/TestGUI/Form1.Designer.vb new file mode 100644 index 00000000..a9be7fdb --- /dev/null +++ b/TestGUI/Form1.Designer.vb @@ -0,0 +1,62 @@ + _ +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.Button1 = New System.Windows.Forms.Button() + Me.Button2 = New System.Windows.Forms.Button() + Me.SuspendLayout() + ' + 'Button1 + ' + Me.Button1.Location = New System.Drawing.Point(12, 78) + Me.Button1.Name = "Button1" + Me.Button1.Size = New System.Drawing.Size(267, 23) + Me.Button1.TabIndex = 0 + Me.Button1.Text = "windream instanzieren" + Me.Button1.UseVisualStyleBackColor = True + ' + 'Button2 + ' + Me.Button2.Location = New System.Drawing.Point(12, 12) + Me.Button2.Name = "Button2" + Me.Button2.Size = New System.Drawing.Size(267, 23) + Me.Button2.TabIndex = 1 + Me.Button2.Text = "Logger initialisieren" + Me.Button2.UseVisualStyleBackColor = True + ' + 'Form1 + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(800, 450) + Me.Controls.Add(Me.Button2) + Me.Controls.Add(Me.Button1) + Me.Name = "Form1" + Me.Text = "Form1" + Me.ResumeLayout(False) + + End Sub + + Friend WithEvents Button1 As Button + Friend WithEvents Button2 As Button +End Class diff --git a/TestGUI/Form1.resx b/TestGUI/Form1.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/TestGUI/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/TestGUI/Form1.vb b/TestGUI/Form1.vb new file mode 100644 index 00000000..7ad5ed6a --- /dev/null +++ b/TestGUI/Form1.vb @@ -0,0 +1,7 @@ +Imports Modules.Windream +Public Class Form1 + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + + Dim WM As New Windream("W", True) + End Sub +End Class diff --git a/TestGUI/My Project/Application.Designer.vb b/TestGUI/My Project/Application.Designer.vb new file mode 100644 index 00000000..abde74e4 --- /dev/null +++ b/TestGUI/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.TestGUI.Form1 + End Sub + End Class +End Namespace diff --git a/TestGUI/My Project/Application.myapp b/TestGUI/My Project/Application.myapp new file mode 100644 index 00000000..1243847f --- /dev/null +++ b/TestGUI/My Project/Application.myapp @@ -0,0 +1,11 @@ + + + true + Form1 + false + 0 + true + 0 + 0 + true + diff --git a/TestGUI/My Project/AssemblyInfo.vb b/TestGUI/My Project/AssemblyInfo.vb new file mode 100644 index 00000000..1cfcf7bf --- /dev/null +++ b/TestGUI/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/TestGUI/My Project/Resources.Designer.vb b/TestGUI/My Project/Resources.Designer.vb new file mode 100644 index 00000000..6d555d65 --- /dev/null +++ b/TestGUI/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("TestGUI.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/TestGUI/My Project/Resources.resx b/TestGUI/My Project/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/TestGUI/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/TestGUI/My Project/Settings.Designer.vb b/TestGUI/My Project/Settings.Designer.vb new file mode 100644 index 00000000..ffba3fba --- /dev/null +++ b/TestGUI/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.TestGUI.My.MySettings + Get + Return Global.TestGUI.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/TestGUI/My Project/Settings.settings b/TestGUI/My Project/Settings.settings new file mode 100644 index 00000000..85b890b3 --- /dev/null +++ b/TestGUI/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/TestGUI/TestGUI.vbproj b/TestGUI/TestGUI.vbproj new file mode 100644 index 00000000..d3ffebe7 --- /dev/null +++ b/TestGUI/TestGUI.vbproj @@ -0,0 +1,125 @@ + + + + + Debug + AnyCPU + {93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0} + WinExe + TestGUI.My.MyApplication + TestGUI + TestGUI + 512 + WindowsForms + v4.6.1 + true + + + AnyCPU + true + full + true + true + bin\Debug\ + TestGUI.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + TestGUI.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + ..\Modules.Windream\bin\Debug\Modules.Windream.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 + + + + + \ No newline at end of file