commit 6b10d3e460b17b87473a4d52eb838371a73ba1eb Author: Chikyun Date: Sun Aug 4 20:13:56 2019 +0900 FileManager_Runtime_1704102200_Net4 diff --git a/CommonClassv2.dll b/CommonClassv2.dll new file mode 100644 index 0000000..e580839 Binary files /dev/null and b/CommonClassv2.dll differ diff --git a/DriveInfo.sln b/DriveInfo.sln new file mode 100644 index 0000000..f2b317b --- /dev/null +++ b/DriveInfo.sln @@ -0,0 +1,89 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.40629.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DriveInfo", "DriveInfo\DriveInfo.vbproj", "{FEDED234-344B-4151-BBC5-67F1F5467C18}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FTP_Client", "FTP_Client\FTP_Client.csproj", "{9A2A1B46-799E-4D8E-8682-1F82963836A3}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ArinLog", "[NET2]ArinLog\ArinLog.vbproj", "{E9E16A98-8F8D-4848-A27E-4571C184FB1A}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ArinSetting", "[NET2]ArinSetting\ArinSetting.vbproj", "{631388D0-FADF-4C02-9536-A33E1C40F91D}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup1", "Setup1\Setup1.vdproj", "{8B1EDAA0-C548-4811-B807-13097A8343D2}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SubProject", "SubProject", "{D68BD818-D08F-4AE5-A872-6A4CD7DEC7FB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + CD_ROM|Any CPU = CD_ROM|Any CPU + Debug|Any CPU = Debug|Any CPU + DVD-5|Any CPU = DVD-5|Any CPU + Release|Any CPU = Release|Any CPU + SingleImage|Any CPU = SingleImage|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FEDED234-344B-4151-BBC5-67F1F5467C18}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU + {FEDED234-344B-4151-BBC5-67F1F5467C18}.CD_ROM|Any CPU.Build.0 = Release|Any CPU + {FEDED234-344B-4151-BBC5-67F1F5467C18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FEDED234-344B-4151-BBC5-67F1F5467C18}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FEDED234-344B-4151-BBC5-67F1F5467C18}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU + {FEDED234-344B-4151-BBC5-67F1F5467C18}.DVD-5|Any CPU.Build.0 = Debug|Any CPU + {FEDED234-344B-4151-BBC5-67F1F5467C18}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FEDED234-344B-4151-BBC5-67F1F5467C18}.Release|Any CPU.Build.0 = Release|Any CPU + {FEDED234-344B-4151-BBC5-67F1F5467C18}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU + {FEDED234-344B-4151-BBC5-67F1F5467C18}.SingleImage|Any CPU.Build.0 = Release|Any CPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3}.CD_ROM|Any CPU.Build.0 = Release|Any CPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3}.DVD-5|Any CPU.Build.0 = Debug|Any CPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3}.Release|Any CPU.Build.0 = Release|Any CPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3}.SingleImage|Any CPU.Build.0 = Release|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.CD_ROM|Any CPU.Build.0 = Release|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.DVD-5|Any CPU.Build.0 = Debug|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Release|Any CPU.Build.0 = Release|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.SingleImage|Any CPU.Build.0 = Release|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.CD_ROM|Any CPU.Build.0 = Release|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.DVD-5|Any CPU.Build.0 = Debug|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.Release|Any CPU.Build.0 = Release|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.SingleImage|Any CPU.Build.0 = Release|Any CPU + {8B1EDAA0-C548-4811-B807-13097A8343D2}.CD_ROM|Any CPU.ActiveCfg = Release + {8B1EDAA0-C548-4811-B807-13097A8343D2}.CD_ROM|Any CPU.Build.0 = Release + {8B1EDAA0-C548-4811-B807-13097A8343D2}.Debug|Any CPU.ActiveCfg = Debug + {8B1EDAA0-C548-4811-B807-13097A8343D2}.Debug|Any CPU.Build.0 = Debug + {8B1EDAA0-C548-4811-B807-13097A8343D2}.DVD-5|Any CPU.ActiveCfg = Debug + {8B1EDAA0-C548-4811-B807-13097A8343D2}.DVD-5|Any CPU.Build.0 = Debug + {8B1EDAA0-C548-4811-B807-13097A8343D2}.Release|Any CPU.ActiveCfg = Release + {8B1EDAA0-C548-4811-B807-13097A8343D2}.Release|Any CPU.Build.0 = Release + {8B1EDAA0-C548-4811-B807-13097A8343D2}.SingleImage|Any CPU.ActiveCfg = Release + {8B1EDAA0-C548-4811-B807-13097A8343D2}.SingleImage|Any CPU.Build.0 = Release + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {9A2A1B46-799E-4D8E-8682-1F82963836A3} = {D68BD818-D08F-4AE5-A872-6A4CD7DEC7FB} + {E9E16A98-8F8D-4848-A27E-4571C184FB1A} = {D68BD818-D08F-4AE5-A872-6A4CD7DEC7FB} + {631388D0-FADF-4C02-9536-A33E1C40F91D} = {D68BD818-D08F-4AE5-A872-6A4CD7DEC7FB} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + VisualSVNWorkingCopyRoot = . + EndGlobalSection +EndGlobal diff --git a/DriveInfo.suo b/DriveInfo.suo new file mode 100644 index 0000000..a26c329 Binary files /dev/null and b/DriveInfo.suo differ diff --git a/DriveInfo/DataSet/ireaDataSet.Designer.vb b/DriveInfo/DataSet/ireaDataSet.Designer.vb new file mode 100644 index 0000000..a89e60d --- /dev/null +++ b/DriveInfo/DataSet/ireaDataSet.Designer.vb @@ -0,0 +1,1992 @@ +'------------------------------------------------------------------------------ +' +' 이 코드는 도구를 사용하여 생성되었습니다. +' 런타임 버전:4.0.30319.42000 +' +' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +' 이러한 변경 내용이 손실됩니다. +' +'------------------------------------------------------------------------------ + +Option Strict Off +Option Explicit On + + + +''' +'''Represents a strongly typed in-memory cache of data. +''' + _ +Partial Public Class ireaDataSet + Inherits Global.System.Data.DataSet + + Private tableFileList As FileListDataTable + + Private tableSrcList As SrcListDataTable + + Private tableWorkList As WorkListDataTable + + Private tablesubdir As subdirDataTable + + Private _schemaSerializationMode As Global.System.Data.SchemaSerializationMode = Global.System.Data.SchemaSerializationMode.IncludeSchema + + _ + Public Sub New() + MyBase.New + Me.BeginInit + Me.InitClass + Dim schemaChangedHandler As Global.System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged + AddHandler MyBase.Tables.CollectionChanged, schemaChangedHandler + AddHandler MyBase.Relations.CollectionChanged, schemaChangedHandler + Me.EndInit + End Sub + + _ + Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) + MyBase.New(info, context, false) + If (Me.IsBinarySerialized(info, context) = true) Then + Me.InitVars(false) + Dim schemaChangedHandler1 As Global.System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged + AddHandler Me.Tables.CollectionChanged, schemaChangedHandler1 + AddHandler Me.Relations.CollectionChanged, schemaChangedHandler1 + Return + End If + Dim strSchema As String = CType(info.GetValue("XmlSchema", GetType(String)),String) + If (Me.DetermineSchemaSerializationMode(info, context) = Global.System.Data.SchemaSerializationMode.IncludeSchema) Then + Dim ds As Global.System.Data.DataSet = New Global.System.Data.DataSet() + ds.ReadXmlSchema(New Global.System.Xml.XmlTextReader(New Global.System.IO.StringReader(strSchema))) + If (Not (ds.Tables("FileList")) Is Nothing) Then + MyBase.Tables.Add(New FileListDataTable(ds.Tables("FileList"))) + End If + If (Not (ds.Tables("SrcList")) Is Nothing) Then + MyBase.Tables.Add(New SrcListDataTable(ds.Tables("SrcList"))) + End If + If (Not (ds.Tables("WorkList")) Is Nothing) Then + MyBase.Tables.Add(New WorkListDataTable(ds.Tables("WorkList"))) + End If + If (Not (ds.Tables("subdir")) Is Nothing) Then + MyBase.Tables.Add(New subdirDataTable(ds.Tables("subdir"))) + End If + Me.DataSetName = ds.DataSetName + Me.Prefix = ds.Prefix + Me.Namespace = ds.Namespace + Me.Locale = ds.Locale + Me.CaseSensitive = ds.CaseSensitive + Me.EnforceConstraints = ds.EnforceConstraints + Me.Merge(ds, false, Global.System.Data.MissingSchemaAction.Add) + Me.InitVars + Else + Me.ReadXmlSchema(New Global.System.Xml.XmlTextReader(New Global.System.IO.StringReader(strSchema))) + End If + Me.GetSerializationData(info, context) + Dim schemaChangedHandler As Global.System.ComponentModel.CollectionChangeEventHandler = AddressOf Me.SchemaChanged + AddHandler MyBase.Tables.CollectionChanged, schemaChangedHandler + AddHandler Me.Relations.CollectionChanged, schemaChangedHandler + End Sub + + _ + Public ReadOnly Property FileList() As FileListDataTable + Get + Return Me.tableFileList + End Get + End Property + + _ + Public ReadOnly Property SrcList() As SrcListDataTable + Get + Return Me.tableSrcList + End Get + End Property + + _ + Public ReadOnly Property WorkList() As WorkListDataTable + Get + Return Me.tableWorkList + End Get + End Property + + _ + Public ReadOnly Property subdir() As subdirDataTable + Get + Return Me.tablesubdir + End Get + End Property + + _ + Public Overrides Property SchemaSerializationMode() As Global.System.Data.SchemaSerializationMode + Get + Return Me._schemaSerializationMode + End Get + Set + Me._schemaSerializationMode = value + End Set + End Property + + _ + Public Shadows ReadOnly Property Tables() As Global.System.Data.DataTableCollection + Get + Return MyBase.Tables + End Get + End Property + + _ + Public Shadows ReadOnly Property Relations() As Global.System.Data.DataRelationCollection + Get + Return MyBase.Relations + End Get + End Property + + _ + Protected Overrides Sub InitializeDerivedDataSet() + Me.BeginInit + Me.InitClass + Me.EndInit + End Sub + + _ + Public Overrides Function Clone() As Global.System.Data.DataSet + Dim cln As ireaDataSet = CType(MyBase.Clone,ireaDataSet) + cln.InitVars + cln.SchemaSerializationMode = Me.SchemaSerializationMode + Return cln + End Function + + _ + Protected Overrides Function ShouldSerializeTables() As Boolean + Return false + End Function + + _ + Protected Overrides Function ShouldSerializeRelations() As Boolean + Return false + End Function + + _ + Protected Overrides Sub ReadXmlSerializable(ByVal reader As Global.System.Xml.XmlReader) + If (Me.DetermineSchemaSerializationMode(reader) = Global.System.Data.SchemaSerializationMode.IncludeSchema) Then + Me.Reset + Dim ds As Global.System.Data.DataSet = New Global.System.Data.DataSet() + ds.ReadXml(reader) + If (Not (ds.Tables("FileList")) Is Nothing) Then + MyBase.Tables.Add(New FileListDataTable(ds.Tables("FileList"))) + End If + If (Not (ds.Tables("SrcList")) Is Nothing) Then + MyBase.Tables.Add(New SrcListDataTable(ds.Tables("SrcList"))) + End If + If (Not (ds.Tables("WorkList")) Is Nothing) Then + MyBase.Tables.Add(New WorkListDataTable(ds.Tables("WorkList"))) + End If + If (Not (ds.Tables("subdir")) Is Nothing) Then + MyBase.Tables.Add(New subdirDataTable(ds.Tables("subdir"))) + End If + Me.DataSetName = ds.DataSetName + Me.Prefix = ds.Prefix + Me.Namespace = ds.Namespace + Me.Locale = ds.Locale + Me.CaseSensitive = ds.CaseSensitive + Me.EnforceConstraints = ds.EnforceConstraints + Me.Merge(ds, false, Global.System.Data.MissingSchemaAction.Add) + Me.InitVars + Else + Me.ReadXml(reader) + Me.InitVars + End If + End Sub + + _ + Protected Overrides Function GetSchemaSerializable() As Global.System.Xml.Schema.XmlSchema + Dim stream As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Me.WriteXmlSchema(New Global.System.Xml.XmlTextWriter(stream, Nothing)) + stream.Position = 0 + Return Global.System.Xml.Schema.XmlSchema.Read(New Global.System.Xml.XmlTextReader(stream), Nothing) + End Function + + _ + Friend Overloads Sub InitVars() + Me.InitVars(true) + End Sub + + _ + Friend Overloads Sub InitVars(ByVal initTable As Boolean) + Me.tableFileList = CType(MyBase.Tables("FileList"),FileListDataTable) + If (initTable = true) Then + If (Not (Me.tableFileList) Is Nothing) Then + Me.tableFileList.InitVars + End If + End If + Me.tableSrcList = CType(MyBase.Tables("SrcList"),SrcListDataTable) + If (initTable = true) Then + If (Not (Me.tableSrcList) Is Nothing) Then + Me.tableSrcList.InitVars + End If + End If + Me.tableWorkList = CType(MyBase.Tables("WorkList"),WorkListDataTable) + If (initTable = true) Then + If (Not (Me.tableWorkList) Is Nothing) Then + Me.tableWorkList.InitVars + End If + End If + Me.tablesubdir = CType(MyBase.Tables("subdir"),subdirDataTable) + If (initTable = true) Then + If (Not (Me.tablesubdir) Is Nothing) Then + Me.tablesubdir.InitVars + End If + End If + End Sub + + _ + Private Sub InitClass() + Me.DataSetName = "ireaDataSet" + Me.Prefix = "" + Me.Namespace = "http://tempuri.org/ireaDataSet.xsd" + Me.EnforceConstraints = true + Me.SchemaSerializationMode = Global.System.Data.SchemaSerializationMode.IncludeSchema + Me.tableFileList = New FileListDataTable() + MyBase.Tables.Add(Me.tableFileList) + Me.tableSrcList = New SrcListDataTable() + MyBase.Tables.Add(Me.tableSrcList) + Me.tableWorkList = New WorkListDataTable() + MyBase.Tables.Add(Me.tableWorkList) + Me.tablesubdir = New subdirDataTable() + MyBase.Tables.Add(Me.tablesubdir) + End Sub + + _ + Private Function ShouldSerializeFileList() As Boolean + Return false + End Function + + _ + Private Function ShouldSerializeSrcList() As Boolean + Return false + End Function + + _ + Private Function ShouldSerializeWorkList() As Boolean + Return false + End Function + + _ + Private Function ShouldSerializesubdir() As Boolean + Return false + End Function + + _ + Private Sub SchemaChanged(ByVal sender As Object, ByVal e As Global.System.ComponentModel.CollectionChangeEventArgs) + If (e.Action = Global.System.ComponentModel.CollectionChangeAction.Remove) Then + Me.InitVars + End If + End Sub + + _ + Public Shared Function GetTypedDataSetSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType + Dim ds As ireaDataSet = New ireaDataSet() + Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() + Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() + Dim any As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any.Namespace = ds.Namespace + sequence.Items.Add(any) + type.Particle = sequence + Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable + If xs.Contains(dsSchema.TargetNamespace) Then + Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Try + Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing + dsSchema.Write(s1) + Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator + Do While schemas.MoveNext + schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) + s2.SetLength(0) + schema.Write(s2) + If (s1.Length = s2.Length) Then + s1.Position = 0 + s2.Position = 0 + + Do While ((s1.Position <> s1.Length) _ + AndAlso (s1.ReadByte = s2.ReadByte)) + + + Loop + If (s1.Position = s1.Length) Then + Return type + End If + End If + + Loop + Finally + If (Not (s1) Is Nothing) Then + s1.Close + End If + If (Not (s2) Is Nothing) Then + s2.Close + End If + End Try + End If + xs.Add(dsSchema) + Return type + End Function + + _ + Public Delegate Sub FileListRowChangeEventHandler(ByVal sender As Object, ByVal e As FileListRowChangeEvent) + + _ + Public Delegate Sub SrcListRowChangeEventHandler(ByVal sender As Object, ByVal e As SrcListRowChangeEvent) + + _ + Public Delegate Sub WorkListRowChangeEventHandler(ByVal sender As Object, ByVal e As WorkListRowChangeEvent) + + _ + Public Delegate Sub subdirRowChangeEventHandler(ByVal sender As Object, ByVal e As subdirRowChangeEvent) + + ''' + '''Represents the strongly named DataTable class. + ''' + _ + Partial Public Class FileListDataTable + Inherits Global.System.Data.TypedTableBase(Of FileListRow) + + Private column경로 As Global.System.Data.DataColumn + + Private column파일명 As Global.System.Data.DataColumn + + _ + Public Sub New() + MyBase.New + Me.TableName = "FileList" + Me.BeginInit + Me.InitClass + Me.EndInit + End Sub + + _ + Friend Sub New(ByVal table As Global.System.Data.DataTable) + MyBase.New + Me.TableName = table.TableName + If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then + Me.CaseSensitive = table.CaseSensitive + End If + If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then + Me.Locale = table.Locale + End If + If (table.Namespace <> table.DataSet.Namespace) Then + Me.Namespace = table.Namespace + End If + Me.Prefix = table.Prefix + Me.MinimumCapacity = table.MinimumCapacity + End Sub + + _ + Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) + MyBase.New(info, context) + Me.InitVars + End Sub + + _ + Public ReadOnly Property 경로Column() As Global.System.Data.DataColumn + Get + Return Me.column경로 + End Get + End Property + + _ + Public ReadOnly Property 파일명Column() As Global.System.Data.DataColumn + Get + Return Me.column파일명 + End Get + End Property + + _ + Public ReadOnly Property Count() As Integer + Get + Return Me.Rows.Count + End Get + End Property + + _ + Public Default ReadOnly Property Item(ByVal index As Integer) As FileListRow + Get + Return CType(Me.Rows(index),FileListRow) + End Get + End Property + + _ + Public Event FileListRowChanging As FileListRowChangeEventHandler + + _ + Public Event FileListRowChanged As FileListRowChangeEventHandler + + _ + Public Event FileListRowDeleting As FileListRowChangeEventHandler + + _ + Public Event FileListRowDeleted As FileListRowChangeEventHandler + + _ + Public Overloads Sub AddFileListRow(ByVal row As FileListRow) + Me.Rows.Add(row) + End Sub + + _ + Public Overloads Function AddFileListRow(ByVal 경로 As String, ByVal 파일명 As String) As FileListRow + Dim rowFileListRow As FileListRow = CType(Me.NewRow,FileListRow) + Dim columnValuesArray() As Object = New Object() {경로, 파일명} + rowFileListRow.ItemArray = columnValuesArray + Me.Rows.Add(rowFileListRow) + Return rowFileListRow + End Function + + _ + Public Overrides Function Clone() As Global.System.Data.DataTable + Dim cln As FileListDataTable = CType(MyBase.Clone,FileListDataTable) + cln.InitVars + Return cln + End Function + + _ + Protected Overrides Function CreateInstance() As Global.System.Data.DataTable + Return New FileListDataTable() + End Function + + _ + Friend Sub InitVars() + Me.column경로 = MyBase.Columns("경로") + Me.column파일명 = MyBase.Columns("파일명") + End Sub + + _ + Private Sub InitClass() + Me.column경로 = New Global.System.Data.DataColumn("경로", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column경로) + Me.column파일명 = New Global.System.Data.DataColumn("파일명", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column파일명) + End Sub + + _ + Public Function NewFileListRow() As FileListRow + Return CType(Me.NewRow,FileListRow) + End Function + + _ + Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow + Return New FileListRow(builder) + End Function + + _ + Protected Overrides Function GetRowType() As Global.System.Type + Return GetType(FileListRow) + End Function + + _ + Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowChanged(e) + If (Not (Me.FileListRowChangedEvent) Is Nothing) Then + RaiseEvent FileListRowChanged(Me, New FileListRowChangeEvent(CType(e.Row,FileListRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowChanging(e) + If (Not (Me.FileListRowChangingEvent) Is Nothing) Then + RaiseEvent FileListRowChanging(Me, New FileListRowChangeEvent(CType(e.Row,FileListRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowDeleted(e) + If (Not (Me.FileListRowDeletedEvent) Is Nothing) Then + RaiseEvent FileListRowDeleted(Me, New FileListRowChangeEvent(CType(e.Row,FileListRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowDeleting(e) + If (Not (Me.FileListRowDeletingEvent) Is Nothing) Then + RaiseEvent FileListRowDeleting(Me, New FileListRowChangeEvent(CType(e.Row,FileListRow), e.Action)) + End If + End Sub + + _ + Public Sub RemoveFileListRow(ByVal row As FileListRow) + Me.Rows.Remove(row) + End Sub + + _ + Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType + Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() + Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() + Dim ds As ireaDataSet = New ireaDataSet() + Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any1.Namespace = "http://www.w3.org/2001/XMLSchema" + any1.MinOccurs = New Decimal(0) + any1.MaxOccurs = Decimal.MaxValue + any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax + sequence.Items.Add(any1) + Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" + any2.MinOccurs = New Decimal(1) + any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax + sequence.Items.Add(any2) + Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() + attribute1.Name = "namespace" + attribute1.FixedValue = ds.Namespace + type.Attributes.Add(attribute1) + Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() + attribute2.Name = "tableTypeName" + attribute2.FixedValue = "FileListDataTable" + type.Attributes.Add(attribute2) + type.Particle = sequence + Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable + If xs.Contains(dsSchema.TargetNamespace) Then + Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Try + Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing + dsSchema.Write(s1) + Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator + Do While schemas.MoveNext + schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) + s2.SetLength(0) + schema.Write(s2) + If (s1.Length = s2.Length) Then + s1.Position = 0 + s2.Position = 0 + + Do While ((s1.Position <> s1.Length) _ + AndAlso (s1.ReadByte = s2.ReadByte)) + + + Loop + If (s1.Position = s1.Length) Then + Return type + End If + End If + + Loop + Finally + If (Not (s1) Is Nothing) Then + s1.Close + End If + If (Not (s2) Is Nothing) Then + s2.Close + End If + End Try + End If + xs.Add(dsSchema) + Return type + End Function + End Class + + ''' + '''Represents the strongly named DataTable class. + ''' + _ + Partial Public Class SrcListDataTable + Inherits Global.System.Data.TypedTableBase(Of SrcListRow) + + Private column목록명 As Global.System.Data.DataColumn + + _ + Public Sub New() + MyBase.New + Me.TableName = "SrcList" + Me.BeginInit + Me.InitClass + Me.EndInit + End Sub + + _ + Friend Sub New(ByVal table As Global.System.Data.DataTable) + MyBase.New + Me.TableName = table.TableName + If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then + Me.CaseSensitive = table.CaseSensitive + End If + If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then + Me.Locale = table.Locale + End If + If (table.Namespace <> table.DataSet.Namespace) Then + Me.Namespace = table.Namespace + End If + Me.Prefix = table.Prefix + Me.MinimumCapacity = table.MinimumCapacity + End Sub + + _ + Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) + MyBase.New(info, context) + Me.InitVars + End Sub + + _ + Public ReadOnly Property 목록명Column() As Global.System.Data.DataColumn + Get + Return Me.column목록명 + End Get + End Property + + _ + Public ReadOnly Property Count() As Integer + Get + Return Me.Rows.Count + End Get + End Property + + _ + Public Default ReadOnly Property Item(ByVal index As Integer) As SrcListRow + Get + Return CType(Me.Rows(index),SrcListRow) + End Get + End Property + + _ + Public Event SrcListRowChanging As SrcListRowChangeEventHandler + + _ + Public Event SrcListRowChanged As SrcListRowChangeEventHandler + + _ + Public Event SrcListRowDeleting As SrcListRowChangeEventHandler + + _ + Public Event SrcListRowDeleted As SrcListRowChangeEventHandler + + _ + Public Overloads Sub AddSrcListRow(ByVal row As SrcListRow) + Me.Rows.Add(row) + End Sub + + _ + Public Overloads Function AddSrcListRow(ByVal 목록명 As String) As SrcListRow + Dim rowSrcListRow As SrcListRow = CType(Me.NewRow,SrcListRow) + Dim columnValuesArray() As Object = New Object() {목록명} + rowSrcListRow.ItemArray = columnValuesArray + Me.Rows.Add(rowSrcListRow) + Return rowSrcListRow + End Function + + _ + Public Overrides Function Clone() As Global.System.Data.DataTable + Dim cln As SrcListDataTable = CType(MyBase.Clone,SrcListDataTable) + cln.InitVars + Return cln + End Function + + _ + Protected Overrides Function CreateInstance() As Global.System.Data.DataTable + Return New SrcListDataTable() + End Function + + _ + Friend Sub InitVars() + Me.column목록명 = MyBase.Columns("목록명") + End Sub + + _ + Private Sub InitClass() + Me.column목록명 = New Global.System.Data.DataColumn("목록명", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column목록명) + End Sub + + _ + Public Function NewSrcListRow() As SrcListRow + Return CType(Me.NewRow,SrcListRow) + End Function + + _ + Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow + Return New SrcListRow(builder) + End Function + + _ + Protected Overrides Function GetRowType() As Global.System.Type + Return GetType(SrcListRow) + End Function + + _ + Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowChanged(e) + If (Not (Me.SrcListRowChangedEvent) Is Nothing) Then + RaiseEvent SrcListRowChanged(Me, New SrcListRowChangeEvent(CType(e.Row,SrcListRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowChanging(e) + If (Not (Me.SrcListRowChangingEvent) Is Nothing) Then + RaiseEvent SrcListRowChanging(Me, New SrcListRowChangeEvent(CType(e.Row,SrcListRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowDeleted(e) + If (Not (Me.SrcListRowDeletedEvent) Is Nothing) Then + RaiseEvent SrcListRowDeleted(Me, New SrcListRowChangeEvent(CType(e.Row,SrcListRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowDeleting(e) + If (Not (Me.SrcListRowDeletingEvent) Is Nothing) Then + RaiseEvent SrcListRowDeleting(Me, New SrcListRowChangeEvent(CType(e.Row,SrcListRow), e.Action)) + End If + End Sub + + _ + Public Sub RemoveSrcListRow(ByVal row As SrcListRow) + Me.Rows.Remove(row) + End Sub + + _ + Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType + Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() + Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() + Dim ds As ireaDataSet = New ireaDataSet() + Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any1.Namespace = "http://www.w3.org/2001/XMLSchema" + any1.MinOccurs = New Decimal(0) + any1.MaxOccurs = Decimal.MaxValue + any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax + sequence.Items.Add(any1) + Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" + any2.MinOccurs = New Decimal(1) + any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax + sequence.Items.Add(any2) + Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() + attribute1.Name = "namespace" + attribute1.FixedValue = ds.Namespace + type.Attributes.Add(attribute1) + Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() + attribute2.Name = "tableTypeName" + attribute2.FixedValue = "SrcListDataTable" + type.Attributes.Add(attribute2) + type.Particle = sequence + Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable + If xs.Contains(dsSchema.TargetNamespace) Then + Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Try + Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing + dsSchema.Write(s1) + Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator + Do While schemas.MoveNext + schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) + s2.SetLength(0) + schema.Write(s2) + If (s1.Length = s2.Length) Then + s1.Position = 0 + s2.Position = 0 + + Do While ((s1.Position <> s1.Length) _ + AndAlso (s1.ReadByte = s2.ReadByte)) + + + Loop + If (s1.Position = s1.Length) Then + Return type + End If + End If + + Loop + Finally + If (Not (s1) Is Nothing) Then + s1.Close + End If + If (Not (s2) Is Nothing) Then + s2.Close + End If + End Try + End If + xs.Add(dsSchema) + Return type + End Function + End Class + + ''' + '''Represents the strongly named DataTable class. + ''' + _ + Partial Public Class WorkListDataTable + Inherits Global.System.Data.TypedTableBase(Of WorkListRow) + + Private column원본경로 As Global.System.Data.DataColumn + + Private column원본파일명 As Global.System.Data.DataColumn + + Private column대상경로 As Global.System.Data.DataColumn + + Private column대상파일명 As Global.System.Data.DataColumn + + Private column구분 As Global.System.Data.DataColumn + + Private column성공 As Global.System.Data.DataColumn + + Private column오류 As Global.System.Data.DataColumn + + Private columnseq As Global.System.Data.DataColumn + + _ + Public Sub New() + MyBase.New + Me.TableName = "WorkList" + Me.BeginInit + Me.InitClass + Me.EndInit + End Sub + + _ + Friend Sub New(ByVal table As Global.System.Data.DataTable) + MyBase.New + Me.TableName = table.TableName + If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then + Me.CaseSensitive = table.CaseSensitive + End If + If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then + Me.Locale = table.Locale + End If + If (table.Namespace <> table.DataSet.Namespace) Then + Me.Namespace = table.Namespace + End If + Me.Prefix = table.Prefix + Me.MinimumCapacity = table.MinimumCapacity + End Sub + + _ + Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) + MyBase.New(info, context) + Me.InitVars + End Sub + + _ + Public ReadOnly Property 원본경로Column() As Global.System.Data.DataColumn + Get + Return Me.column원본경로 + End Get + End Property + + _ + Public ReadOnly Property 원본파일명Column() As Global.System.Data.DataColumn + Get + Return Me.column원본파일명 + End Get + End Property + + _ + Public ReadOnly Property 대상경로Column() As Global.System.Data.DataColumn + Get + Return Me.column대상경로 + End Get + End Property + + _ + Public ReadOnly Property 대상파일명Column() As Global.System.Data.DataColumn + Get + Return Me.column대상파일명 + End Get + End Property + + _ + Public ReadOnly Property 구분Column() As Global.System.Data.DataColumn + Get + Return Me.column구분 + End Get + End Property + + _ + Public ReadOnly Property 성공Column() As Global.System.Data.DataColumn + Get + Return Me.column성공 + End Get + End Property + + _ + Public ReadOnly Property 오류Column() As Global.System.Data.DataColumn + Get + Return Me.column오류 + End Get + End Property + + _ + Public ReadOnly Property seqColumn() As Global.System.Data.DataColumn + Get + Return Me.columnseq + End Get + End Property + + _ + Public ReadOnly Property Count() As Integer + Get + Return Me.Rows.Count + End Get + End Property + + _ + Public Default ReadOnly Property Item(ByVal index As Integer) As WorkListRow + Get + Return CType(Me.Rows(index),WorkListRow) + End Get + End Property + + _ + Public Event WorkListRowChanging As WorkListRowChangeEventHandler + + _ + Public Event WorkListRowChanged As WorkListRowChangeEventHandler + + _ + Public Event WorkListRowDeleting As WorkListRowChangeEventHandler + + _ + Public Event WorkListRowDeleted As WorkListRowChangeEventHandler + + _ + Public Overloads Sub AddWorkListRow(ByVal row As WorkListRow) + Me.Rows.Add(row) + End Sub + + _ + Public Overloads Function AddWorkListRow(ByVal 원본경로 As String, ByVal 원본파일명 As String, ByVal 대상경로 As String, ByVal 대상파일명 As String, ByVal 구분 As String, ByVal 성공 As String, ByVal 오류 As String) As WorkListRow + Dim rowWorkListRow As WorkListRow = CType(Me.NewRow,WorkListRow) + Dim columnValuesArray() As Object = New Object() {원본경로, 원본파일명, 대상경로, 대상파일명, 구분, 성공, 오류, Nothing} + rowWorkListRow.ItemArray = columnValuesArray + Me.Rows.Add(rowWorkListRow) + Return rowWorkListRow + End Function + + _ + Public Function FindBy대상경로대상파일명오류(ByVal 대상경로 As String, ByVal 대상파일명 As String, ByVal 오류 As String) As WorkListRow + Return CType(Me.Rows.Find(New Object() {대상경로, 대상파일명, 오류}),WorkListRow) + End Function + + _ + Public Overrides Function Clone() As Global.System.Data.DataTable + Dim cln As WorkListDataTable = CType(MyBase.Clone,WorkListDataTable) + cln.InitVars + Return cln + End Function + + _ + Protected Overrides Function CreateInstance() As Global.System.Data.DataTable + Return New WorkListDataTable() + End Function + + _ + Friend Sub InitVars() + Me.column원본경로 = MyBase.Columns("원본경로") + Me.column원본파일명 = MyBase.Columns("원본파일명") + Me.column대상경로 = MyBase.Columns("대상경로") + Me.column대상파일명 = MyBase.Columns("대상파일명") + Me.column구분 = MyBase.Columns("구분") + Me.column성공 = MyBase.Columns("성공") + Me.column오류 = MyBase.Columns("오류") + Me.columnseq = MyBase.Columns("seq") + End Sub + + _ + Private Sub InitClass() + Me.column원본경로 = New Global.System.Data.DataColumn("원본경로", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column원본경로) + Me.column원본파일명 = New Global.System.Data.DataColumn("원본파일명", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column원본파일명) + Me.column대상경로 = New Global.System.Data.DataColumn("대상경로", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column대상경로) + Me.column대상파일명 = New Global.System.Data.DataColumn("대상파일명", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column대상파일명) + Me.column구분 = New Global.System.Data.DataColumn("구분", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column구분) + Me.column성공 = New Global.System.Data.DataColumn("성공", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column성공) + Me.column오류 = New Global.System.Data.DataColumn("오류", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column오류) + Me.columnseq = New Global.System.Data.DataColumn("seq", GetType(Integer), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.columnseq) + Me.Constraints.Add(New Global.System.Data.UniqueConstraint("Constraint1", New Global.System.Data.DataColumn() {Me.column대상경로, Me.column대상파일명, Me.column오류}, true)) + Me.column원본경로.DefaultValue = CType("",String) + Me.column원본파일명.DefaultValue = CType("",String) + Me.column대상경로.AllowDBNull = false + Me.column대상경로.DefaultValue = CType("",String) + Me.column대상파일명.AllowDBNull = false + Me.column대상파일명.DefaultValue = CType("",String) + Me.column구분.DefaultValue = CType("",String) + Me.column성공.DefaultValue = CType("",String) + Me.column오류.AllowDBNull = false + Me.column오류.DefaultValue = CType("",String) + Me.columnseq.AutoIncrement = true + Me.columnseq.AutoIncrementSeed = 1 + End Sub + + _ + Public Function NewWorkListRow() As WorkListRow + Return CType(Me.NewRow,WorkListRow) + End Function + + _ + Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow + Return New WorkListRow(builder) + End Function + + _ + Protected Overrides Function GetRowType() As Global.System.Type + Return GetType(WorkListRow) + End Function + + _ + Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowChanged(e) + If (Not (Me.WorkListRowChangedEvent) Is Nothing) Then + RaiseEvent WorkListRowChanged(Me, New WorkListRowChangeEvent(CType(e.Row,WorkListRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowChanging(e) + If (Not (Me.WorkListRowChangingEvent) Is Nothing) Then + RaiseEvent WorkListRowChanging(Me, New WorkListRowChangeEvent(CType(e.Row,WorkListRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowDeleted(e) + If (Not (Me.WorkListRowDeletedEvent) Is Nothing) Then + RaiseEvent WorkListRowDeleted(Me, New WorkListRowChangeEvent(CType(e.Row,WorkListRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowDeleting(e) + If (Not (Me.WorkListRowDeletingEvent) Is Nothing) Then + RaiseEvent WorkListRowDeleting(Me, New WorkListRowChangeEvent(CType(e.Row,WorkListRow), e.Action)) + End If + End Sub + + _ + Public Sub RemoveWorkListRow(ByVal row As WorkListRow) + Me.Rows.Remove(row) + End Sub + + _ + Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType + Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() + Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() + Dim ds As ireaDataSet = New ireaDataSet() + Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any1.Namespace = "http://www.w3.org/2001/XMLSchema" + any1.MinOccurs = New Decimal(0) + any1.MaxOccurs = Decimal.MaxValue + any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax + sequence.Items.Add(any1) + Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" + any2.MinOccurs = New Decimal(1) + any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax + sequence.Items.Add(any2) + Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() + attribute1.Name = "namespace" + attribute1.FixedValue = ds.Namespace + type.Attributes.Add(attribute1) + Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() + attribute2.Name = "tableTypeName" + attribute2.FixedValue = "WorkListDataTable" + type.Attributes.Add(attribute2) + type.Particle = sequence + Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable + If xs.Contains(dsSchema.TargetNamespace) Then + Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Try + Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing + dsSchema.Write(s1) + Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator + Do While schemas.MoveNext + schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) + s2.SetLength(0) + schema.Write(s2) + If (s1.Length = s2.Length) Then + s1.Position = 0 + s2.Position = 0 + + Do While ((s1.Position <> s1.Length) _ + AndAlso (s1.ReadByte = s2.ReadByte)) + + + Loop + If (s1.Position = s1.Length) Then + Return type + End If + End If + + Loop + Finally + If (Not (s1) Is Nothing) Then + s1.Close + End If + If (Not (s2) Is Nothing) Then + s2.Close + End If + End Try + End If + xs.Add(dsSchema) + Return type + End Function + End Class + + ''' + '''Represents the strongly named DataTable class. + ''' + _ + Partial Public Class subdirDataTable + Inherits Global.System.Data.TypedTableBase(Of subdirRow) + + Private column경로명 As Global.System.Data.DataColumn + + _ + Public Sub New() + MyBase.New + Me.TableName = "subdir" + Me.BeginInit + Me.InitClass + Me.EndInit + End Sub + + _ + Friend Sub New(ByVal table As Global.System.Data.DataTable) + MyBase.New + Me.TableName = table.TableName + If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then + Me.CaseSensitive = table.CaseSensitive + End If + If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then + Me.Locale = table.Locale + End If + If (table.Namespace <> table.DataSet.Namespace) Then + Me.Namespace = table.Namespace + End If + Me.Prefix = table.Prefix + Me.MinimumCapacity = table.MinimumCapacity + End Sub + + _ + Protected Sub New(ByVal info As Global.System.Runtime.Serialization.SerializationInfo, ByVal context As Global.System.Runtime.Serialization.StreamingContext) + MyBase.New(info, context) + Me.InitVars + End Sub + + _ + Public ReadOnly Property 경로명Column() As Global.System.Data.DataColumn + Get + Return Me.column경로명 + End Get + End Property + + _ + Public ReadOnly Property Count() As Integer + Get + Return Me.Rows.Count + End Get + End Property + + _ + Public Default ReadOnly Property Item(ByVal index As Integer) As subdirRow + Get + Return CType(Me.Rows(index),subdirRow) + End Get + End Property + + _ + Public Event subdirRowChanging As subdirRowChangeEventHandler + + _ + Public Event subdirRowChanged As subdirRowChangeEventHandler + + _ + Public Event subdirRowDeleting As subdirRowChangeEventHandler + + _ + Public Event subdirRowDeleted As subdirRowChangeEventHandler + + _ + Public Overloads Sub AddsubdirRow(ByVal row As subdirRow) + Me.Rows.Add(row) + End Sub + + _ + Public Overloads Function AddsubdirRow(ByVal 경로명 As String) As subdirRow + Dim rowsubdirRow As subdirRow = CType(Me.NewRow,subdirRow) + Dim columnValuesArray() As Object = New Object() {경로명} + rowsubdirRow.ItemArray = columnValuesArray + Me.Rows.Add(rowsubdirRow) + Return rowsubdirRow + End Function + + _ + Public Function FindBy경로명(ByVal 경로명 As String) As subdirRow + Return CType(Me.Rows.Find(New Object() {경로명}),subdirRow) + End Function + + _ + Public Overrides Function Clone() As Global.System.Data.DataTable + Dim cln As subdirDataTable = CType(MyBase.Clone,subdirDataTable) + cln.InitVars + Return cln + End Function + + _ + Protected Overrides Function CreateInstance() As Global.System.Data.DataTable + Return New subdirDataTable() + End Function + + _ + Friend Sub InitVars() + Me.column경로명 = MyBase.Columns("경로명") + End Sub + + _ + Private Sub InitClass() + Me.column경로명 = New Global.System.Data.DataColumn("경로명", GetType(String), Nothing, Global.System.Data.MappingType.Element) + MyBase.Columns.Add(Me.column경로명) + Me.Constraints.Add(New Global.System.Data.UniqueConstraint("Constraint1", New Global.System.Data.DataColumn() {Me.column경로명}, true)) + Me.column경로명.AllowDBNull = false + Me.column경로명.Unique = true + Me.column경로명.DefaultValue = CType("",String) + Me.column경로명.MaxLength = 100 + End Sub + + _ + Public Function NewsubdirRow() As subdirRow + Return CType(Me.NewRow,subdirRow) + End Function + + _ + Protected Overrides Function NewRowFromBuilder(ByVal builder As Global.System.Data.DataRowBuilder) As Global.System.Data.DataRow + Return New subdirRow(builder) + End Function + + _ + Protected Overrides Function GetRowType() As Global.System.Type + Return GetType(subdirRow) + End Function + + _ + Protected Overrides Sub OnRowChanged(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowChanged(e) + If (Not (Me.subdirRowChangedEvent) Is Nothing) Then + RaiseEvent subdirRowChanged(Me, New subdirRowChangeEvent(CType(e.Row,subdirRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowChanging(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowChanging(e) + If (Not (Me.subdirRowChangingEvent) Is Nothing) Then + RaiseEvent subdirRowChanging(Me, New subdirRowChangeEvent(CType(e.Row,subdirRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowDeleted(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowDeleted(e) + If (Not (Me.subdirRowDeletedEvent) Is Nothing) Then + RaiseEvent subdirRowDeleted(Me, New subdirRowChangeEvent(CType(e.Row,subdirRow), e.Action)) + End If + End Sub + + _ + Protected Overrides Sub OnRowDeleting(ByVal e As Global.System.Data.DataRowChangeEventArgs) + MyBase.OnRowDeleting(e) + If (Not (Me.subdirRowDeletingEvent) Is Nothing) Then + RaiseEvent subdirRowDeleting(Me, New subdirRowChangeEvent(CType(e.Row,subdirRow), e.Action)) + End If + End Sub + + _ + Public Sub RemovesubdirRow(ByVal row As subdirRow) + Me.Rows.Remove(row) + End Sub + + _ + Public Shared Function GetTypedTableSchema(ByVal xs As Global.System.Xml.Schema.XmlSchemaSet) As Global.System.Xml.Schema.XmlSchemaComplexType + Dim type As Global.System.Xml.Schema.XmlSchemaComplexType = New Global.System.Xml.Schema.XmlSchemaComplexType() + Dim sequence As Global.System.Xml.Schema.XmlSchemaSequence = New Global.System.Xml.Schema.XmlSchemaSequence() + Dim ds As ireaDataSet = New ireaDataSet() + Dim any1 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any1.Namespace = "http://www.w3.org/2001/XMLSchema" + any1.MinOccurs = New Decimal(0) + any1.MaxOccurs = Decimal.MaxValue + any1.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax + sequence.Items.Add(any1) + Dim any2 As Global.System.Xml.Schema.XmlSchemaAny = New Global.System.Xml.Schema.XmlSchemaAny() + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1" + any2.MinOccurs = New Decimal(1) + any2.ProcessContents = Global.System.Xml.Schema.XmlSchemaContentProcessing.Lax + sequence.Items.Add(any2) + Dim attribute1 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() + attribute1.Name = "namespace" + attribute1.FixedValue = ds.Namespace + type.Attributes.Add(attribute1) + Dim attribute2 As Global.System.Xml.Schema.XmlSchemaAttribute = New Global.System.Xml.Schema.XmlSchemaAttribute() + attribute2.Name = "tableTypeName" + attribute2.FixedValue = "subdirDataTable" + type.Attributes.Add(attribute2) + type.Particle = sequence + Dim dsSchema As Global.System.Xml.Schema.XmlSchema = ds.GetSchemaSerializable + If xs.Contains(dsSchema.TargetNamespace) Then + Dim s1 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Dim s2 As Global.System.IO.MemoryStream = New Global.System.IO.MemoryStream() + Try + Dim schema As Global.System.Xml.Schema.XmlSchema = Nothing + dsSchema.Write(s1) + Dim schemas As Global.System.Collections.IEnumerator = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator + Do While schemas.MoveNext + schema = CType(schemas.Current,Global.System.Xml.Schema.XmlSchema) + s2.SetLength(0) + schema.Write(s2) + If (s1.Length = s2.Length) Then + s1.Position = 0 + s2.Position = 0 + + Do While ((s1.Position <> s1.Length) _ + AndAlso (s1.ReadByte = s2.ReadByte)) + + + Loop + If (s1.Position = s1.Length) Then + Return type + End If + End If + + Loop + Finally + If (Not (s1) Is Nothing) Then + s1.Close + End If + If (Not (s2) Is Nothing) Then + s2.Close + End If + End Try + End If + xs.Add(dsSchema) + Return type + End Function + End Class + + ''' + '''Represents strongly named DataRow class. + ''' + Partial Public Class FileListRow + Inherits Global.System.Data.DataRow + + Private tableFileList As FileListDataTable + + _ + Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) + MyBase.New(rb) + Me.tableFileList = CType(Me.Table,FileListDataTable) + End Sub + + _ + Public Property 경로() As String + Get + If Me.Is경로Null Then + Return String.Empty + Else + Return CType(Me(Me.tableFileList.경로Column),String) + End If + End Get + Set + Me(Me.tableFileList.경로Column) = value + End Set + End Property + + _ + Public Property 파일명() As String + Get + If Me.Is파일명Null Then + Return String.Empty + Else + Return CType(Me(Me.tableFileList.파일명Column),String) + End If + End Get + Set + Me(Me.tableFileList.파일명Column) = value + End Set + End Property + + _ + Public Function Is경로Null() As Boolean + Return Me.IsNull(Me.tableFileList.경로Column) + End Function + + _ + Public Sub Set경로Null() + Me(Me.tableFileList.경로Column) = Global.System.Convert.DBNull + End Sub + + _ + Public Function Is파일명Null() As Boolean + Return Me.IsNull(Me.tableFileList.파일명Column) + End Function + + _ + Public Sub Set파일명Null() + Me(Me.tableFileList.파일명Column) = Global.System.Convert.DBNull + End Sub + End Class + + ''' + '''Represents strongly named DataRow class. + ''' + Partial Public Class SrcListRow + Inherits Global.System.Data.DataRow + + Private tableSrcList As SrcListDataTable + + _ + Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) + MyBase.New(rb) + Me.tableSrcList = CType(Me.Table,SrcListDataTable) + End Sub + + _ + Public Property 목록명() As String + Get + If Me.Is목록명Null Then + Return String.Empty + Else + Return CType(Me(Me.tableSrcList.목록명Column),String) + End If + End Get + Set + Me(Me.tableSrcList.목록명Column) = value + End Set + End Property + + _ + Public Function Is목록명Null() As Boolean + Return Me.IsNull(Me.tableSrcList.목록명Column) + End Function + + _ + Public Sub Set목록명Null() + Me(Me.tableSrcList.목록명Column) = Global.System.Convert.DBNull + End Sub + End Class + + ''' + '''Represents strongly named DataRow class. + ''' + Partial Public Class WorkListRow + Inherits Global.System.Data.DataRow + + Private tableWorkList As WorkListDataTable + + _ + Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) + MyBase.New(rb) + Me.tableWorkList = CType(Me.Table,WorkListDataTable) + End Sub + + _ + Public Property 원본경로() As String + Get + If Me.Is원본경로Null Then + Return String.Empty + Else + Return CType(Me(Me.tableWorkList.원본경로Column),String) + End If + End Get + Set + Me(Me.tableWorkList.원본경로Column) = value + End Set + End Property + + _ + Public Property 원본파일명() As String + Get + If Me.Is원본파일명Null Then + Return String.Empty + Else + Return CType(Me(Me.tableWorkList.원본파일명Column),String) + End If + End Get + Set + Me(Me.tableWorkList.원본파일명Column) = value + End Set + End Property + + _ + Public Property 대상경로() As String + Get + Return CType(Me(Me.tableWorkList.대상경로Column),String) + End Get + Set + Me(Me.tableWorkList.대상경로Column) = value + End Set + End Property + + _ + Public Property 대상파일명() As String + Get + Return CType(Me(Me.tableWorkList.대상파일명Column),String) + End Get + Set + Me(Me.tableWorkList.대상파일명Column) = value + End Set + End Property + + _ + Public Property 구분() As String + Get + If Me.Is구분Null Then + Return String.Empty + Else + Return CType(Me(Me.tableWorkList.구분Column),String) + End If + End Get + Set + Me(Me.tableWorkList.구분Column) = value + End Set + End Property + + _ + Public Property 성공() As String + Get + If Me.Is성공Null Then + Return String.Empty + Else + Return CType(Me(Me.tableWorkList.성공Column),String) + End If + End Get + Set + Me(Me.tableWorkList.성공Column) = value + End Set + End Property + + _ + Public Property 오류() As String + Get + Return CType(Me(Me.tableWorkList.오류Column),String) + End Get + Set + Me(Me.tableWorkList.오류Column) = value + End Set + End Property + + _ + Public Property seq() As Integer + Get + Try + Return CType(Me(Me.tableWorkList.seqColumn),Integer) + Catch e As Global.System.InvalidCastException + Throw New Global.System.Data.StrongTypingException("'WorkList' 테이블의 'seq' 열의 값이 DBNull입니다.", e) + End Try + End Get + Set + Me(Me.tableWorkList.seqColumn) = value + End Set + End Property + + _ + Public Function Is원본경로Null() As Boolean + Return Me.IsNull(Me.tableWorkList.원본경로Column) + End Function + + _ + Public Sub Set원본경로Null() + Me(Me.tableWorkList.원본경로Column) = Global.System.Convert.DBNull + End Sub + + _ + Public Function Is원본파일명Null() As Boolean + Return Me.IsNull(Me.tableWorkList.원본파일명Column) + End Function + + _ + Public Sub Set원본파일명Null() + Me(Me.tableWorkList.원본파일명Column) = Global.System.Convert.DBNull + End Sub + + _ + Public Function Is구분Null() As Boolean + Return Me.IsNull(Me.tableWorkList.구분Column) + End Function + + _ + Public Sub Set구분Null() + Me(Me.tableWorkList.구분Column) = Global.System.Convert.DBNull + End Sub + + _ + Public Function Is성공Null() As Boolean + Return Me.IsNull(Me.tableWorkList.성공Column) + End Function + + _ + Public Sub Set성공Null() + Me(Me.tableWorkList.성공Column) = Global.System.Convert.DBNull + End Sub + + _ + Public Function IsseqNull() As Boolean + Return Me.IsNull(Me.tableWorkList.seqColumn) + End Function + + _ + Public Sub SetseqNull() + Me(Me.tableWorkList.seqColumn) = Global.System.Convert.DBNull + End Sub + End Class + + ''' + '''Represents strongly named DataRow class. + ''' + Partial Public Class subdirRow + Inherits Global.System.Data.DataRow + + Private tablesubdir As subdirDataTable + + _ + Friend Sub New(ByVal rb As Global.System.Data.DataRowBuilder) + MyBase.New(rb) + Me.tablesubdir = CType(Me.Table,subdirDataTable) + End Sub + + _ + Public Property 경로명() As String + Get + Return CType(Me(Me.tablesubdir.경로명Column),String) + End Get + Set + Me(Me.tablesubdir.경로명Column) = value + End Set + End Property + End Class + + ''' + '''Row event argument class + ''' + _ + Public Class FileListRowChangeEvent + Inherits Global.System.EventArgs + + Private eventRow As FileListRow + + Private eventAction As Global.System.Data.DataRowAction + + _ + Public Sub New(ByVal row As FileListRow, ByVal action As Global.System.Data.DataRowAction) + MyBase.New + Me.eventRow = row + Me.eventAction = action + End Sub + + _ + Public ReadOnly Property Row() As FileListRow + Get + Return Me.eventRow + End Get + End Property + + _ + Public ReadOnly Property Action() As Global.System.Data.DataRowAction + Get + Return Me.eventAction + End Get + End Property + End Class + + ''' + '''Row event argument class + ''' + _ + Public Class SrcListRowChangeEvent + Inherits Global.System.EventArgs + + Private eventRow As SrcListRow + + Private eventAction As Global.System.Data.DataRowAction + + _ + Public Sub New(ByVal row As SrcListRow, ByVal action As Global.System.Data.DataRowAction) + MyBase.New + Me.eventRow = row + Me.eventAction = action + End Sub + + _ + Public ReadOnly Property Row() As SrcListRow + Get + Return Me.eventRow + End Get + End Property + + _ + Public ReadOnly Property Action() As Global.System.Data.DataRowAction + Get + Return Me.eventAction + End Get + End Property + End Class + + ''' + '''Row event argument class + ''' + _ + Public Class WorkListRowChangeEvent + Inherits Global.System.EventArgs + + Private eventRow As WorkListRow + + Private eventAction As Global.System.Data.DataRowAction + + _ + Public Sub New(ByVal row As WorkListRow, ByVal action As Global.System.Data.DataRowAction) + MyBase.New + Me.eventRow = row + Me.eventAction = action + End Sub + + _ + Public ReadOnly Property Row() As WorkListRow + Get + Return Me.eventRow + End Get + End Property + + _ + Public ReadOnly Property Action() As Global.System.Data.DataRowAction + Get + Return Me.eventAction + End Get + End Property + End Class + + ''' + '''Row event argument class + ''' + _ + Public Class subdirRowChangeEvent + Inherits Global.System.EventArgs + + Private eventRow As subdirRow + + Private eventAction As Global.System.Data.DataRowAction + + _ + Public Sub New(ByVal row As subdirRow, ByVal action As Global.System.Data.DataRowAction) + MyBase.New + Me.eventRow = row + Me.eventAction = action + End Sub + + _ + Public ReadOnly Property Row() As subdirRow + Get + Return Me.eventRow + End Get + End Property + + _ + Public ReadOnly Property Action() As Global.System.Data.DataRowAction + Get + Return Me.eventAction + End Get + End Property + End Class +End Class diff --git a/DriveInfo/DataSet/ireaDataSet.xsc b/DriveInfo/DataSet/ireaDataSet.xsc new file mode 100644 index 0000000..5dbde4a --- /dev/null +++ b/DriveInfo/DataSet/ireaDataSet.xsc @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/DriveInfo/DataSet/ireaDataSet.xsd b/DriveInfo/DataSet/ireaDataSet.xsd new file mode 100644 index 0000000..85660a6 --- /dev/null +++ b/DriveInfo/DataSet/ireaDataSet.xsd @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DriveInfo/DataSet/ireaDataSet.xss b/DriveInfo/DataSet/ireaDataSet.xss new file mode 100644 index 0000000..2a7f1c2 --- /dev/null +++ b/DriveInfo/DataSet/ireaDataSet.xss @@ -0,0 +1,15 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/DriveInfo/DriveInfo.vbproj b/DriveInfo/DriveInfo.vbproj new file mode 100644 index 0000000..950dbce --- /dev/null +++ b/DriveInfo/DriveInfo.vbproj @@ -0,0 +1,307 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {FEDED234-344B-4151-BBC5-67F1F5467C18} + WinExe + FileManager.My.MyApplication + FileManager + FileManager + WindowsForms + + + + + 3.5 + v4.0 + + false + D:\Tinsky\Visual Basic For IREA\Runtime\Setup_FileManager_170402_0100\ + true + Disk + false + Foreground + 7 + Days + false + false + true + http://tindevil.com + 파일명관리자 + SIMP + true + true + 2 + 1.0.0.%2a + false + true + true + Relative + + + true + full + true + true + ..\..\Runtime\FileManager\ + + + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,42353,42354,42355 + x86 + + + pdbonly + false + true + true + ..\..\Runtime\FileManager\ + + + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,42353,42354,42355 + x86 + + + Folder.ico + + + LocalIntranet + + + true + + + My Project\app.manifest + + + false + + + F2FEEBAFF25D2E024AFE5812C23EFE0EBB084EFC + + + DriveInfo_TemporaryKey.pfx + + + + + + ..\CommonClassv2.dll + + + + + + + + + + + + + + + + False + C:\Windows\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll + + + + + + + + + + + + + + + True + True + ireaDataSet.xsd + + + fFtpPath.vb + + + Form + + + + + + + + Form_Status.vb + + + Form + + + Form + + + Frm_FileInfo.vb + Form + + + Frm_DeleteFile.vb + + + Form + + + Frm_RenameFile.vb + + + Form + + + ImpCtl.vb + + + UserControl + + + MDiMain.vb + + + Form + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + + fFtpPath.vb + + + Designer + Form_Status.vb + + + Designer + Frm_DeleteFile.vb + + + Frm_FileInfo.vb + Designer + + + Designer + ImpCtl.vb + + + Designer + MDiMain.vb + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + Settings.Designer.vb + + + + + + + Always + + + + + + + + ireaDataSet.xsd + + + MSDataSetGenerator + ireaDataSet.Designer.vb + Designer + + + ireaDataSet.xsd + + + + + + + + + + + + + + + + + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 2.0 SP2 + true + + + False + .NET Framework 3.5 SP1 + false + + + + + {9A2A1B46-799E-4D8E-8682-1F82963836A3} + FTP_Client + + + {E9E16A98-8F8D-4848-A27E-4571C184FB1A} + ArinLog + + + {631388D0-FADF-4C02-9536-A33E1C40F91D} + ArinSetting + + + + \ No newline at end of file diff --git a/DriveInfo/Flag 2-64.png.ico b/DriveInfo/Flag 2-64.png.ico new file mode 100644 index 0000000..1c2d68c Binary files /dev/null and b/DriveInfo/Flag 2-64.png.ico differ diff --git a/DriveInfo/Folder.ico b/DriveInfo/Folder.ico new file mode 100644 index 0000000..afe26d2 Binary files /dev/null and b/DriveInfo/Folder.ico differ diff --git a/DriveInfo/Form1.Designer.vb b/DriveInfo/Form1.Designer.vb new file mode 100644 index 0000000..daffcc5 --- /dev/null +++ b/DriveInfo/Form1.Designer.vb @@ -0,0 +1,111 @@ + _ +Partial Class Form1 + Inherits System.Windows.Forms.Form + + 'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. + _ + 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 + + 'Windows Form 디자이너에 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. + '수정하려면 Windows Form 디자이너를 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + Me.C1Ribbon1 = New C1.Win.C1Ribbon.C1Ribbon() + Me.RibbonApplicationMenu1 = New C1.Win.C1Ribbon.RibbonApplicationMenu() + Me.RibbonQat1 = New C1.Win.C1Ribbon.RibbonQat() + Me.RibbonConfigToolBar1 = New C1.Win.C1Ribbon.RibbonConfigToolBar() + Me.RibbonTopToolBar1 = New C1.Win.C1Ribbon.RibbonTopToolBar() + Me.RibbonBottomToolBar1 = New C1.Win.C1Ribbon.RibbonBottomToolBar() + Me.RibbonTab1 = New C1.Win.C1Ribbon.RibbonTab() + Me.RibbonGroup1 = New C1.Win.C1Ribbon.RibbonGroup() + Me.C1StatusBar1 = New C1.Win.C1Ribbon.C1StatusBar() + CType(Me.C1Ribbon1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.C1StatusBar1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'C1Ribbon1 + ' + Me.C1Ribbon1.ApplicationMenuHolder = Me.RibbonApplicationMenu1 + Me.C1Ribbon1.BottomToolBarHolder = Me.RibbonBottomToolBar1 + Me.C1Ribbon1.ConfigToolBarHolder = Me.RibbonConfigToolBar1 + Me.C1Ribbon1.Location = New System.Drawing.Point(0, 0) + Me.C1Ribbon1.Name = "C1Ribbon1" + Me.C1Ribbon1.QatHolder = Me.RibbonQat1 + Me.C1Ribbon1.Size = New System.Drawing.Size(727, 155) + Me.C1Ribbon1.Tabs.Add(Me.RibbonTab1) + Me.C1Ribbon1.TopToolBarHolder = Me.RibbonTopToolBar1 + ' + 'RibbonApplicationMenu1 + ' + Me.RibbonApplicationMenu1.Name = "RibbonApplicationMenu1" + ' + 'RibbonQat1 + ' + Me.RibbonQat1.Name = "RibbonQat1" + ' + 'RibbonConfigToolBar1 + ' + Me.RibbonConfigToolBar1.Name = "RibbonConfigToolBar1" + ' + 'RibbonTopToolBar1 + ' + Me.RibbonTopToolBar1.Name = "RibbonTopToolBar1" + ' + 'RibbonBottomToolBar1 + ' + Me.RibbonBottomToolBar1.Name = "RibbonBottomToolBar1" + ' + 'RibbonTab1 + ' + Me.RibbonTab1.Groups.Add(Me.RibbonGroup1) + Me.RibbonTab1.Name = "RibbonTab1" + Me.RibbonTab1.Text = "Tab" + ' + 'RibbonGroup1 + ' + Me.RibbonGroup1.Name = "RibbonGroup1" + Me.RibbonGroup1.Text = "Group" + ' + 'C1StatusBar1 + ' + Me.C1StatusBar1.Location = New System.Drawing.Point(0, 584) + Me.C1StatusBar1.Name = "C1StatusBar1" + Me.C1StatusBar1.Size = New System.Drawing.Size(727, 22) + ' + 'Form1 + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(727, 606) + Me.Controls.Add(Me.C1StatusBar1) + Me.Controls.Add(Me.C1Ribbon1) + Me.Name = "Form1" + Me.Text = "Form1" + CType(Me.C1Ribbon1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.C1StatusBar1, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents C1Ribbon1 As C1.Win.C1Ribbon.C1Ribbon + Friend WithEvents RibbonApplicationMenu1 As C1.Win.C1Ribbon.RibbonApplicationMenu + Friend WithEvents RibbonBottomToolBar1 As C1.Win.C1Ribbon.RibbonBottomToolBar + Friend WithEvents RibbonConfigToolBar1 As C1.Win.C1Ribbon.RibbonConfigToolBar + Friend WithEvents RibbonQat1 As C1.Win.C1Ribbon.RibbonQat + Friend WithEvents RibbonTab1 As C1.Win.C1Ribbon.RibbonTab + Friend WithEvents RibbonGroup1 As C1.Win.C1Ribbon.RibbonGroup + Friend WithEvents RibbonTopToolBar1 As C1.Win.C1Ribbon.RibbonTopToolBar + Friend WithEvents C1StatusBar1 As C1.Win.C1Ribbon.C1StatusBar +End Class diff --git a/DriveInfo/Form1.resx b/DriveInfo/Form1.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/DriveInfo/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/DriveInfo/Form1.vb b/DriveInfo/Form1.vb new file mode 100644 index 0000000..10d55d4 --- /dev/null +++ b/DriveInfo/Form1.vb @@ -0,0 +1,3 @@ +Public Class Form1 + +End Class \ No newline at end of file diff --git a/DriveInfo/Form2.Designer.vb b/DriveInfo/Form2.Designer.vb new file mode 100644 index 0000000..6d27d03 --- /dev/null +++ b/DriveInfo/Form2.Designer.vb @@ -0,0 +1,29 @@ + _ +Partial Class Form2 + Inherits System.Windows.Forms.Form + + 'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. + _ + 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 + + 'Windows Form 디자이너에 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. + '수정하려면 Windows Form 디자이너를 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + components = New System.ComponentModel.Container + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.Text = "Form2" + End Sub +End Class diff --git a/DriveInfo/Form2.vb b/DriveInfo/Form2.vb new file mode 100644 index 0000000..361d614 --- /dev/null +++ b/DriveInfo/Form2.vb @@ -0,0 +1,3 @@ +Public Class Form2 + +End Class \ No newline at end of file diff --git a/DriveInfo/MDiMain.Designer.vb b/DriveInfo/MDiMain.Designer.vb new file mode 100644 index 0000000..4bcd41e --- /dev/null +++ b/DriveInfo/MDiMain.Designer.vb @@ -0,0 +1,1798 @@ + _ +Partial Class MDiMain + Inherits C1.Win.C1Ribbon.C1RibbonForm + + 'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. + _ + 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 + + + 'Windows Form 디자이너에 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. + '수정하려면 Windows Form 디자이너를 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MDiMain)) + Dim DefaultFocusIndicatorRenderer1 As FarPoint.Win.Spread.DefaultFocusIndicatorRenderer = New FarPoint.Win.Spread.DefaultFocusIndicatorRenderer() + Dim DefaultScrollBarRenderer1 As FarPoint.Win.Spread.DefaultScrollBarRenderer = New FarPoint.Win.Spread.DefaultScrollBarRenderer() + Dim DefaultScrollBarRenderer2 As FarPoint.Win.Spread.DefaultScrollBarRenderer = New FarPoint.Win.Spread.DefaultScrollBarRenderer() + Dim TextCellType1 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Me.ToolTip = New System.Windows.Forms.ToolTip(Me.components) + Me.Timer1 = New System.Windows.Forms.Timer(Me.components) + Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel() + Me.ToolStrip1 = New System.Windows.Forms.ToolStrip() + Me.ToolStripLabel5 = New System.Windows.Forms.ToolStripLabel() + Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator() + Me.btAddSubDir = New System.Windows.Forms.ToolStripButton() + Me.btDeleteSubDir = New System.Windows.Forms.ToolStripButton() + Me.list_subdir = New System.Windows.Forms.ListView() + Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel() + Me.src_tp = New System.Windows.Forms.TableLayoutPanel() + Me.src_Impctl1 = New FileManager.impctl() + Me.src_Impctl2 = New FileManager.impctl() + Me.src_Impctl7 = New FileManager.impctl() + Me.src_Impctl5 = New FileManager.impctl() + Me.src_Impctl6 = New FileManager.impctl() + Me.src_Impctl3 = New FileManager.impctl() + Me.src_Impctl4 = New FileManager.impctl() + Me.src_view1 = New FarPoint.Win.Spread.FpSpread() + Me.src_view1_Sheet1 = New FarPoint.Win.Spread.SheetView() + Me.preview1 = New System.Windows.Forms.TextBox() + Me.ToolStrip3 = New System.Windows.Forms.ToolStrip() + Me.ToolStripLabel2 = New System.Windows.Forms.ToolStripLabel() + Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator() + Me.desd_find_folder = New System.Windows.Forms.ToolStripButton() + Me.des_chk_merge = New System.Windows.Forms.ToolStripButton() + Me.desd_tb_path = New System.Windows.Forms.TextBox() + Me.desd_pt = New System.Windows.Forms.TableLayoutPanel() + Me.desd_Impctl1 = New FileManager.impctl() + Me.desd_Impctl2 = New FileManager.impctl() + Me.desd_Impctl7 = New FileManager.impctl() + Me.desd_Impctl5 = New FileManager.impctl() + Me.desd_Impctl6 = New FileManager.impctl() + Me.desd_Impctl3 = New FileManager.impctl() + Me.desd_Impctl4 = New FileManager.impctl() + Me.pviewDesDir = New System.Windows.Forms.TextBox() + Me.desf_pt = New System.Windows.Forms.TableLayoutPanel() + Me.desf_Impctl1 = New FileManager.impctl() + Me.desf_Impctl2 = New FileManager.impctl() + Me.desf_Impctl7 = New FileManager.impctl() + Me.desf_Impctl5 = New FileManager.impctl() + Me.desf_Impctl6 = New FileManager.impctl() + Me.desf_Impctl3 = New FileManager.impctl() + Me.desf_Impctl4 = New FileManager.impctl() + Me.ToolStrip4 = New System.Windows.Forms.ToolStrip() + Me.ToolStripLabel4 = New System.Windows.Forms.ToolStripLabel() + Me.pviewDesFile = New System.Windows.Forms.TextBox() + Me.DataSet1 = New FileManager.ireaDataSet() + Me.pnTargetFile = New System.Windows.Forms.Panel() + Me.Panel4 = New System.Windows.Forms.Panel() + Me.pnSrcDir = New System.Windows.Forms.Panel() + Me.srcd_pt = New System.Windows.Forms.TableLayoutPanel() + Me.im1 = New FileManager.impctl() + Me.im2 = New FileManager.impctl() + Me.im7 = New FileManager.impctl() + Me.im5 = New FileManager.impctl() + Me.im6 = New FileManager.impctl() + Me.im3 = New FileManager.impctl() + Me.im4 = New FileManager.impctl() + Me.pviewSrcDir = New System.Windows.Forms.TextBox() + Me.tb_workdir = New System.Windows.Forms.TextBox() + Me.ToolStrip5 = New System.Windows.Forms.ToolStrip() + Me.ToolStripLabel7 = New System.Windows.Forms.ToolStripLabel() + Me.ToolStripSeparator10 = New System.Windows.Forms.ToolStripSeparator() + Me.bt_workdir = New System.Windows.Forms.ToolStripButton() + Me.srcd_find_ftp = New System.Windows.Forms.ToolStripButton() + Me.ToolStripButton4 = New System.Windows.Forms.ToolStripButton() + Me.src_chk_merge = New System.Windows.Forms.ToolStripButton() + Me.pnTargetDir = New System.Windows.Forms.Panel() + Me.C1Ribbon1 = New C1.Win.C1Ribbon.C1Ribbon() + Me.RibbonApplicationMenu1 = New C1.Win.C1Ribbon.RibbonApplicationMenu() + Me.RibbonBottomToolBar1 = New C1.Win.C1Ribbon.RibbonBottomToolBar() + Me.RibbonConfigToolBar1 = New C1.Win.C1Ribbon.RibbonConfigToolBar() + Me.RibbonQat1 = New C1.Win.C1Ribbon.RibbonQat() + Me.RibbonTab1 = New C1.Win.C1Ribbon.RibbonTab() + Me.RibbonGroup4 = New C1.Win.C1Ribbon.RibbonGroup() + Me.RibbonButton8 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonButton12 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonButton13 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonGroup1 = New C1.Win.C1Ribbon.RibbonGroup() + Me.bt_run = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonSeparator5 = New C1.Win.C1Ribbon.RibbonSeparator() + Me.chkReplay = New C1.Win.C1Ribbon.RibbonCheckBox() + Me.chkAutoRun = New C1.Win.C1Ribbon.RibbonCheckBox() + Me.chkHide = New C1.Win.C1Ribbon.RibbonCheckBox() + Me.RibbonSeparator3 = New C1.Win.C1Ribbon.RibbonSeparator() + Me.btCopy = New C1.Win.C1Ribbon.RibbonToggleButton() + Me.btDel = New C1.Win.C1Ribbon.RibbonToggleButton() + Me.btMove = New C1.Win.C1Ribbon.RibbonToggleButton() + Me.RibbonGroup7 = New C1.Win.C1Ribbon.RibbonGroup() + Me.btOpenFile = New C1.Win.C1Ribbon.RibbonButton() + Me.btMakeNewList = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonGroup3 = New C1.Win.C1Ribbon.RibbonGroup() + Me.tb_sttrange = New C1.Win.C1Ribbon.RibbonTextBox() + Me.tb_endrange = New C1.Win.C1Ribbon.RibbonTextBox() + Me.RibbonGroup6 = New C1.Win.C1Ribbon.RibbonGroup() + Me.tb_ext = New C1.Win.C1Ribbon.RibbonTextBox() + Me.RibbonButton11 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonSeparator4 = New C1.Win.C1Ribbon.RibbonSeparator() + Me.chk_autorow = New C1.Win.C1Ribbon.RibbonCheckBox() + Me.chk_subdir = New C1.Win.C1Ribbon.RibbonCheckBox() + Me.RibbonSeparator2 = New C1.Win.C1Ribbon.RibbonSeparator() + Me.bT_netdrvconn = New C1.Win.C1Ribbon.RibbonButton() + Me.bt_netdrvdel = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonGroup2 = New C1.Win.C1Ribbon.RibbonGroup() + Me.cbBakType = New C1.Win.C1Ribbon.RibbonComboBox() + Me.RibbonButton2 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonButton3 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonButton4 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonButton5 = New C1.Win.C1Ribbon.RibbonButton() + Me.cbBakTarget = New C1.Win.C1Ribbon.RibbonComboBox() + Me.RibbonButton6 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonButton7 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonSeparator1 = New C1.Win.C1Ribbon.RibbonSeparator() + Me.RibbonButton1 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonGroup8 = New C1.Win.C1Ribbon.RibbonGroup() + Me.RibbonButton10 = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonTab2 = New C1.Win.C1Ribbon.RibbonTab() + Me.RibbonGroup5 = New C1.Win.C1Ribbon.RibbonGroup() + Me.btMakeCache = New C1.Win.C1Ribbon.RibbonButton() + Me.RibbonTopToolBar1 = New C1.Win.C1Ribbon.RibbonTopToolBar() + Me.C1StatusBar1 = New C1.Win.C1Ribbon.C1StatusBar() + Me.RibbonLabel1 = New C1.Win.C1Ribbon.RibbonLabel() + Me.tb_bakdir1 = New C1.Win.C1Ribbon.RibbonLabel() + Me.lb_msg = New C1.Win.C1Ribbon.RibbonLabel() + Me.RibbonLabel2 = New C1.Win.C1Ribbon.RibbonLabel() + Me.lb_cnt1 = New C1.Win.C1Ribbon.RibbonLabel() + Me.lb_cnt2 = New C1.Win.C1Ribbon.RibbonLabel() + Me.prb1 = New C1.Win.C1Ribbon.RibbonProgressBar() + Me.cmb_macro = New System.Windows.Forms.ComboBox() + Me.Panel1 = New System.Windows.Forms.Panel() + Me.RichTextBox1 = New System.Windows.Forms.RichTextBox() + Me.TabControl1 = New System.Windows.Forms.TabControl() + Me.TabPage1 = New System.Windows.Forms.TabPage() + Me.TabPage2 = New System.Windows.Forms.TabPage() + Me.lvSchedule = New System.Windows.Forms.ListView() + Me.ColumnHeader3 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.ColumnHeader4 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.ColumnHeader5 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.ColumnHeader6 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.ColumnHeader7 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.NotifyIcon1 = New System.Windows.Forms.NotifyIcon(Me.components) + Me.TableLayoutPanel2.SuspendLayout() + Me.ToolStrip1.SuspendLayout() + Me.TableLayoutPanel3.SuspendLayout() + Me.src_tp.SuspendLayout() + CType(Me.src_view1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.src_view1_Sheet1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.ToolStrip3.SuspendLayout() + Me.desd_pt.SuspendLayout() + Me.desf_pt.SuspendLayout() + Me.ToolStrip4.SuspendLayout() + CType(Me.DataSet1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.pnTargetFile.SuspendLayout() + Me.Panel4.SuspendLayout() + Me.pnSrcDir.SuspendLayout() + Me.srcd_pt.SuspendLayout() + Me.ToolStrip5.SuspendLayout() + Me.pnTargetDir.SuspendLayout() + CType(Me.C1Ribbon1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.C1StatusBar1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.Panel1.SuspendLayout() + Me.TabControl1.SuspendLayout() + Me.TabPage1.SuspendLayout() + Me.TabPage2.SuspendLayout() + Me.SuspendLayout() + ' + 'Timer1 + ' + Me.Timer1.Enabled = True + Me.Timer1.Interval = 1000 + ' + 'TableLayoutPanel2 + ' + Me.TableLayoutPanel2.ColumnCount = 1 + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel2.Controls.Add(Me.ToolStrip1, 0, 0) + Me.TableLayoutPanel2.Controls.Add(Me.list_subdir, 0, 1) + Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Left + Me.TableLayoutPanel2.Location = New System.Drawing.Point(3, 3) + Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel2.Name = "TableLayoutPanel2" + Me.TableLayoutPanel2.RowCount = 2 + Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25.0!)) + Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel2.Size = New System.Drawing.Size(205, 555) + Me.TableLayoutPanel2.TabIndex = 0 + ' + 'ToolStrip1 + ' + Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripLabel5, Me.ToolStripSeparator7, Me.btAddSubDir, Me.btDeleteSubDir}) + Me.ToolStrip1.Location = New System.Drawing.Point(0, 0) + Me.ToolStrip1.Name = "ToolStrip1" + Me.ToolStrip1.Size = New System.Drawing.Size(205, 25) + Me.ToolStrip1.TabIndex = 3 + Me.ToolStrip1.Text = "ToolStrip1" + ' + 'ToolStripLabel5 + ' + Me.ToolStripLabel5.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.ToolStripLabel5.Name = "ToolStripLabel5" + Me.ToolStripLabel5.Size = New System.Drawing.Size(57, 22) + Me.ToolStripLabel5.Text = "하위폴더" + Me.ToolStripLabel5.ToolTipText = "그림파일검색시 아래 지정된폴더만 검사합니다.(지정된 폴더가 없을시에는 모든 하위폴더를 검사합니다)" + ' + 'ToolStripSeparator7 + ' + Me.ToolStripSeparator7.Name = "ToolStripSeparator7" + Me.ToolStripSeparator7.Size = New System.Drawing.Size(6, 25) + ' + 'btAddSubDir + ' + Me.btAddSubDir.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.btAddSubDir.Image = CType(resources.GetObject("btAddSubDir.Image"), System.Drawing.Image) + Me.btAddSubDir.Name = "btAddSubDir" + Me.btAddSubDir.RightToLeftAutoMirrorImage = True + Me.btAddSubDir.Size = New System.Drawing.Size(23, 22) + Me.btAddSubDir.Text = "새로 추가" + ' + 'btDeleteSubDir + ' + Me.btDeleteSubDir.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.btDeleteSubDir.Image = CType(resources.GetObject("btDeleteSubDir.Image"), System.Drawing.Image) + Me.btDeleteSubDir.Name = "btDeleteSubDir" + Me.btDeleteSubDir.RightToLeftAutoMirrorImage = True + Me.btDeleteSubDir.Size = New System.Drawing.Size(23, 22) + Me.btDeleteSubDir.Text = "삭제" + ' + 'list_subdir + ' + Me.list_subdir.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2}) + Me.list_subdir.Dock = System.Windows.Forms.DockStyle.Fill + Me.list_subdir.FullRowSelect = True + Me.list_subdir.Location = New System.Drawing.Point(3, 28) + Me.list_subdir.Name = "list_subdir" + Me.list_subdir.Size = New System.Drawing.Size(199, 524) + Me.list_subdir.TabIndex = 4 + Me.list_subdir.UseCompatibleStateImageBehavior = False + Me.list_subdir.View = System.Windows.Forms.View.Details + ' + 'ColumnHeader1 + ' + Me.ColumnHeader1.Text = "List" + Me.ColumnHeader1.Width = 103 + ' + 'ColumnHeader2 + ' + Me.ColumnHeader2.Text = "●" + Me.ColumnHeader2.Width = 41 + ' + 'TableLayoutPanel3 + ' + Me.TableLayoutPanel3.ColumnCount = 1 + Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel3.Controls.Add(Me.src_tp, 0, 1) + Me.TableLayoutPanel3.Controls.Add(Me.src_view1, 0, 0) + Me.TableLayoutPanel3.Controls.Add(Me.preview1, 0, 2) + Me.TableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Top + Me.TableLayoutPanel3.Location = New System.Drawing.Point(5, 29) + Me.TableLayoutPanel3.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel3.Name = "TableLayoutPanel3" + Me.TableLayoutPanel3.RowCount = 3 + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 96.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29.0!)) + Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + Me.TableLayoutPanel3.Size = New System.Drawing.Size(503, 350) + Me.TableLayoutPanel3.TabIndex = 1 + ' + 'src_tp + ' + Me.src_tp.ColumnCount = 7 + Me.src_tp.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.27716!)) + Me.src_tp.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.27716!)) + Me.src_tp.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.27716!)) + Me.src_tp.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.33703!)) + Me.src_tp.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.27716!)) + Me.src_tp.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.27716!)) + Me.src_tp.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.27716!)) + Me.src_tp.Controls.Add(Me.src_Impctl1, 0, 0) + Me.src_tp.Controls.Add(Me.src_Impctl2, 1, 0) + Me.src_tp.Controls.Add(Me.src_Impctl7, 6, 0) + Me.src_tp.Controls.Add(Me.src_Impctl5, 4, 0) + Me.src_tp.Controls.Add(Me.src_Impctl6, 5, 0) + Me.src_tp.Controls.Add(Me.src_Impctl3, 2, 0) + Me.src_tp.Controls.Add(Me.src_Impctl4, 3, 0) + Me.src_tp.Dock = System.Windows.Forms.DockStyle.Fill + Me.src_tp.Location = New System.Drawing.Point(0, 225) + Me.src_tp.Margin = New System.Windows.Forms.Padding(0) + Me.src_tp.Name = "src_tp" + Me.src_tp.RowCount = 1 + Me.src_tp.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.src_tp.Size = New System.Drawing.Size(503, 96) + Me.src_tp.TabIndex = 14 + ' + 'src_Impctl1 + ' + Me.src_Impctl1.Dock = System.Windows.Forms.DockStyle.Fill + Me.src_Impctl1.Location = New System.Drawing.Point(0, 0) + Me.src_Impctl1.Margin = New System.Windows.Forms.Padding(0) + Me.src_Impctl1.Name = "src_Impctl1" + Me.src_Impctl1.Size = New System.Drawing.Size(71, 96) + Me.src_Impctl1.TabIndex = 0 + Me.src_Impctl1.문자열자르기 = "" + Me.src_Impctl1.열번호 = "" + Me.src_Impctl1.제목 = "조합키" + Me.src_Impctl1.포맷마스크 = "" + Me.src_Impctl1.필드명 = Nothing + ' + 'src_Impctl2 + ' + Me.src_Impctl2.Dock = System.Windows.Forms.DockStyle.Fill + Me.src_Impctl2.Location = New System.Drawing.Point(71, 0) + Me.src_Impctl2.Margin = New System.Windows.Forms.Padding(0) + Me.src_Impctl2.Name = "src_Impctl2" + Me.src_Impctl2.Size = New System.Drawing.Size(71, 96) + Me.src_Impctl2.TabIndex = 1 + Me.src_Impctl2.문자열자르기 = "" + Me.src_Impctl2.열번호 = "" + Me.src_Impctl2.제목 = "조합키" + Me.src_Impctl2.포맷마스크 = "" + Me.src_Impctl2.필드명 = Nothing + ' + 'src_Impctl7 + ' + Me.src_Impctl7.Dock = System.Windows.Forms.DockStyle.Fill + Me.src_Impctl7.Location = New System.Drawing.Point(427, 0) + Me.src_Impctl7.Margin = New System.Windows.Forms.Padding(0) + Me.src_Impctl7.Name = "src_Impctl7" + Me.src_Impctl7.Size = New System.Drawing.Size(76, 96) + Me.src_Impctl7.TabIndex = 6 + Me.src_Impctl7.문자열자르기 = "" + Me.src_Impctl7.열번호 = "" + Me.src_Impctl7.제목 = "조합키" + Me.src_Impctl7.포맷마스크 = "" + Me.src_Impctl7.필드명 = Nothing + ' + 'src_Impctl5 + ' + Me.src_Impctl5.Dock = System.Windows.Forms.DockStyle.Fill + Me.src_Impctl5.Location = New System.Drawing.Point(285, 0) + Me.src_Impctl5.Margin = New System.Windows.Forms.Padding(0) + Me.src_Impctl5.Name = "src_Impctl5" + Me.src_Impctl5.Size = New System.Drawing.Size(71, 96) + Me.src_Impctl5.TabIndex = 4 + Me.src_Impctl5.문자열자르기 = "" + Me.src_Impctl5.열번호 = "" + Me.src_Impctl5.제목 = "조합키" + Me.src_Impctl5.포맷마스크 = "" + Me.src_Impctl5.필드명 = Nothing + ' + 'src_Impctl6 + ' + Me.src_Impctl6.Dock = System.Windows.Forms.DockStyle.Fill + Me.src_Impctl6.Location = New System.Drawing.Point(356, 0) + Me.src_Impctl6.Margin = New System.Windows.Forms.Padding(0) + Me.src_Impctl6.Name = "src_Impctl6" + Me.src_Impctl6.Size = New System.Drawing.Size(71, 96) + Me.src_Impctl6.TabIndex = 5 + Me.src_Impctl6.문자열자르기 = "" + Me.src_Impctl6.열번호 = "" + Me.src_Impctl6.제목 = "조합키" + Me.src_Impctl6.포맷마스크 = "" + Me.src_Impctl6.필드명 = Nothing + ' + 'src_Impctl3 + ' + Me.src_Impctl3.Dock = System.Windows.Forms.DockStyle.Fill + Me.src_Impctl3.Location = New System.Drawing.Point(142, 0) + Me.src_Impctl3.Margin = New System.Windows.Forms.Padding(0) + Me.src_Impctl3.Name = "src_Impctl3" + Me.src_Impctl3.Size = New System.Drawing.Size(71, 96) + Me.src_Impctl3.TabIndex = 2 + Me.src_Impctl3.문자열자르기 = "" + Me.src_Impctl3.열번호 = "" + Me.src_Impctl3.제목 = "조합키" + Me.src_Impctl3.포맷마스크 = "" + Me.src_Impctl3.필드명 = Nothing + ' + 'src_Impctl4 + ' + Me.src_Impctl4.Dock = System.Windows.Forms.DockStyle.Fill + Me.src_Impctl4.Location = New System.Drawing.Point(213, 0) + Me.src_Impctl4.Margin = New System.Windows.Forms.Padding(0) + Me.src_Impctl4.Name = "src_Impctl4" + Me.src_Impctl4.Size = New System.Drawing.Size(72, 96) + Me.src_Impctl4.TabIndex = 3 + Me.src_Impctl4.문자열자르기 = "" + Me.src_Impctl4.열번호 = "" + Me.src_Impctl4.제목 = "조합키" + Me.src_Impctl4.포맷마스크 = "" + Me.src_Impctl4.필드명 = Nothing + ' + 'src_view1 + ' + Me.src_view1.AccessibleDescription = "src_view1, Sheet1, Row 0, Column 0, 1. 상단 원본목록의 '불러오기' 메뉴를 통해서 기존파일을 불러올 수 있습니다." + Me.src_view1.AllowDragDrop = True + Me.src_view1.AllowDragFill = True + Me.src_view1.AllowDrop = True + Me.src_view1.AllowRowMove = True + Me.src_view1.BackColor = System.Drawing.SystemColors.Control + Me.src_view1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.src_view1.Dock = System.Windows.Forms.DockStyle.Fill + Me.src_view1.EditModeReplace = True + Me.src_view1.FocusRenderer = DefaultFocusIndicatorRenderer1 + Me.src_view1.HorizontalScrollBar.Buttons = New FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton") + Me.src_view1.HorizontalScrollBar.Name = "" + Me.src_view1.HorizontalScrollBar.Renderer = DefaultScrollBarRenderer1 + Me.src_view1.HorizontalScrollBar.TabIndex = 4 + Me.src_view1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded + Me.src_view1.Location = New System.Drawing.Point(0, 0) + Me.src_view1.Margin = New System.Windows.Forms.Padding(0) + Me.src_view1.Name = "src_view1" + Me.src_view1.RightToLeft = System.Windows.Forms.RightToLeft.No + Me.src_view1.Sheets.AddRange(New FarPoint.Win.Spread.SheetView() {Me.src_view1_Sheet1}) + Me.src_view1.Size = New System.Drawing.Size(503, 225) + Me.src_view1.Skin = FarPoint.Win.Spread.DefaultSpreadSkins.Classic + Me.src_view1.TabIndex = 5 + Me.src_view1.VerticalScrollBar.Buttons = New FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton") + Me.src_view1.VerticalScrollBar.Name = "" + Me.src_view1.VerticalScrollBar.Renderer = DefaultScrollBarRenderer2 + Me.src_view1.VerticalScrollBar.TabIndex = 5 + Me.src_view1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded + Me.src_view1.VisualStyles = FarPoint.Win.VisualStyles.Off + ' + 'src_view1_Sheet1 + ' + Me.src_view1_Sheet1.Reset() + src_view1_Sheet1.SheetName = "Sheet1" + 'Formulas and custom names must be loaded with R1C1 reference style + Me.src_view1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1 + src_view1_Sheet1.ColumnCount = 1 + src_view1_Sheet1.RowCount = 2 + Me.src_view1_Sheet1.Cells.Get(0, 0).BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(128, Byte), Integer)) + Me.src_view1_Sheet1.Cells.Get(0, 0).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left + Me.src_view1_Sheet1.Cells.Get(0, 0).Value = "1. 상단 원본목록의 '불러오기' 메뉴를 통해서 기존파일을 불러올 수 있습니다." + Me.src_view1_Sheet1.Cells.Get(0, 0).VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center + Me.src_view1_Sheet1.Cells.Get(1, 0).BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(128, Byte), Integer)) + Me.src_view1_Sheet1.Cells.Get(1, 0).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left + Me.src_view1_Sheet1.Cells.Get(1, 0).Value = "1. 혹은 '직접작성' 버튼으로 내용을 사용자가 직접 입력할 수 있습니다." + Me.src_view1_Sheet1.Cells.Get(1, 0).VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center + Me.src_view1_Sheet1.ColumnFooter.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.src_view1_Sheet1.ColumnFooter.DefaultStyle.Parent = "HeaderDefault" + Me.src_view1_Sheet1.ColumnFooterSheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.src_view1_Sheet1.ColumnFooterSheetCornerStyle.Parent = "CornerDefault" + Me.src_view1_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "목록불러오기 설명" + Me.src_view1_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.src_view1_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault" + Me.src_view1_Sheet1.ColumnHeader.Rows.Get(0).Height = 33.0! + Me.src_view1_Sheet1.Columns.Get(0).CellType = TextCellType1 + Me.src_view1_Sheet1.Columns.Get(0).Label = "목록불러오기 설명" + Me.src_view1_Sheet1.Columns.Get(0).Width = 432.0! + Me.src_view1_Sheet1.RowHeader.Columns.Default.Resizable = False + Me.src_view1_Sheet1.RowHeader.Columns.Get(0).Width = 33.0! + Me.src_view1_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.src_view1_Sheet1.RowHeader.DefaultStyle.Parent = "RowHeaderDefault" + Me.src_view1_Sheet1.Rows.Get(0).Height = 25.0! + Me.src_view1_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.src_view1_Sheet1.SheetCornerStyle.Parent = "CornerDefault" + Me.src_view1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1 + ' + 'preview1 + ' + Me.preview1.BackColor = System.Drawing.Color.LightBlue + Me.preview1.Dock = System.Windows.Forms.DockStyle.Fill + Me.preview1.Location = New System.Drawing.Point(3, 324) + Me.preview1.Name = "preview1" + Me.preview1.Size = New System.Drawing.Size(497, 21) + Me.preview1.TabIndex = 15 + ' + 'ToolStrip3 + ' + Me.ToolStrip3.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.ToolStrip3.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripLabel2, Me.ToolStripSeparator6, Me.desd_find_folder, Me.des_chk_merge}) + Me.ToolStrip3.Location = New System.Drawing.Point(3, 3) + Me.ToolStrip3.Name = "ToolStrip3" + Me.ToolStrip3.Size = New System.Drawing.Size(349, 25) + Me.ToolStrip3.TabIndex = 0 + Me.ToolStrip3.Text = "ToolStrip3" + ' + 'ToolStripLabel2 + ' + Me.ToolStripLabel2.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.ToolStripLabel2.Name = "ToolStripLabel2" + Me.ToolStripLabel2.Size = New System.Drawing.Size(57, 22) + Me.ToolStripLabel2.Text = "대상폴더" + ' + 'ToolStripSeparator6 + ' + Me.ToolStripSeparator6.Name = "ToolStripSeparator6" + Me.ToolStripSeparator6.Size = New System.Drawing.Size(6, 25) + ' + 'desd_find_folder + ' + Me.desd_find_folder.ImageTransparentColor = System.Drawing.Color.Magenta + Me.desd_find_folder.Name = "desd_find_folder" + Me.desd_find_folder.Size = New System.Drawing.Size(33, 22) + Me.desd_find_folder.Text = "찾기" + ' + 'des_chk_merge + ' + Me.des_chk_merge.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right + Me.des_chk_merge.CheckOnClick = True + Me.des_chk_merge.ImageTransparentColor = System.Drawing.Color.Magenta + Me.des_chk_merge.Name = "des_chk_merge" + Me.des_chk_merge.Size = New System.Drawing.Size(33, 22) + Me.des_chk_merge.Text = "조합" + Me.des_chk_merge.ToolTipText = "사용시 기본대상폴더아래에 조합된 폴더명이 위치합니다" + ' + 'desd_tb_path + ' + Me.desd_tb_path.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.desd_tb_path.Dock = System.Windows.Forms.DockStyle.Top + Me.desd_tb_path.Location = New System.Drawing.Point(3, 28) + Me.desd_tb_path.Name = "desd_tb_path" + Me.desd_tb_path.Size = New System.Drawing.Size(349, 21) + Me.desd_tb_path.TabIndex = 1 + ' + 'desd_pt + ' + Me.desd_pt.ColumnCount = 7 + Me.desd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28569!)) + Me.desd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28568!)) + Me.desd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28568!)) + Me.desd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28589!)) + Me.desd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28568!)) + Me.desd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28568!)) + Me.desd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28568!)) + Me.desd_pt.Controls.Add(Me.desd_Impctl1, 0, 0) + Me.desd_pt.Controls.Add(Me.desd_Impctl2, 1, 0) + Me.desd_pt.Controls.Add(Me.desd_Impctl7, 6, 0) + Me.desd_pt.Controls.Add(Me.desd_Impctl5, 4, 0) + Me.desd_pt.Controls.Add(Me.desd_Impctl6, 5, 0) + Me.desd_pt.Controls.Add(Me.desd_Impctl3, 2, 0) + Me.desd_pt.Controls.Add(Me.desd_Impctl4, 3, 0) + Me.desd_pt.Dock = System.Windows.Forms.DockStyle.Fill + Me.desd_pt.Enabled = False + Me.desd_pt.Location = New System.Drawing.Point(3, 49) + Me.desd_pt.Margin = New System.Windows.Forms.Padding(0) + Me.desd_pt.Name = "desd_pt" + Me.desd_pt.RowCount = 1 + Me.desd_pt.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.desd_pt.Size = New System.Drawing.Size(349, 116) + Me.desd_pt.TabIndex = 15 + ' + 'desd_Impctl1 + ' + Me.desd_Impctl1.Dock = System.Windows.Forms.DockStyle.Fill + Me.desd_Impctl1.Location = New System.Drawing.Point(0, 0) + Me.desd_Impctl1.Margin = New System.Windows.Forms.Padding(0) + Me.desd_Impctl1.Name = "desd_Impctl1" + Me.desd_Impctl1.Size = New System.Drawing.Size(49, 116) + Me.desd_Impctl1.TabIndex = 4 + Me.desd_Impctl1.문자열자르기 = "" + Me.desd_Impctl1.열번호 = "" + Me.desd_Impctl1.제목 = "조합키" + Me.desd_Impctl1.포맷마스크 = "" + Me.desd_Impctl1.필드명 = Nothing + ' + 'desd_Impctl2 + ' + Me.desd_Impctl2.Dock = System.Windows.Forms.DockStyle.Fill + Me.desd_Impctl2.Location = New System.Drawing.Point(49, 0) + Me.desd_Impctl2.Margin = New System.Windows.Forms.Padding(0) + Me.desd_Impctl2.Name = "desd_Impctl2" + Me.desd_Impctl2.Size = New System.Drawing.Size(49, 116) + Me.desd_Impctl2.TabIndex = 5 + Me.desd_Impctl2.문자열자르기 = "" + Me.desd_Impctl2.열번호 = "" + Me.desd_Impctl2.제목 = "조합키" + Me.desd_Impctl2.포맷마스크 = "" + Me.desd_Impctl2.필드명 = Nothing + ' + 'desd_Impctl7 + ' + Me.desd_Impctl7.Dock = System.Windows.Forms.DockStyle.Fill + Me.desd_Impctl7.Location = New System.Drawing.Point(294, 0) + Me.desd_Impctl7.Margin = New System.Windows.Forms.Padding(0) + Me.desd_Impctl7.Name = "desd_Impctl7" + Me.desd_Impctl7.Size = New System.Drawing.Size(55, 116) + Me.desd_Impctl7.TabIndex = 11 + Me.desd_Impctl7.문자열자르기 = "" + Me.desd_Impctl7.열번호 = "" + Me.desd_Impctl7.제목 = "조합키" + Me.desd_Impctl7.포맷마스크 = "" + Me.desd_Impctl7.필드명 = Nothing + ' + 'desd_Impctl5 + ' + Me.desd_Impctl5.Dock = System.Windows.Forms.DockStyle.Fill + Me.desd_Impctl5.Location = New System.Drawing.Point(196, 0) + Me.desd_Impctl5.Margin = New System.Windows.Forms.Padding(0) + Me.desd_Impctl5.Name = "desd_Impctl5" + Me.desd_Impctl5.Size = New System.Drawing.Size(49, 116) + Me.desd_Impctl5.TabIndex = 12 + Me.desd_Impctl5.문자열자르기 = "" + Me.desd_Impctl5.열번호 = "" + Me.desd_Impctl5.제목 = "조합키" + Me.desd_Impctl5.포맷마스크 = "" + Me.desd_Impctl5.필드명 = Nothing + ' + 'desd_Impctl6 + ' + Me.desd_Impctl6.Dock = System.Windows.Forms.DockStyle.Fill + Me.desd_Impctl6.Location = New System.Drawing.Point(245, 0) + Me.desd_Impctl6.Margin = New System.Windows.Forms.Padding(0) + Me.desd_Impctl6.Name = "desd_Impctl6" + Me.desd_Impctl6.Size = New System.Drawing.Size(49, 116) + Me.desd_Impctl6.TabIndex = 10 + Me.desd_Impctl6.문자열자르기 = "" + Me.desd_Impctl6.열번호 = "" + Me.desd_Impctl6.제목 = "조합키" + Me.desd_Impctl6.포맷마스크 = "" + Me.desd_Impctl6.필드명 = Nothing + ' + 'desd_Impctl3 + ' + Me.desd_Impctl3.Dock = System.Windows.Forms.DockStyle.Fill + Me.desd_Impctl3.Location = New System.Drawing.Point(98, 0) + Me.desd_Impctl3.Margin = New System.Windows.Forms.Padding(0) + Me.desd_Impctl3.Name = "desd_Impctl3" + Me.desd_Impctl3.Size = New System.Drawing.Size(49, 116) + Me.desd_Impctl3.TabIndex = 6 + Me.desd_Impctl3.문자열자르기 = "" + Me.desd_Impctl3.열번호 = "" + Me.desd_Impctl3.제목 = "조합키" + Me.desd_Impctl3.포맷마스크 = "" + Me.desd_Impctl3.필드명 = Nothing + ' + 'desd_Impctl4 + ' + Me.desd_Impctl4.Dock = System.Windows.Forms.DockStyle.Fill + Me.desd_Impctl4.Location = New System.Drawing.Point(147, 0) + Me.desd_Impctl4.Margin = New System.Windows.Forms.Padding(0) + Me.desd_Impctl4.Name = "desd_Impctl4" + Me.desd_Impctl4.Size = New System.Drawing.Size(49, 116) + Me.desd_Impctl4.TabIndex = 7 + Me.desd_Impctl4.문자열자르기 = "" + Me.desd_Impctl4.열번호 = "" + Me.desd_Impctl4.제목 = "조합키" + Me.desd_Impctl4.포맷마스크 = "" + Me.desd_Impctl4.필드명 = Nothing + ' + 'pviewDesDir + ' + Me.pviewDesDir.BackColor = System.Drawing.Color.LightBlue + Me.pviewDesDir.Dock = System.Windows.Forms.DockStyle.Bottom + Me.pviewDesDir.Location = New System.Drawing.Point(3, 165) + Me.pviewDesDir.Name = "pviewDesDir" + Me.pviewDesDir.Size = New System.Drawing.Size(349, 21) + Me.pviewDesDir.TabIndex = 16 + ' + 'desf_pt + ' + Me.desf_pt.ColumnCount = 7 + Me.desf_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28657!)) + Me.desf_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28657!)) + Me.desf_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28657!)) + Me.desf_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28055!)) + Me.desf_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28657!)) + Me.desf_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28657!)) + Me.desf_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28657!)) + Me.desf_pt.Controls.Add(Me.desf_Impctl1, 0, 0) + Me.desf_pt.Controls.Add(Me.desf_Impctl2, 1, 0) + Me.desf_pt.Controls.Add(Me.desf_Impctl7, 6, 0) + Me.desf_pt.Controls.Add(Me.desf_Impctl5, 4, 0) + Me.desf_pt.Controls.Add(Me.desf_Impctl6, 5, 0) + Me.desf_pt.Controls.Add(Me.desf_Impctl3, 2, 0) + Me.desf_pt.Controls.Add(Me.desf_Impctl4, 3, 0) + Me.desf_pt.Dock = System.Windows.Forms.DockStyle.Fill + Me.desf_pt.Location = New System.Drawing.Point(3, 28) + Me.desf_pt.Margin = New System.Windows.Forms.Padding(0) + Me.desf_pt.Name = "desf_pt" + Me.desf_pt.RowCount = 1 + Me.desf_pt.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.desf_pt.Size = New System.Drawing.Size(349, 118) + Me.desf_pt.TabIndex = 15 + ' + 'desf_Impctl1 + ' + Me.desf_Impctl1.Dock = System.Windows.Forms.DockStyle.Fill + Me.desf_Impctl1.Location = New System.Drawing.Point(0, 0) + Me.desf_Impctl1.Margin = New System.Windows.Forms.Padding(0) + Me.desf_Impctl1.Name = "desf_Impctl1" + Me.desf_Impctl1.Size = New System.Drawing.Size(49, 118) + Me.desf_Impctl1.TabIndex = 4 + Me.desf_Impctl1.문자열자르기 = "" + Me.desf_Impctl1.열번호 = "" + Me.desf_Impctl1.제목 = "조합키" + Me.desf_Impctl1.포맷마스크 = "" + Me.desf_Impctl1.필드명 = Nothing + ' + 'desf_Impctl2 + ' + Me.desf_Impctl2.Dock = System.Windows.Forms.DockStyle.Fill + Me.desf_Impctl2.Location = New System.Drawing.Point(49, 0) + Me.desf_Impctl2.Margin = New System.Windows.Forms.Padding(0) + Me.desf_Impctl2.Name = "desf_Impctl2" + Me.desf_Impctl2.Size = New System.Drawing.Size(49, 118) + Me.desf_Impctl2.TabIndex = 5 + Me.desf_Impctl2.문자열자르기 = "" + Me.desf_Impctl2.열번호 = "" + Me.desf_Impctl2.제목 = "조합키" + Me.desf_Impctl2.포맷마스크 = "" + Me.desf_Impctl2.필드명 = Nothing + ' + 'desf_Impctl7 + ' + Me.desf_Impctl7.Dock = System.Windows.Forms.DockStyle.Fill + Me.desf_Impctl7.Location = New System.Drawing.Point(294, 0) + Me.desf_Impctl7.Margin = New System.Windows.Forms.Padding(0) + Me.desf_Impctl7.Name = "desf_Impctl7" + Me.desf_Impctl7.Size = New System.Drawing.Size(55, 118) + Me.desf_Impctl7.TabIndex = 11 + Me.desf_Impctl7.문자열자르기 = "" + Me.desf_Impctl7.열번호 = "" + Me.desf_Impctl7.제목 = "조합키" + Me.desf_Impctl7.포맷마스크 = "" + Me.desf_Impctl7.필드명 = Nothing + ' + 'desf_Impctl5 + ' + Me.desf_Impctl5.Dock = System.Windows.Forms.DockStyle.Fill + Me.desf_Impctl5.Location = New System.Drawing.Point(196, 0) + Me.desf_Impctl5.Margin = New System.Windows.Forms.Padding(0) + Me.desf_Impctl5.Name = "desf_Impctl5" + Me.desf_Impctl5.Size = New System.Drawing.Size(49, 118) + Me.desf_Impctl5.TabIndex = 12 + Me.desf_Impctl5.문자열자르기 = "" + Me.desf_Impctl5.열번호 = "" + Me.desf_Impctl5.제목 = "조합키" + Me.desf_Impctl5.포맷마스크 = "" + Me.desf_Impctl5.필드명 = Nothing + ' + 'desf_Impctl6 + ' + Me.desf_Impctl6.Dock = System.Windows.Forms.DockStyle.Fill + Me.desf_Impctl6.Location = New System.Drawing.Point(245, 0) + Me.desf_Impctl6.Margin = New System.Windows.Forms.Padding(0) + Me.desf_Impctl6.Name = "desf_Impctl6" + Me.desf_Impctl6.Size = New System.Drawing.Size(49, 118) + Me.desf_Impctl6.TabIndex = 10 + Me.desf_Impctl6.문자열자르기 = "" + Me.desf_Impctl6.열번호 = "" + Me.desf_Impctl6.제목 = "조합키" + Me.desf_Impctl6.포맷마스크 = "" + Me.desf_Impctl6.필드명 = Nothing + ' + 'desf_Impctl3 + ' + Me.desf_Impctl3.Dock = System.Windows.Forms.DockStyle.Fill + Me.desf_Impctl3.Location = New System.Drawing.Point(98, 0) + Me.desf_Impctl3.Margin = New System.Windows.Forms.Padding(0) + Me.desf_Impctl3.Name = "desf_Impctl3" + Me.desf_Impctl3.Size = New System.Drawing.Size(49, 118) + Me.desf_Impctl3.TabIndex = 6 + Me.desf_Impctl3.문자열자르기 = "" + Me.desf_Impctl3.열번호 = "" + Me.desf_Impctl3.제목 = "조합키" + Me.desf_Impctl3.포맷마스크 = "" + Me.desf_Impctl3.필드명 = Nothing + ' + 'desf_Impctl4 + ' + Me.desf_Impctl4.Dock = System.Windows.Forms.DockStyle.Fill + Me.desf_Impctl4.Location = New System.Drawing.Point(147, 0) + Me.desf_Impctl4.Margin = New System.Windows.Forms.Padding(0) + Me.desf_Impctl4.Name = "desf_Impctl4" + Me.desf_Impctl4.Size = New System.Drawing.Size(49, 118) + Me.desf_Impctl4.TabIndex = 7 + Me.desf_Impctl4.문자열자르기 = "" + Me.desf_Impctl4.열번호 = "" + Me.desf_Impctl4.제목 = "조합키" + Me.desf_Impctl4.포맷마스크 = "" + Me.desf_Impctl4.필드명 = Nothing + ' + 'ToolStrip4 + ' + Me.ToolStrip4.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.ToolStrip4.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripLabel4}) + Me.ToolStrip4.Location = New System.Drawing.Point(3, 3) + Me.ToolStrip4.Name = "ToolStrip4" + Me.ToolStrip4.Size = New System.Drawing.Size(349, 25) + Me.ToolStrip4.TabIndex = 0 + Me.ToolStrip4.Text = "ToolStrip4" + ' + 'ToolStripLabel4 + ' + Me.ToolStripLabel4.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.ToolStripLabel4.Name = "ToolStripLabel4" + Me.ToolStripLabel4.Size = New System.Drawing.Size(57, 22) + Me.ToolStripLabel4.Text = "대상파일" + ' + 'pviewDesFile + ' + Me.pviewDesFile.BackColor = System.Drawing.Color.LightBlue + Me.pviewDesFile.Dock = System.Windows.Forms.DockStyle.Bottom + Me.pviewDesFile.Location = New System.Drawing.Point(3, 146) + Me.pviewDesFile.Name = "pviewDesFile" + Me.pviewDesFile.Size = New System.Drawing.Size(349, 21) + Me.pviewDesFile.TabIndex = 16 + ' + 'DataSet1 + ' + Me.DataSet1.DataSetName = "ireaDataSet" + Me.DataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema + ' + 'pnTargetFile + ' + Me.pnTargetFile.BackColor = System.Drawing.SystemColors.Control + Me.pnTargetFile.Controls.Add(Me.desf_pt) + Me.pnTargetFile.Controls.Add(Me.pviewDesFile) + Me.pnTargetFile.Controls.Add(Me.ToolStrip4) + Me.pnTargetFile.Dock = System.Windows.Forms.DockStyle.Top + Me.pnTargetFile.Location = New System.Drawing.Point(3, 3) + Me.pnTargetFile.Name = "pnTargetFile" + Me.pnTargetFile.Padding = New System.Windows.Forms.Padding(3) + Me.pnTargetFile.Size = New System.Drawing.Size(355, 170) + Me.pnTargetFile.TabIndex = 21 + ' + 'Panel4 + ' + Me.Panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.Panel4.Controls.Add(Me.pnSrcDir) + Me.Panel4.Controls.Add(Me.pnTargetDir) + Me.Panel4.Controls.Add(Me.pnTargetFile) + Me.Panel4.Dock = System.Windows.Forms.DockStyle.Right + Me.Panel4.Location = New System.Drawing.Point(718, 3) + Me.Panel4.Margin = New System.Windows.Forms.Padding(0) + Me.Panel4.Name = "Panel4" + Me.Panel4.Padding = New System.Windows.Forms.Padding(3) + Me.Panel4.Size = New System.Drawing.Size(363, 555) + Me.Panel4.TabIndex = 22 + ' + 'pnSrcDir + ' + Me.pnSrcDir.BackColor = System.Drawing.SystemColors.Control + Me.pnSrcDir.Controls.Add(Me.srcd_pt) + Me.pnSrcDir.Controls.Add(Me.pviewSrcDir) + Me.pnSrcDir.Controls.Add(Me.tb_workdir) + Me.pnSrcDir.Controls.Add(Me.ToolStrip5) + Me.pnSrcDir.Dock = System.Windows.Forms.DockStyle.Top + Me.pnSrcDir.Location = New System.Drawing.Point(3, 362) + Me.pnSrcDir.Name = "pnSrcDir" + Me.pnSrcDir.Padding = New System.Windows.Forms.Padding(3) + Me.pnSrcDir.Size = New System.Drawing.Size(355, 189) + Me.pnSrcDir.TabIndex = 23 + ' + 'srcd_pt + ' + Me.srcd_pt.ColumnCount = 7 + Me.srcd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28569!)) + Me.srcd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28568!)) + Me.srcd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28568!)) + Me.srcd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28589!)) + Me.srcd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28568!)) + Me.srcd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28568!)) + Me.srcd_pt.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28568!)) + Me.srcd_pt.Controls.Add(Me.im1, 0, 0) + Me.srcd_pt.Controls.Add(Me.im2, 1, 0) + Me.srcd_pt.Controls.Add(Me.im7, 6, 0) + Me.srcd_pt.Controls.Add(Me.im5, 4, 0) + Me.srcd_pt.Controls.Add(Me.im6, 5, 0) + Me.srcd_pt.Controls.Add(Me.im3, 2, 0) + Me.srcd_pt.Controls.Add(Me.im4, 3, 0) + Me.srcd_pt.Dock = System.Windows.Forms.DockStyle.Fill + Me.srcd_pt.Enabled = False + Me.srcd_pt.Location = New System.Drawing.Point(3, 49) + Me.srcd_pt.Margin = New System.Windows.Forms.Padding(0) + Me.srcd_pt.Name = "srcd_pt" + Me.srcd_pt.RowCount = 1 + Me.srcd_pt.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.srcd_pt.Size = New System.Drawing.Size(349, 116) + Me.srcd_pt.TabIndex = 15 + ' + 'im1 + ' + Me.im1.Dock = System.Windows.Forms.DockStyle.Fill + Me.im1.Location = New System.Drawing.Point(0, 0) + Me.im1.Margin = New System.Windows.Forms.Padding(0) + Me.im1.Name = "im1" + Me.im1.Size = New System.Drawing.Size(49, 116) + Me.im1.TabIndex = 4 + Me.im1.문자열자르기 = "" + Me.im1.열번호 = "" + Me.im1.제목 = "조합키" + Me.im1.포맷마스크 = "" + Me.im1.필드명 = Nothing + ' + 'im2 + ' + Me.im2.Dock = System.Windows.Forms.DockStyle.Fill + Me.im2.Location = New System.Drawing.Point(49, 0) + Me.im2.Margin = New System.Windows.Forms.Padding(0) + Me.im2.Name = "im2" + Me.im2.Size = New System.Drawing.Size(49, 116) + Me.im2.TabIndex = 5 + Me.im2.문자열자르기 = "" + Me.im2.열번호 = "" + Me.im2.제목 = "조합키" + Me.im2.포맷마스크 = "" + Me.im2.필드명 = Nothing + ' + 'im7 + ' + Me.im7.Dock = System.Windows.Forms.DockStyle.Fill + Me.im7.Location = New System.Drawing.Point(294, 0) + Me.im7.Margin = New System.Windows.Forms.Padding(0) + Me.im7.Name = "im7" + Me.im7.Size = New System.Drawing.Size(55, 116) + Me.im7.TabIndex = 11 + Me.im7.문자열자르기 = "" + Me.im7.열번호 = "" + Me.im7.제목 = "조합키" + Me.im7.포맷마스크 = "" + Me.im7.필드명 = Nothing + ' + 'im5 + ' + Me.im5.Dock = System.Windows.Forms.DockStyle.Fill + Me.im5.Location = New System.Drawing.Point(196, 0) + Me.im5.Margin = New System.Windows.Forms.Padding(0) + Me.im5.Name = "im5" + Me.im5.Size = New System.Drawing.Size(49, 116) + Me.im5.TabIndex = 12 + Me.im5.문자열자르기 = "" + Me.im5.열번호 = "" + Me.im5.제목 = "조합키" + Me.im5.포맷마스크 = "" + Me.im5.필드명 = Nothing + ' + 'im6 + ' + Me.im6.Dock = System.Windows.Forms.DockStyle.Fill + Me.im6.Location = New System.Drawing.Point(245, 0) + Me.im6.Margin = New System.Windows.Forms.Padding(0) + Me.im6.Name = "im6" + Me.im6.Size = New System.Drawing.Size(49, 116) + Me.im6.TabIndex = 10 + Me.im6.문자열자르기 = "" + Me.im6.열번호 = "" + Me.im6.제목 = "조합키" + Me.im6.포맷마스크 = "" + Me.im6.필드명 = Nothing + ' + 'im3 + ' + Me.im3.Dock = System.Windows.Forms.DockStyle.Fill + Me.im3.Location = New System.Drawing.Point(98, 0) + Me.im3.Margin = New System.Windows.Forms.Padding(0) + Me.im3.Name = "im3" + Me.im3.Size = New System.Drawing.Size(49, 116) + Me.im3.TabIndex = 6 + Me.im3.문자열자르기 = "" + Me.im3.열번호 = "" + Me.im3.제목 = "조합키" + Me.im3.포맷마스크 = "" + Me.im3.필드명 = Nothing + ' + 'im4 + ' + Me.im4.Dock = System.Windows.Forms.DockStyle.Fill + Me.im4.Location = New System.Drawing.Point(147, 0) + Me.im4.Margin = New System.Windows.Forms.Padding(0) + Me.im4.Name = "im4" + Me.im4.Size = New System.Drawing.Size(49, 116) + Me.im4.TabIndex = 7 + Me.im4.문자열자르기 = "" + Me.im4.열번호 = "" + Me.im4.제목 = "조합키" + Me.im4.포맷마스크 = "" + Me.im4.필드명 = Nothing + ' + 'pviewSrcDir + ' + Me.pviewSrcDir.BackColor = System.Drawing.Color.LightBlue + Me.pviewSrcDir.Dock = System.Windows.Forms.DockStyle.Bottom + Me.pviewSrcDir.Location = New System.Drawing.Point(3, 165) + Me.pviewSrcDir.Name = "pviewSrcDir" + Me.pviewSrcDir.Size = New System.Drawing.Size(349, 21) + Me.pviewSrcDir.TabIndex = 16 + ' + 'tb_workdir + ' + Me.tb_workdir.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer)) + Me.tb_workdir.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.tb_workdir.Dock = System.Windows.Forms.DockStyle.Top + Me.tb_workdir.Location = New System.Drawing.Point(3, 28) + Me.tb_workdir.Name = "tb_workdir" + Me.tb_workdir.Size = New System.Drawing.Size(349, 21) + Me.tb_workdir.TabIndex = 1 + ' + 'ToolStrip5 + ' + Me.ToolStrip5.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.ToolStrip5.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripLabel7, Me.ToolStripSeparator10, Me.bt_workdir, Me.srcd_find_ftp, Me.ToolStripButton4, Me.src_chk_merge}) + Me.ToolStrip5.Location = New System.Drawing.Point(3, 3) + Me.ToolStrip5.Name = "ToolStrip5" + Me.ToolStrip5.Size = New System.Drawing.Size(349, 25) + Me.ToolStrip5.TabIndex = 0 + Me.ToolStrip5.Text = "ToolStrip5" + ' + 'ToolStripLabel7 + ' + Me.ToolStripLabel7.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.ToolStripLabel7.Name = "ToolStripLabel7" + Me.ToolStripLabel7.Size = New System.Drawing.Size(57, 22) + Me.ToolStripLabel7.Text = "원본폴더" + ' + 'ToolStripSeparator10 + ' + Me.ToolStripSeparator10.Name = "ToolStripSeparator10" + Me.ToolStripSeparator10.Size = New System.Drawing.Size(6, 25) + ' + 'bt_workdir + ' + Me.bt_workdir.ImageTransparentColor = System.Drawing.Color.Magenta + Me.bt_workdir.Name = "bt_workdir" + Me.bt_workdir.Size = New System.Drawing.Size(33, 22) + Me.bt_workdir.Text = "찾기" + ' + 'srcd_find_ftp + ' + Me.srcd_find_ftp.ImageTransparentColor = System.Drawing.Color.Magenta + Me.srcd_find_ftp.Name = "srcd_find_ftp" + Me.srcd_find_ftp.Size = New System.Drawing.Size(32, 22) + Me.srcd_find_ftp.Text = "FTP" + ' + 'ToolStripButton4 + ' + Me.ToolStripButton4.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right + Me.ToolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.ToolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton4.Name = "ToolStripButton4" + Me.ToolStripButton4.Size = New System.Drawing.Size(23, 22) + Me.ToolStripButton4.Text = "ToolStripButton4" + ' + 'src_chk_merge + ' + Me.src_chk_merge.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right + Me.src_chk_merge.CheckOnClick = True + Me.src_chk_merge.ImageTransparentColor = System.Drawing.Color.Magenta + Me.src_chk_merge.Name = "src_chk_merge" + Me.src_chk_merge.Size = New System.Drawing.Size(33, 22) + Me.src_chk_merge.Text = "조합" + Me.src_chk_merge.ToolTipText = "사용시 기본대상폴더아래에 조합된 폴더명이 위치합니다" + ' + 'pnTargetDir + ' + Me.pnTargetDir.BackColor = System.Drawing.SystemColors.Control + Me.pnTargetDir.Controls.Add(Me.desd_pt) + Me.pnTargetDir.Controls.Add(Me.pviewDesDir) + Me.pnTargetDir.Controls.Add(Me.desd_tb_path) + Me.pnTargetDir.Controls.Add(Me.ToolStrip3) + Me.pnTargetDir.Dock = System.Windows.Forms.DockStyle.Top + Me.pnTargetDir.Location = New System.Drawing.Point(3, 173) + Me.pnTargetDir.Name = "pnTargetDir" + Me.pnTargetDir.Padding = New System.Windows.Forms.Padding(3) + Me.pnTargetDir.Size = New System.Drawing.Size(355, 189) + Me.pnTargetDir.TabIndex = 22 + ' + 'C1Ribbon1 + ' + Me.C1Ribbon1.ApplicationMenuHolder = Me.RibbonApplicationMenu1 + Me.C1Ribbon1.AutoSizeElement = C1.Framework.AutoSizeElement.Width + Me.C1Ribbon1.BottomToolBarHolder = Me.RibbonBottomToolBar1 + Me.C1Ribbon1.ConfigToolBarHolder = Me.RibbonConfigToolBar1 + Me.C1Ribbon1.Location = New System.Drawing.Point(0, 0) + Me.C1Ribbon1.Name = "C1Ribbon1" + Me.C1Ribbon1.QatHolder = Me.RibbonQat1 + Me.C1Ribbon1.Size = New System.Drawing.Size(1092, 155) + Me.C1Ribbon1.Tabs.Add(Me.RibbonTab1) + Me.C1Ribbon1.Tabs.Add(Me.RibbonTab2) + Me.C1Ribbon1.TopToolBarHolder = Me.RibbonTopToolBar1 + ' + 'RibbonApplicationMenu1 + ' + Me.RibbonApplicationMenu1.Name = "RibbonApplicationMenu1" + ' + 'RibbonBottomToolBar1 + ' + Me.RibbonBottomToolBar1.Name = "RibbonBottomToolBar1" + ' + 'RibbonConfigToolBar1 + ' + Me.RibbonConfigToolBar1.Name = "RibbonConfigToolBar1" + ' + 'RibbonQat1 + ' + Me.RibbonQat1.Name = "RibbonQat1" + ' + 'RibbonTab1 + ' + Me.RibbonTab1.Groups.Add(Me.RibbonGroup4) + Me.RibbonTab1.Groups.Add(Me.RibbonGroup1) + Me.RibbonTab1.Groups.Add(Me.RibbonGroup7) + Me.RibbonTab1.Groups.Add(Me.RibbonGroup3) + Me.RibbonTab1.Groups.Add(Me.RibbonGroup6) + Me.RibbonTab1.Groups.Add(Me.RibbonGroup2) + Me.RibbonTab1.Groups.Add(Me.RibbonGroup8) + Me.RibbonTab1.Name = "RibbonTab1" + Me.RibbonTab1.Text = "메뉴" + ' + 'RibbonGroup4 + ' + Me.RibbonGroup4.Items.Add(Me.RibbonButton8) + Me.RibbonGroup4.Items.Add(Me.RibbonButton12) + Me.RibbonGroup4.Items.Add(Me.RibbonButton13) + Me.RibbonGroup4.Name = "RibbonGroup4" + Me.RibbonGroup4.Text = "매크로" + ' + 'RibbonButton8 + ' + Me.RibbonButton8.Name = "RibbonButton8" + Me.RibbonButton8.SupportedGroupSizing = C1.Win.C1Ribbon.SupportedGroupSizing.TextAlwaysVisible + Me.RibbonButton8.Text = "신규" + ' + 'RibbonButton12 + ' + Me.RibbonButton12.Name = "RibbonButton12" + Me.RibbonButton12.Text = "저장" + ' + 'RibbonButton13 + ' + Me.RibbonButton13.Name = "RibbonButton13" + Me.RibbonButton13.Text = "삭제" + ' + 'RibbonGroup1 + ' + Me.RibbonGroup1.Items.Add(Me.bt_run) + Me.RibbonGroup1.Items.Add(Me.RibbonSeparator5) + Me.RibbonGroup1.Items.Add(Me.chkReplay) + Me.RibbonGroup1.Items.Add(Me.chkAutoRun) + Me.RibbonGroup1.Items.Add(Me.chkHide) + Me.RibbonGroup1.Items.Add(Me.RibbonSeparator3) + Me.RibbonGroup1.Items.Add(Me.btCopy) + Me.RibbonGroup1.Items.Add(Me.btDel) + Me.RibbonGroup1.Items.Add(Me.btMove) + Me.RibbonGroup1.Name = "RibbonGroup1" + Me.RibbonGroup1.Text = "작업" + ' + 'bt_run + ' + Me.bt_run.LargeImage = CType(resources.GetObject("bt_run.LargeImage"), System.Drawing.Image) + Me.bt_run.Name = "bt_run" + Me.bt_run.Text = "작업실행" + ' + 'RibbonSeparator5 + ' + Me.RibbonSeparator5.Name = "RibbonSeparator5" + ' + 'chkReplay + ' + Me.chkReplay.Name = "chkReplay" + Me.chkReplay.Text = "이어하기" + Me.chkReplay.ToolTip = "동일한 기존내역이 존재할 경우 해당 정보를 이용합니다." + ' + 'chkAutoRun + ' + Me.chkAutoRun.Name = "chkAutoRun" + Me.chkAutoRun.Text = "자동실행" + Me.chkAutoRun.ToolTip = "목록수집이 완료된 후 자동으로 실행합니다." + ' + 'chkHide + ' + Me.chkHide.Name = "chkHide" + Me.chkHide.Text = "숨김처리" + ' + 'RibbonSeparator3 + ' + Me.RibbonSeparator3.Name = "RibbonSeparator3" + ' + 'btCopy + ' + Me.btCopy.Name = "btCopy" + Me.btCopy.SupportedGroupSizing = C1.Win.C1Ribbon.SupportedGroupSizing.TextAlwaysVisible + Me.btCopy.Text = "복사" + ' + 'btDel + ' + Me.btDel.Name = "btDel" + Me.btDel.Text = "삭제" + ' + 'btMove + ' + Me.btMove.Name = "btMove" + Me.btMove.Text = "이동" + ' + 'RibbonGroup7 + ' + Me.RibbonGroup7.Items.Add(Me.btOpenFile) + Me.RibbonGroup7.Items.Add(Me.btMakeNewList) + Me.RibbonGroup7.Name = "RibbonGroup7" + Me.RibbonGroup7.Text = "원본목록" + ' + 'btOpenFile + ' + Me.btOpenFile.Name = "btOpenFile" + Me.btOpenFile.SmallImage = CType(resources.GetObject("btOpenFile.SmallImage"), System.Drawing.Image) + Me.btOpenFile.SupportedGroupSizing = C1.Win.C1Ribbon.SupportedGroupSizing.LargeImageOnly + Me.btOpenFile.Text = "불러오기" + ' + 'btMakeNewList + ' + Me.btMakeNewList.Name = "btMakeNewList" + Me.btMakeNewList.SmallImage = CType(resources.GetObject("btMakeNewList.SmallImage"), System.Drawing.Image) + Me.btMakeNewList.Text = "직접작성" + ' + 'RibbonGroup3 + ' + Me.RibbonGroup3.Items.Add(Me.tb_sttrange) + Me.RibbonGroup3.Items.Add(Me.tb_endrange) + Me.RibbonGroup3.Name = "RibbonGroup3" + Me.RibbonGroup3.Text = "대상범위" + ' + 'tb_sttrange + ' + Me.tb_sttrange.Label = "시작" + Me.tb_sttrange.MaxLength = 200 + Me.tb_sttrange.Name = "tb_sttrange" + Me.tb_sttrange.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + Me.tb_sttrange.TextAreaWidth = 30 + ' + 'tb_endrange + ' + Me.tb_endrange.Label = "종료" + Me.tb_endrange.MaxLength = 200 + Me.tb_endrange.Name = "tb_endrange" + Me.tb_endrange.SupportedGroupSizing = C1.Win.C1Ribbon.SupportedGroupSizing.TextAlwaysVisible + Me.tb_endrange.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + Me.tb_endrange.TextAreaWidth = 30 + ' + 'RibbonGroup6 + ' + Me.RibbonGroup6.Items.Add(Me.tb_ext) + Me.RibbonGroup6.Items.Add(Me.RibbonButton11) + Me.RibbonGroup6.Items.Add(Me.RibbonSeparator4) + Me.RibbonGroup6.Items.Add(Me.chk_autorow) + Me.RibbonGroup6.Items.Add(Me.chk_subdir) + Me.RibbonGroup6.Items.Add(Me.RibbonSeparator2) + Me.RibbonGroup6.Items.Add(Me.bT_netdrvconn) + Me.RibbonGroup6.Items.Add(Me.bt_netdrvdel) + Me.RibbonGroup6.Name = "RibbonGroup6" + Me.RibbonGroup6.Text = "기능" + ' + 'tb_ext + ' + Me.tb_ext.Label = "확장자" + Me.tb_ext.Name = "tb_ext" + Me.tb_ext.SupportedGroupSizing = C1.Win.C1Ribbon.SupportedGroupSizing.TextAlwaysVisible + Me.tb_ext.Text = "JPG" + Me.tb_ext.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + Me.tb_ext.TextAreaWidth = 56 + ' + 'RibbonButton11 + ' + Me.RibbonButton11.Name = "RibbonButton11" + Me.RibbonButton11.SupportedGroupSizing = C1.Win.C1Ribbon.SupportedGroupSizing.LargeImageOnly + Me.RibbonButton11.Text = "상태창" + ' + 'RibbonSeparator4 + ' + Me.RibbonSeparator4.Name = "RibbonSeparator4" + ' + 'chk_autorow + ' + Me.chk_autorow.Checked = True + Me.chk_autorow.Name = "chk_autorow" + Me.chk_autorow.Text = "줄번호자동계산" + ' + 'chk_subdir + ' + Me.chk_subdir.Name = "chk_subdir" + Me.chk_subdir.Text = "하위폴더검색" + ' + 'RibbonSeparator2 + ' + Me.RibbonSeparator2.Name = "RibbonSeparator2" + ' + 'bT_netdrvconn + ' + Me.bT_netdrvconn.Name = "bT_netdrvconn" + Me.bT_netdrvconn.SupportedGroupSizing = C1.Win.C1Ribbon.SupportedGroupSizing.LargeImageOnly + Me.bT_netdrvconn.Text = "NetDrive 연결" + ' + 'bt_netdrvdel + ' + Me.bt_netdrvdel.Name = "bt_netdrvdel" + Me.bt_netdrvdel.SupportedGroupSizing = C1.Win.C1Ribbon.SupportedGroupSizing.LargeImageOnly + Me.bt_netdrvdel.Text = "NetDrive 제거" + ' + 'RibbonGroup2 + ' + Me.RibbonGroup2.Items.Add(Me.cbBakType) + Me.RibbonGroup2.Items.Add(Me.cbBakTarget) + Me.RibbonGroup2.Items.Add(Me.RibbonSeparator1) + Me.RibbonGroup2.Items.Add(Me.RibbonButton1) + Me.RibbonGroup2.Name = "RibbonGroup2" + Me.RibbonGroup2.Text = "백업" + ' + 'cbBakType + ' + Me.cbBakType.Items.Add(Me.RibbonButton2) + Me.cbBakType.Items.Add(Me.RibbonButton3) + Me.cbBakType.Items.Add(Me.RibbonButton4) + Me.cbBakType.Items.Add(Me.RibbonButton5) + Me.cbBakType.Label = "방법" + Me.cbBakType.MaxLength = 300 + Me.cbBakType.Name = "cbBakType" + Me.cbBakType.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + Me.cbBakType.TextAreaWidth = 100 + ' + 'RibbonButton2 + ' + Me.RibbonButton2.Description = "백업기능사용하지않음" + Me.RibbonButton2.Name = "RibbonButton2" + Me.RibbonButton2.Text = "백업안함" + Me.RibbonButton2.ToolTip = "백업기능사용하지않음" + ' + 'RibbonButton3 + ' + Me.RibbonButton3.Description = "사용자에의해 지정된 폴더" + Me.RibbonButton3.Name = "RibbonButton3" + Me.RibbonButton3.Text = "사용자지정" + Me.RibbonButton3.ToolTip = "사용자에의해 지정된 폴더" + ' + 'RibbonButton4 + ' + Me.RibbonButton4.Description = "대상폴더아래에 백업폴더가 생성됨" + Me.RibbonButton4.Name = "RibbonButton4" + Me.RibbonButton4.Text = "원본폴더" + Me.RibbonButton4.ToolTip = "대상폴더아래에 백업폴더가 생성됨" + ' + 'RibbonButton5 + ' + Me.RibbonButton5.Description = "대상폴더위에 백업폴더가 생성됨" + Me.RibbonButton5.Name = "RibbonButton5" + Me.RibbonButton5.Text = "상위폴더" + Me.RibbonButton5.ToolTip = "대상폴더위에 백업폴더가 생성됨" + ' + 'cbBakTarget + ' + Me.cbBakTarget.Items.Add(Me.RibbonButton6) + Me.cbBakTarget.Items.Add(Me.RibbonButton7) + Me.cbBakTarget.Label = "대상" + Me.cbBakTarget.Name = "cbBakTarget" + Me.cbBakTarget.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + Me.cbBakTarget.TextAreaWidth = 100 + ' + 'RibbonButton6 + ' + Me.RibbonButton6.Description = "대상파일이 속해있는 폴더를 백업합니다." + Me.RibbonButton6.Name = "RibbonButton6" + Me.RibbonButton6.Text = "폴더" + Me.RibbonButton6.ToolTip = "대상파일이 속해있는 폴더를 백업합니다." + ' + 'RibbonButton7 + ' + Me.RibbonButton7.Description = "대상 파일을 백업합니다" + Me.RibbonButton7.Name = "RibbonButton7" + Me.RibbonButton7.Text = "파일" + Me.RibbonButton7.ToolTip = "대상 파일을 백업합니다" + ' + 'RibbonSeparator1 + ' + Me.RibbonSeparator1.Name = "RibbonSeparator1" + ' + 'RibbonButton1 + ' + Me.RibbonButton1.Name = "RibbonButton1" + Me.RibbonButton1.SmallImage = CType(resources.GetObject("RibbonButton1.SmallImage"), System.Drawing.Image) + Me.RibbonButton1.SupportedGroupSizing = C1.Win.C1Ribbon.SupportedGroupSizing.TextAlwaysVisible + Me.RibbonButton1.Text = "폴더선택" + ' + 'RibbonGroup8 + ' + Me.RibbonGroup8.Items.Add(Me.RibbonButton10) + Me.RibbonGroup8.Name = "RibbonGroup8" + Me.RibbonGroup8.Text = "메뉴" + ' + 'RibbonButton10 + ' + Me.RibbonButton10.LargeImage = CType(resources.GetObject("RibbonButton10.LargeImage"), System.Drawing.Image) + Me.RibbonButton10.Name = "RibbonButton10" + Me.RibbonButton10.SupportedGroupSizing = C1.Win.C1Ribbon.SupportedGroupSizing.LargeImageOnly + Me.RibbonButton10.Text = "종료" + Me.RibbonButton10.TextImageRelation = C1.Win.C1Ribbon.TextImageRelation.ImageAboveText + ' + 'RibbonTab2 + ' + Me.RibbonTab2.Groups.Add(Me.RibbonGroup5) + Me.RibbonTab2.Name = "RibbonTab2" + Me.RibbonTab2.Text = "기타" + ' + 'RibbonGroup5 + ' + Me.RibbonGroup5.Items.Add(Me.btMakeCache) + Me.RibbonGroup5.Name = "RibbonGroup5" + Me.RibbonGroup5.Text = "기능" + ' + 'btMakeCache + ' + Me.btMakeCache.Name = "btMakeCache" + Me.btMakeCache.Text = "캐쉬파일생성" + ' + 'RibbonTopToolBar1 + ' + Me.RibbonTopToolBar1.Name = "RibbonTopToolBar1" + ' + 'C1StatusBar1 + ' + Me.C1StatusBar1.AutoSizeElement = C1.Framework.AutoSizeElement.Width + Me.C1StatusBar1.LeftPaneItems.Add(Me.RibbonLabel1) + Me.C1StatusBar1.LeftPaneItems.Add(Me.tb_bakdir1) + Me.C1StatusBar1.LeftPaneItems.Add(Me.lb_msg) + Me.C1StatusBar1.LeftPaneItems.Add(Me.RibbonLabel2) + Me.C1StatusBar1.Location = New System.Drawing.Point(0, 742) + Me.C1StatusBar1.Name = "C1StatusBar1" + Me.C1StatusBar1.RightPaneItems.Add(Me.lb_cnt1) + Me.C1StatusBar1.RightPaneItems.Add(Me.lb_cnt2) + Me.C1StatusBar1.RightPaneItems.Add(Me.prb1) + Me.C1StatusBar1.Size = New System.Drawing.Size(1092, 23) + ' + 'RibbonLabel1 + ' + Me.RibbonLabel1.Name = "RibbonLabel1" + Me.RibbonLabel1.Text = "백업폴더" + ' + 'tb_bakdir1 + ' + Me.tb_bakdir1.Name = "tb_bakdir1" + Me.tb_bakdir1.Text = "[*]" + ' + 'lb_msg + ' + Me.lb_msg.Name = "lb_msg" + Me.lb_msg.Text = "Message" + ' + 'RibbonLabel2 + ' + Me.RibbonLabel2.Name = "RibbonLabel2" + Me.RibbonLabel2.Text = "●" + ' + 'lb_cnt1 + ' + Me.lb_cnt1.Name = "lb_cnt1" + Me.lb_cnt1.Text = "0/0" + ' + 'lb_cnt2 + ' + Me.lb_cnt2.Name = "lb_cnt2" + Me.lb_cnt2.Text = "0/0" + ' + 'prb1 + ' + Me.prb1.Name = "prb1" + ' + 'cmb_macro + ' + Me.cmb_macro.Dock = System.Windows.Forms.DockStyle.Top + Me.cmb_macro.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.cmb_macro.Font = New System.Drawing.Font("맑은 고딕", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.cmb_macro.FormattingEnabled = True + Me.cmb_macro.Location = New System.Drawing.Point(5, 0) + Me.cmb_macro.Name = "cmb_macro" + Me.cmb_macro.Size = New System.Drawing.Size(503, 29) + Me.cmb_macro.TabIndex = 25 + ' + 'Panel1 + ' + Me.Panel1.Controls.Add(Me.RichTextBox1) + Me.Panel1.Controls.Add(Me.TableLayoutPanel3) + Me.Panel1.Controls.Add(Me.cmb_macro) + Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill + Me.Panel1.Location = New System.Drawing.Point(208, 3) + Me.Panel1.Name = "Panel1" + Me.Panel1.Padding = New System.Windows.Forms.Padding(5, 0, 2, 0) + Me.Panel1.Size = New System.Drawing.Size(510, 555) + Me.Panel1.TabIndex = 26 + ' + 'RichTextBox1 + ' + Me.RichTextBox1.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer)) + Me.RichTextBox1.Dock = System.Windows.Forms.DockStyle.Fill + Me.RichTextBox1.Font = New System.Drawing.Font("맑은 고딕", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.RichTextBox1.ForeColor = System.Drawing.Color.White + Me.RichTextBox1.Location = New System.Drawing.Point(5, 379) + Me.RichTextBox1.Name = "RichTextBox1" + Me.RichTextBox1.Size = New System.Drawing.Size(503, 176) + Me.RichTextBox1.TabIndex = 26 + Me.RichTextBox1.Text = "Log Area" + ' + 'TabControl1 + ' + Me.TabControl1.Controls.Add(Me.TabPage1) + Me.TabControl1.Controls.Add(Me.TabPage2) + Me.TabControl1.Dock = System.Windows.Forms.DockStyle.Fill + Me.TabControl1.Location = New System.Drawing.Point(0, 155) + Me.TabControl1.Name = "TabControl1" + Me.TabControl1.SelectedIndex = 0 + Me.TabControl1.Size = New System.Drawing.Size(1092, 587) + Me.TabControl1.TabIndex = 29 + ' + 'TabPage1 + ' + Me.TabPage1.Controls.Add(Me.Panel1) + Me.TabPage1.Controls.Add(Me.Panel4) + Me.TabPage1.Controls.Add(Me.TableLayoutPanel2) + Me.TabPage1.Location = New System.Drawing.Point(4, 22) + Me.TabPage1.Name = "TabPage1" + Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage1.Size = New System.Drawing.Size(1084, 561) + Me.TabPage1.TabIndex = 0 + Me.TabPage1.Text = "설정" + Me.TabPage1.UseVisualStyleBackColor = True + ' + 'TabPage2 + ' + Me.TabPage2.Controls.Add(Me.lvSchedule) + Me.TabPage2.Location = New System.Drawing.Point(4, 22) + Me.TabPage2.Name = "TabPage2" + Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage2.Size = New System.Drawing.Size(1084, 561) + Me.TabPage2.TabIndex = 1 + Me.TabPage2.Text = "진행" + Me.TabPage2.UseVisualStyleBackColor = True + ' + 'lvSchedule + ' + Me.lvSchedule.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader3, Me.ColumnHeader4, Me.ColumnHeader5, Me.ColumnHeader6, Me.ColumnHeader7}) + Me.lvSchedule.Dock = System.Windows.Forms.DockStyle.Fill + Me.lvSchedule.FullRowSelect = True + Me.lvSchedule.GridLines = True + Me.lvSchedule.Location = New System.Drawing.Point(3, 3) + Me.lvSchedule.Name = "lvSchedule" + Me.lvSchedule.Size = New System.Drawing.Size(1078, 555) + Me.lvSchedule.TabIndex = 7 + Me.lvSchedule.UseCompatibleStateImageBehavior = False + Me.lvSchedule.View = System.Windows.Forms.View.Details + ' + 'ColumnHeader3 + ' + Me.ColumnHeader3.Text = "작업" + Me.ColumnHeader3.Width = 97 + ' + 'ColumnHeader4 + ' + Me.ColumnHeader4.Text = "대상" + Me.ColumnHeader4.Width = 278 + ' + 'ColumnHeader5 + ' + Me.ColumnHeader5.Text = "설명" + Me.ColumnHeader5.Width = 310 + ' + 'ColumnHeader6 + ' + Me.ColumnHeader6.Text = "상태" + Me.ColumnHeader6.Width = 118 + ' + 'ColumnHeader7 + ' + Me.ColumnHeader7.Text = "번호" + ' + 'NotifyIcon1 + ' + Me.NotifyIcon1.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info + Me.NotifyIcon1.BalloonTipTitle = "FileManager" + Me.NotifyIcon1.Text = "NotifyIcon1" + Me.NotifyIcon1.Visible = True + ' + 'MDiMain + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(1092, 765) + Me.Controls.Add(Me.TabControl1) + Me.Controls.Add(Me.C1StatusBar1) + Me.Controls.Add(Me.C1Ribbon1) + Me.Name = "MDiMain" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "파일관리자 최종수정일 : 2008-09-17 09:51 PM (tindevil@nate.com)" + Me.TableLayoutPanel2.ResumeLayout(False) + Me.TableLayoutPanel2.PerformLayout() + Me.ToolStrip1.ResumeLayout(False) + Me.ToolStrip1.PerformLayout() + Me.TableLayoutPanel3.ResumeLayout(False) + Me.TableLayoutPanel3.PerformLayout() + Me.src_tp.ResumeLayout(False) + CType(Me.src_view1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.src_view1_Sheet1, System.ComponentModel.ISupportInitialize).EndInit() + Me.ToolStrip3.ResumeLayout(False) + Me.ToolStrip3.PerformLayout() + Me.desd_pt.ResumeLayout(False) + Me.desf_pt.ResumeLayout(False) + Me.ToolStrip4.ResumeLayout(False) + Me.ToolStrip4.PerformLayout() + CType(Me.DataSet1, System.ComponentModel.ISupportInitialize).EndInit() + Me.pnTargetFile.ResumeLayout(False) + Me.pnTargetFile.PerformLayout() + Me.Panel4.ResumeLayout(False) + Me.pnSrcDir.ResumeLayout(False) + Me.pnSrcDir.PerformLayout() + Me.srcd_pt.ResumeLayout(False) + Me.ToolStrip5.ResumeLayout(False) + Me.ToolStrip5.PerformLayout() + Me.pnTargetDir.ResumeLayout(False) + Me.pnTargetDir.PerformLayout() + CType(Me.C1Ribbon1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.C1StatusBar1, System.ComponentModel.ISupportInitialize).EndInit() + Me.Panel1.ResumeLayout(False) + Me.TabControl1.ResumeLayout(False) + Me.TabPage1.ResumeLayout(False) + Me.TabPage2.ResumeLayout(False) + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents ToolTip As System.Windows.Forms.ToolTip + Friend WithEvents Timer1 As System.Windows.Forms.Timer + Friend WithEvents DataSet1 As FileManager.ireaDataSet + Friend WithEvents TableLayoutPanel2 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents ToolStrip1 As System.Windows.Forms.ToolStrip + Friend WithEvents btAddSubDir As System.Windows.Forms.ToolStripButton + Friend WithEvents btDeleteSubDir As System.Windows.Forms.ToolStripButton + Friend WithEvents TableLayoutPanel3 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents src_view1 As FarPoint.Win.Spread.FpSpread + Friend WithEvents src_view1_Sheet1 As FarPoint.Win.Spread.SheetView + Friend WithEvents src_tp As System.Windows.Forms.TableLayoutPanel + Friend WithEvents src_Impctl1 As FileManager.impctl + Friend WithEvents src_Impctl2 As FileManager.impctl + Friend WithEvents src_Impctl7 As FileManager.impctl + Friend WithEvents src_Impctl5 As FileManager.impctl + Friend WithEvents src_Impctl6 As FileManager.impctl + Friend WithEvents src_Impctl3 As FileManager.impctl + Friend WithEvents src_Impctl4 As FileManager.impctl + Friend WithEvents ToolStrip3 As System.Windows.Forms.ToolStrip + Friend WithEvents desd_find_folder As System.Windows.Forms.ToolStripButton + Friend WithEvents desd_tb_path As System.Windows.Forms.TextBox + Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents ToolStripLabel2 As System.Windows.Forms.ToolStripLabel + Friend WithEvents des_chk_merge As System.Windows.Forms.ToolStripButton + Friend WithEvents desd_pt As System.Windows.Forms.TableLayoutPanel + Friend WithEvents desd_Impctl1 As FileManager.impctl + Friend WithEvents desd_Impctl2 As FileManager.impctl + Friend WithEvents desd_Impctl7 As FileManager.impctl + Friend WithEvents desd_Impctl5 As FileManager.impctl + Friend WithEvents desd_Impctl6 As FileManager.impctl + Friend WithEvents desd_Impctl3 As FileManager.impctl + Friend WithEvents desd_Impctl4 As FileManager.impctl + Friend WithEvents ToolStrip4 As System.Windows.Forms.ToolStrip + Friend WithEvents ToolStripLabel4 As System.Windows.Forms.ToolStripLabel + Friend WithEvents desf_pt As System.Windows.Forms.TableLayoutPanel + Friend WithEvents desf_Impctl1 As FileManager.impctl + Friend WithEvents desf_Impctl2 As FileManager.impctl + Friend WithEvents desf_Impctl7 As FileManager.impctl + Friend WithEvents desf_Impctl5 As FileManager.impctl + Friend WithEvents desf_Impctl6 As FileManager.impctl + Friend WithEvents desf_Impctl3 As FileManager.impctl + Friend WithEvents desf_Impctl4 As FileManager.impctl + Friend WithEvents ToolStripLabel5 As System.Windows.Forms.ToolStripLabel + Friend WithEvents ToolStripSeparator7 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents preview1 As System.Windows.Forms.TextBox + Friend WithEvents pviewDesDir As System.Windows.Forms.TextBox + Friend WithEvents pviewDesFile As System.Windows.Forms.TextBox + Friend WithEvents pnTargetFile As System.Windows.Forms.Panel + Friend WithEvents Panel4 As System.Windows.Forms.Panel + Friend WithEvents pnTargetDir As System.Windows.Forms.Panel + Friend WithEvents pnSrcDir As System.Windows.Forms.Panel + Friend WithEvents srcd_pt As System.Windows.Forms.TableLayoutPanel + Friend WithEvents im1 As FileManager.impctl + Friend WithEvents im2 As FileManager.impctl + Friend WithEvents im7 As FileManager.impctl + Friend WithEvents im5 As FileManager.impctl + Friend WithEvents im6 As FileManager.impctl + Friend WithEvents im3 As FileManager.impctl + Friend WithEvents im4 As FileManager.impctl + Friend WithEvents pviewSrcDir As System.Windows.Forms.TextBox + Friend WithEvents tb_workdir As System.Windows.Forms.TextBox + Friend WithEvents ToolStrip5 As System.Windows.Forms.ToolStrip + Friend WithEvents ToolStripLabel7 As System.Windows.Forms.ToolStripLabel + Friend WithEvents ToolStripSeparator10 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents bt_workdir As System.Windows.Forms.ToolStripButton + Friend WithEvents src_chk_merge As System.Windows.Forms.ToolStripButton + Friend WithEvents srcd_find_ftp As System.Windows.Forms.ToolStripButton + Friend WithEvents ToolStripButton4 As System.Windows.Forms.ToolStripButton + Friend WithEvents C1Ribbon1 As C1.Win.C1Ribbon.C1Ribbon + Friend WithEvents RibbonApplicationMenu1 As C1.Win.C1Ribbon.RibbonApplicationMenu + Friend WithEvents RibbonBottomToolBar1 As C1.Win.C1Ribbon.RibbonBottomToolBar + Friend WithEvents RibbonConfigToolBar1 As C1.Win.C1Ribbon.RibbonConfigToolBar + Friend WithEvents RibbonQat1 As C1.Win.C1Ribbon.RibbonQat + Friend WithEvents RibbonTab1 As C1.Win.C1Ribbon.RibbonTab + Friend WithEvents RibbonGroup1 As C1.Win.C1Ribbon.RibbonGroup + Friend WithEvents RibbonTopToolBar1 As C1.Win.C1Ribbon.RibbonTopToolBar + Friend WithEvents C1StatusBar1 As C1.Win.C1Ribbon.C1StatusBar + Friend WithEvents bt_run As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents RibbonGroup2 As C1.Win.C1Ribbon.RibbonGroup + Friend WithEvents RibbonGroup3 As C1.Win.C1Ribbon.RibbonGroup + Friend WithEvents cbBakType As C1.Win.C1Ribbon.RibbonComboBox + Friend WithEvents RibbonButton2 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents RibbonButton3 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents RibbonButton4 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents RibbonButton5 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents cbBakTarget As C1.Win.C1Ribbon.RibbonComboBox + Friend WithEvents RibbonButton6 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents RibbonButton7 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents RibbonGroup6 As C1.Win.C1Ribbon.RibbonGroup + Friend WithEvents tb_ext As C1.Win.C1Ribbon.RibbonTextBox + Friend WithEvents RibbonGroup7 As C1.Win.C1Ribbon.RibbonGroup + Friend WithEvents btOpenFile As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents btMakeNewList As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents chk_subdir As C1.Win.C1Ribbon.RibbonCheckBox + Friend WithEvents btCopy As C1.Win.C1Ribbon.RibbonToggleButton + Friend WithEvents btDel As C1.Win.C1Ribbon.RibbonToggleButton + Friend WithEvents btMove As C1.Win.C1Ribbon.RibbonToggleButton + Friend WithEvents tb_sttrange As C1.Win.C1Ribbon.RibbonTextBox + Friend WithEvents tb_endrange As C1.Win.C1Ribbon.RibbonTextBox + Friend WithEvents RibbonGroup8 As C1.Win.C1Ribbon.RibbonGroup + Friend WithEvents RibbonButton10 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents RibbonLabel1 As C1.Win.C1Ribbon.RibbonLabel + Friend WithEvents tb_bakdir1 As C1.Win.C1Ribbon.RibbonLabel + Friend WithEvents RibbonButton11 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents bT_netdrvconn As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents bt_netdrvdel As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents RibbonGroup4 As C1.Win.C1Ribbon.RibbonGroup + Friend WithEvents RibbonButton8 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents RibbonButton12 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents RibbonButton13 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents cmb_macro As System.Windows.Forms.ComboBox + Friend WithEvents Panel1 As System.Windows.Forms.Panel + Friend WithEvents RibbonButton1 As C1.Win.C1Ribbon.RibbonButton + Friend WithEvents lb_cnt1 As C1.Win.C1Ribbon.RibbonLabel + Friend WithEvents lb_cnt2 As C1.Win.C1Ribbon.RibbonLabel + Friend WithEvents lb_msg As C1.Win.C1Ribbon.RibbonLabel + Friend WithEvents RibbonSeparator2 As C1.Win.C1Ribbon.RibbonSeparator + Friend WithEvents RibbonSeparator1 As C1.Win.C1Ribbon.RibbonSeparator + Friend WithEvents RibbonSeparator3 As C1.Win.C1Ribbon.RibbonSeparator + Friend WithEvents RibbonSeparator4 As C1.Win.C1Ribbon.RibbonSeparator + Friend WithEvents chk_autorow As C1.Win.C1Ribbon.RibbonCheckBox + Friend WithEvents RichTextBox1 As System.Windows.Forms.RichTextBox + Friend WithEvents prb1 As C1.Win.C1Ribbon.RibbonProgressBar + Friend WithEvents list_subdir As System.Windows.Forms.ListView + Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader + Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader + Friend WithEvents RibbonSeparator5 As C1.Win.C1Ribbon.RibbonSeparator + Friend WithEvents TabControl1 As System.Windows.Forms.TabControl + Friend WithEvents TabPage1 As System.Windows.Forms.TabPage + Friend WithEvents TabPage2 As System.Windows.Forms.TabPage + Friend WithEvents lvSchedule As System.Windows.Forms.ListView + Friend WithEvents ColumnHeader3 As System.Windows.Forms.ColumnHeader + Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader + Friend WithEvents ColumnHeader5 As System.Windows.Forms.ColumnHeader + Friend WithEvents ColumnHeader6 As System.Windows.Forms.ColumnHeader + Friend WithEvents RibbonLabel2 As C1.Win.C1Ribbon.RibbonLabel + Friend WithEvents chkReplay As C1.Win.C1Ribbon.RibbonCheckBox + Friend WithEvents chkAutoRun As C1.Win.C1Ribbon.RibbonCheckBox + Friend WithEvents chkHide As C1.Win.C1Ribbon.RibbonCheckBox + Friend WithEvents NotifyIcon1 As System.Windows.Forms.NotifyIcon + Friend WithEvents ColumnHeader7 As System.Windows.Forms.ColumnHeader + Friend WithEvents RibbonTab2 As C1.Win.C1Ribbon.RibbonTab + Friend WithEvents RibbonGroup5 As C1.Win.C1Ribbon.RibbonGroup + Friend WithEvents btMakeCache As C1.Win.C1Ribbon.RibbonButton + +End Class diff --git a/DriveInfo/MDiMain.resx b/DriveInfo/MDiMain.resx new file mode 100644 index 0000000..60b318a --- /dev/null +++ b/DriveInfo/MDiMain.resx @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 709, 17 + + + 802, 17 + + + 892, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABSklEQVQ4T2MYvODuAvb/t+Zx/r86h+v/ + xRm8/6HCxIPrQI1/HjX+//Ow4f/JyQKkG3B+Oi/cgIM9IqQbcHySIFBz3f8/D6r+72gXJ2zApZk8/89O + 5ft/EqjxSL/Q/33dIkDN5f//3iv6v75B5v+qGrn/SysV/88vVf4/q0gV08BTQH/+eVgP1FQLxJX//9wr + AeK8/3/vZv7/eyf5/9/bcf//3YwA4pD/k3I0MQ041CsMdu7f+6VAjQVAjdlAjalAjQn//92KBmoM+//v + RtD/f9f9/nel6WIasLNd4v+WZqn/68DOlf+/pELx/99bMUCN4f+n5mn8n5Cl9b87Q/d/e6r+/+ZEQ8Jh + MhvoT5Bz/90I+N+ToUNYAzoA+fPfDX8g9vvfmqxPugHd6bpg/4JwfZwR6Qa0JBn8b4g3/F8Ta/y/MtqE + dAPoBBgYACQj2J51/IhpAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABb0lEQVQ4T7WQTSjDYRzHd1XeSu3iglo5 + IJO8hGQypLHIhMjMJAcOi4R2cXAg5UIOuEgOJCXlROI0b/Pamlp/LVLaBf+4PB9jqLW/seJ7eep5vt/P + 7/v8VH8iXCfQbQTHDh9XkYmVeURnFcKsh631sBC8HliaCfawtgC9JkS7HtFRAXMTipC3hsJcBiM9oe+c + OgKQumxEYwHYmoJMYsiKMOXCpD1sQxWL04jK1HcQw1Zwn8FYfwDqPz9s4YXHBc3FgS8ZsxD1edDX8rvw + p9jf9VfOQxjSoUYbYfhGgsZCyElA1sbzoI2F2uxf1r+5BlM+FCXisxjg4uh9uXdpfsjy7A8LvL+DVh2P + JUm4S9Px7W1/BRi14dTEIJ8cKEN4eYZBC+iSOU5T49tYDTHelmcgtVUje69DIexuIueqcaZEIXU1gPyk + OGlHE4fsdCgApkaQUqNx6zNBulKu6Zds74bzQwXApRPGB+Bw79vwP0ilegWKIwMchCbSyQAAAABJRU5E + rkJggg== + + + + 17, 17 + + + 164, 17 + + + 273, 17 + + + 382, 17 + + + 484, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAABK1JREFUWEftlXtMlWUcx/lL5eK1GDrD7Ry5HA9wCBA4kbmpRTdjast5QQVLmMBM + mogcLhLJ4SIXSZhMzJyxXMwutCxQJCUs04KsPyrnqjWRcetwk8M5x/f99n1ezwxTBnM7x63127573/OO + cz6f3+95nheX/+tB68qXKvxwVoW2M2rYHzm32ptU6L+WBNPVRHz7+ULnS3zXqMbwDQOTicE/duKrj32d + K3GRXZv78mHp3w9z7z5F4mydn/MkLtT7YLS/GLaRKthuHrRLvI6G9/ydI9HykS8sg6WQLIch2Q5ToowS + 2ZTYjvoareMlmjlu63A54dWALCTepkQ+JXZRIg51lQGOlTj9vj9s5jLItyoBVFFCyBhhG86EuScZg7+v + Q21J0OQl2ptVaG9S4/vTalxuWIiLp3zwzWc+aK33RQt3+LmTfmj+wA9nTvijsVaDL45rIFlLIUvlFChl + igApj88MnMQOTmILJV7C0fzgyUmIF4o4VuY+IywDpf/KfqaQa17AsRdw4xUSVMTuBbSA8H2cwF7GwM9p + nEQKJxHHSayhxAocygmZWOJSg1qBi10tWY/Yw7W1HmIqudkq+MNi5CUKWJaMBL7F5DKZzG5mJ5NCiW38 + ziZKrKFENCX0qNgzgYQYt+hWgIFjzFGmhuEmg1jnA0wJAYW8julYAacyBCOBied9LCXW8rdiKLECI116 + DFwLRElq2PgSrZ8IgWKlY8hCQoC5ucaClY4JBsEYA5YJlu1geS2zmlnJSUVDGl0KiykMQ38uQt9P3jAm + h99f4vxJnusBIwUq7GBeZfvmEh3D3rECFqNO5r0AxzEbmX/AkJ9lllFgCQXCKRBIATUF5uJG6yy8mRBx + r0QTd7hlIJcCAijAYtT2jpVRp/GzHSwnMqLjseAXOfZoXpczTwG3IrlvQrgEWi6BikswD91ts9Fx3gM5 + WyPvFWis9VdeIraRLH4xh8lgdlEoldcUJoH3WyHbNjPr2d0rBK66DZYFeNltsBxJeCj/PhC2IT+Yuxdg + 8Dcv9F6Zjc4L7si+H1zUqWMaDHe8ypOwnf9gkphtTDwTy6xjXuaEVsE6tJKSLxDwHCWepgTBEsESwVIY + 4TqKatg5T1X3Y4R7Ej4TnV+7ITt+HLioT49oYfo1hkdmNddLJIZ5nnmGWc4sxfD1JbjZGYXRvicJiKJE + FCXsYElHuJbPfNj5AsLnEj6H8OmEuyIrTj8+XNSH1Vp0XYrgOkWipz2CWcw8zuiYAEaD3h81MP28iO96 + LUZ7dXzjBUO2BhGuJdyXcBXh8wn3JHwm4e6ET0Xm5gngouoOBuDEgUDUlgXheHEQ3i3U4Z18HWryglG9 + NxhVWSGoNISgIj0U5WmhKHkjDNZBAfWlgIpXb8K9CH+E8OmEuxI+BYZNk4A/SBXtWMw94Q3JPJ/weYR7 + 8q03i3APwqcp8AxHwUUZk8Ix+pcX98KjhM9h5zMId7sD3xP7hOPgovISw5WOLaYZhHvcDd/oYLio3Nci + eCrceXTd74Knb3ACXJQ40/1X3WD6xfUOfPd6J8FFGbbo0dM2DV2Xp/IN52S4qAxuso6WKbh+7iHARaVv + 0CvghwL/D5WLy9+IJOaqgQ6mlQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAi5JREFUOE/FkutL03EchX//QBIZkQRFlogFw8CQ6kWIEaUlFKWGkinlpSATCnGm + bWreNuelRjqsTbe2tVnNNEULIdEkQksdJaZmQVEppoZKXvb0cxui3d564Lz5cp7D4cNXWH3VGIojRPO7 + G8x5Re7I/7UY7u/RMTNudfrnmJG5ES2WqiJshuwsd+zfslarmB4zrYAXvpQzZ0/BdKcAfUUu2ptZaEoy + uaWUciM/FTfqklmnYPqbbgl2iDD9UrAn/NV/FNytzOfHZ80S3FSjcLrRUkidMZ+H+lws2myMGjlV6mvc + Lr1KhUqKWpHmKtNrcpn8UOacPdQmw2ZSsTAkh+GclX4vvg2mQ99leHOB7nvhJMeGVQtadTYTAwXwUUmt + uYiOZqUrtHz66xjoPMF8eygzT4J4Vy0h8XTwxKWzR3cKlaUyvr+VM9yegc2oxDEog95EF9gdJ4KRzHeE + MdNykMmGfYzW7EKe5ENksGeJ8wblqgxGe9K4b1DQ1Sou6UsRC85BVzSOF8eYfXaYqab9jNkC+Gr2o/P6 + WqJCvQnwXePrLFAXSultyeSBoRAGMuGVOPflSWbbjjD1NIjxukBGLBI+6bZjV3oiS9iG/w6veie8qLK8 + VKxVBdgfnee5NYlWUzwt+jiatTE0VkbzuPwU9cscFbLVEei/JcSNC0JxzhWKZfHkpZ0h/WIEyXFhxIYf + 4PihPQTvlbBb4oOf9yY2e61nwzoPNnp6rPwHqyxB+AUZYsK/1sMKUAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAaVJREFUOE+VkqFyIzEQRPcT/AfnL4gNE2YW1xELug5kDcMi6DoSQUNBsxu47ATN + ImiWgYGCgYJhnRlJPmcdk+uqLu969bpHq+0uZSmjf36dttv/U0oZdp9gthGRE0Jk0BCLvfjP31fflp6l + jQpZn7DZcfm1+4z5OiC9Z5ykIebRfQ9RmKIsELsgHgBLgHGphjCXAJ0gHhmLtR2HaKM/VHDj1Rlmp9tI + WNhYQkoAhQKf3PCu07G9rKmgWJrNVpoKTGBpzccawjKNTjG7713DJcAxpksvJkwNlcbFo8ByzW/nd5A/ + xDkjhoBgN8Uvv/t5i6nS9BKisDbHgEweSb134EAFTN6CtzWkoVXhUKf52qzS9vQm4wcHXcM7W2B/Ox8H + 6FEVYPDj5kMQ2CInuT9auJ0r8PPdzDS06hTwVSkxwrApMEcZe28wmUzQ/5qN96/Ssy5Qa07SHMh8g1er + FTVkrH8BKcmRxaswDYSb5QM3ZCwvn6M+1HMmIsSDTMLyws7NTp/Plxdv/5o0QBV8hZ/6K3tWadql5e+p + tRZmbfQaq58/rsNd130CEfv2E8lIfnsAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAi5JREFUOE/FkutL03EchX//QBIZkQRFlogFw8CQ6kWIEaUlFKWGkinlpSATCnGm + bWreNuelRjqsTbe2tVnNNEULIdEkQksdJaZmQVEppoZKXvb0cxui3d564Lz5cp7D4cNXWH3VGIojRPO7 + G8x5Re7I/7UY7u/RMTNudfrnmJG5ES2WqiJshuwsd+zfslarmB4zrYAXvpQzZ0/BdKcAfUUu2ptZaEoy + uaWUciM/FTfqklmnYPqbbgl2iDD9UrAn/NV/FNytzOfHZ80S3FSjcLrRUkidMZ+H+lws2myMGjlV6mvc + Lr1KhUqKWpHmKtNrcpn8UOacPdQmw2ZSsTAkh+GclX4vvg2mQ99leHOB7nvhJMeGVQtadTYTAwXwUUmt + uYiOZqUrtHz66xjoPMF8eygzT4J4Vy0h8XTwxKWzR3cKlaUyvr+VM9yegc2oxDEog95EF9gdJ4KRzHeE + MdNykMmGfYzW7EKe5ENksGeJ8wblqgxGe9K4b1DQ1Sou6UsRC85BVzSOF8eYfXaYqab9jNkC+Gr2o/P6 + WqJCvQnwXePrLFAXSultyeSBoRAGMuGVOPflSWbbjjD1NIjxukBGLBI+6bZjV3oiS9iG/w6veie8qLK8 + VKxVBdgfnee5NYlWUzwt+jiatTE0VkbzuPwU9cscFbLVEei/JcSNC0JxzhWKZfHkpZ0h/WIEyXFhxIYf + 4PihPQTvlbBb4oOf9yY2e61nwzoPNnp6rPwHqyxB+AUZYsK/1sMKUAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAABLhJREFUWEftV1lTk1cYpu1N/0Evet2LriLu4A4uIKJctDdFRJZilaVsgrJUUgSU + RZY0CGEnJAawuOBUZ+yUjp2ptVbqRB1aEQMEKZCEgKy1+PR9Dwl+QErSmdzVZ+aZc07O+z7n+Q7fd86L + G4DX3CTgMfF163Ae0t/szUsh1eCWx2LCisXjV3iFJcgI9EP6fl/BtH27kRqwS/DE3p047r8DKXt8kOzn + jWPEJN/tSNy9DQm7tiJ+5xbE7diML3w2IdZ7I2K2eSJ66wZEbVmPo5vXwSq/PHjxywU5ePHgLl503HIN + SUsjS8PnG9c4NsEGZnV3MHy+Cia1EubzlbA01eDZhTpMtKowdVmD6TYtnn/bTGzB39cuiJY5c7UJ01c0 + mLjYSPH1Io/zTdpqoXnYGQO87c9v38RQXRmGG87BqKqAWV2JUS2ZaCET36gweVGNmStawb/amub7U5c0 + mGxtxHhLPUZ5cU2VyGcd1oz0Wu2cgZmfvsdAdQkGa+RkRCEEzI0VsNCujPFukJFJ2g3mFD2trT9OT/2s + uRajFGem3TNSHuezDmtGeq5ybIBfuukfb6C/ohADyrP4s6qYBEphrFfArDoHi7qCFqjEeHON4ERL7Xx/ + TFuFUY0SI43lIn6oVi7yWYc1P9vg4ZyByR+uoU9xBoayPPSXFwiBQRIykhFT3dcYaSjDKBkZY9KC3PLY + QgbNtLCRFh6kHeQ8zmcd1oxwxgB/buPftUFfnIWe0mz0yXNgUJzG0/J8DCoLMVRVBGN1Mcx1coww68kQ + tTw21ZRgmOY4boDi+ymP81mHNcPXr3TOwNj1VjzJz8CTwpPoOZuJ3iIZDKWn6A55CaOyACZmZaFoeSxF + P8X3FX8l8lmHNcPXuTs2wIeN5WozunKO43HuCXSfToM+Lx29BV/CQEakGFLkzlMKjuN4fV6GyGcd1gxz + 1oDpkhqdsgT8LkvEH1lJ6MpORjcZ0p9JRW9+unWZOTwtyrT25sDzHNedSw9AeZzPOqwZunbFvAEKfcPa + XQg+ao30mT1Mi0Znegw6M2Lx6GQcumTx6M5KhD77GHpykudWs2J2dla0vbkpYp7jHtMDPMqME/msw5qh + az5yvAMpZKCn5BR+DvLF7SA//HJgD+4c9EdHyF78digA90L3QRcWiPvhgWJRG3isI94L3S/iOkIC8Cvl + cT7rsOYhpwzQRaOL+hTtK95alranlsJenI2sGbL6Q8cG+JbTxQSj3ePtf6UUevrWpbAXz2TNkFUfODbA + V6wuMQLtnu/YpRT6arn4jVspFucwWfOgUwboftelRqPdx30JbeDt1zdULJjjsRTSOSZrBnu8v8AAhS0t + TpOouNDJktAe4OVSsqbUgN3FGVzdPKCD4+Yn3i4lax5Y+Z7jP0EilVaddHzeCvF3KVlTaoB3wO4uJFBd + 16XIwd0jH7uUrBnk/q7jdyCeikqDVomHqRG4nxTsErIWay42YBdc1apSEzDQWguDqtQlZK3y2EjnDDBE + Sb3dC9FUVkdRWX2Uyuojm9aKqvYw1XVcWnF1E0H3O1+xYXTJ8EXDRy2fdvy98xvP5L87L+z04v8b0Au4 + 7H/YC0DBb1q7Av8pmbA4/uXb7+b2D2VadFJ/YJtFAAAAAElFTkSuQmCC + + + + 593, 17 + + \ No newline at end of file diff --git a/DriveInfo/MDiMain.vb b/DriveInfo/MDiMain.vb new file mode 100644 index 0000000..6cff756 --- /dev/null +++ b/DriveInfo/MDiMain.vb @@ -0,0 +1,1418 @@ +Imports System.Windows.Forms +Imports System.IO +Imports CommonClassv2 +Imports System.Data +Imports System.Threading + +Public Class MDiMain + + Public NewList As Boolean = False '//파일을 불러오거나 편집모드를 켯을떄변경 + + Dim FB As New FolderBrowserDialog + + Dim strbuff As New System.Text.StringBuilder + Dim Macro() As Str_Macro + +#Region "화면하단에 수량을 표시" + Delegate Sub showcnt1handler(ByVal cnt1 As Integer, ByVal cnt2 As Integer, ByVal tag As String) + Sub ShowCnt1(ByVal cnt1 As Integer, ByVal cnt2 As Integer, Optional ByVal tag As String = "") + If C1StatusBar1.InvokeRequired Then + C1StatusBar1.Invoke(New showcnt1handler(AddressOf ShowCnt1), New Object() {cnt1, cnt2, tag}) + Else + Me.lb_cnt1.Text = cnt1 & "/" & cnt2 & Space(1) & tag + Me.C1StatusBar1.Refresh() + End If + End Sub + Sub ShowCnt2(ByVal cnt1 As Integer, ByVal cnt2 As Integer, Optional ByVal tag As String = "") + If C1StatusBar1.InvokeRequired Then + C1StatusBar1.Invoke(New showcnt1handler(AddressOf ShowCnt2), New Object() {cnt1, cnt2, tag}) + Else + Me.lb_cnt2.Text = cnt1 & "/" & cnt2 & Space(1) & tag + Me.C1StatusBar1.Refresh() + End If + End Sub +#End Region + +#Region "운용기록창메세지표시" + Delegate Sub OLogHandler(m As String) + Sub OLog(m As String) + If RichTextBox1.InvokeRequired Then + RichTextBox1.Invoke(New OLogHandler(AddressOf OLog), New Object() {m}) + Else + m = String.Format("[{0}] {1}", Now.ToString("HHmmss"), m) + If RichTextBox1.TextLength > 4000 Then RichTextBox1.Clear() '//일정크기가 되면 데이터를 지운다 + RichTextBox1.AppendText(vbCrLf + m) + RichTextBox1.ScrollToCaret() + End If + End Sub +#End Region + + '''매크로폴더에서 목록을 가져옵니다. + Private Sub Load_Macro() + + PLog.Add(">> Load_Macro") + + Dim Ini As MyINI + Dim DI As New DirectoryInfo(PathMacro) + If Not DI.Exists Then + PLog.Add("No Macro Dir(" + DI.FullName + ") => Create") + DI.Create() + End If + + Dim FI() As FileInfo = DI.GetFiles(MacroPattern & "*.ini") + ReDim Macro(FI.GetUpperBound(0)) '//매크로 등록한다. + PLog.Add(Macro.Length.ToString() + "개의 매크로파일을 검색했습니다") + + Dim I As Integer = 0 + Me.cmb_macro.Items.Clear() + Me.cmb_macro.Items.Add("이전설정") + For Each F As FileInfo In FI + Me.Macro(I).FileName = F.FullName + Ini = New MyINI(F.FullName) + Me.Macro(I).Desc = Ini.Read("main", "desc", "기본설명") + Me.cmb_macro.Items.Add(Me.Macro(I).Desc) + PLog.Add("#Macro File=" + F.Name + ", desc=" + Me.Macro(I).Desc) + I += 1 + Next + End Sub + + Public Sub AddScheduleDiv(m As String) + Dim lv4 As ListViewItem = lvSchedule.Items.Add("※") + lv4.SubItems.Add("--") + lv4.SubItems.Add(m) + lv4.SubItems.Add("완료") + lv4.SubItems.Add("-") + lv4.ForeColor = Color.Gray + lvSchedule.Refresh() + End Sub + + + Public Sub Noti(m As String) + If NotifyIcon1.Visible = False Then NotifyIcon1.Visible = True + NotifyIcon1.ShowBalloonTip(1000, "FileManager", m, ToolTipIcon.Info) + End Sub + + Private Sub MDiMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing + If MsgBox("프로그램이 종료됩니다", MsgBoxStyle.OkCancel + MsgBoxStyle.Information, "종료확인") <> MsgBoxResult.Ok Then + e.Cancel = True + Return + End If + + '//현재설정을 저장한다 + Setting_Save() + + '//더이상 화면에 로그메세지가 표시되지 않게한다 + RemoveHandler Pub.PLog.RaiseMsg, AddressOf RaiseLogMessage + + NotifyIcon1.Visible = False + NotifyIcon1.Dispose() + + '//프로그램종료메세지 추가 및 Flush + Pub.PLog.Add("Program Closing", True) + + End Sub + + Private Sub MDiMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load + + '제목표시줄에 프로그램명과 버젼을 표시합니다 + Me.Text = My.Application.Info.ProductName & " Ver. {0}.{1:00}.{2}.{3}" + Me.Text = System.String.Format(Me.Text, My.Application.Info.Version.Major, My.Application.Info.Version.Minor, My.Application.Info.Version.Build, My.Application.Info.Version.Revision) + Me.Show() + My.Application.DoEvents() + RichTextBox1.Clear() + + '//프로그램초기화 + Pub.init() + + '//로그메세지이벤트할당(로그가 들어오면 화면에 뿌릴수있도록 한다) + AddHandler PLog.RaiseMsg, AddressOf RaiseLogMessage + + PLog.Add("프로그램 실행", True) + + PLog.Add("FTP Class init") + FTP_0 = New FTPClients.Client_2("127.0.0.1", "Anonymous", "") + + '//매크로기능 초기화 + Load_Macro() + If Me.cmb_macro.Items.Count > 0 Then Me.cmb_macro.SelectedIndex = 0 + + '//툴팁메세지추가 + Dim SB As New System.Text.StringBuilder("[복사]") + SB.AppendLine() + SB.AppendLine("복사하려는 파일의 위치") + SB.AppendLine() + SB.AppendLine("[삭제]") + SB.AppendLine("삭제하려는 파일의 위치") + SB.AppendLine() + SB.AppendLine("[이동]") + SB.AppendLine("이동하려는 파일의 위치") + Me.bt_workdir.ToolTipText = SB.ToString + + PLog.Add("프로그램 초기화 완료", True) + End Sub + + '//로그클래스로부터의 발생 메세지 + Private Sub RaiseLogMessage(time As String, gubun As String, msg As String) + OLog(msg) + End Sub + +#Region "설정 불러오기 & 저장하기" + + Private Sub Setting_Load(Optional ByVal Macroindex As Integer = 0) + + Dim ini As MyINI + If Macroindex = 0 Then + ini = New MyINI(IniFile) + Else + ini = New MyINI(Me.Macro(Macroindex - 1).FileName) + End If + + '//파일명표시 + PLog.Add(String.Format("Load Setting : {0},{1}", Macroindex, ini.FileName)) + + Me.Src_Init() + + '//가져올부분은 작업폴더/백업폴더/백업폴더2/확장자/서브디렉토리참조/백업정책1/백업정책2/중복정책/실행형태/검사형태 + Me.tb_workdir.Text = ini.Read("main", "workdir", "c:\") + Me.desd_tb_path.Text = ini.Read("main", "desdir", "c:\") + + Me.tb_bakdir1.Text = ini.Read("main", "bakdir1", "c:\") + Me.tb_ext.Text = ini.Read("main", "ext", "JPG") + Me.chk_subdir.Checked = ini.Read("main", "subdir", True) + + Dim baktype As String = ini.Read("main", "bak1type", 1) + If String.IsNullOrEmpty(baktype) Then baktype = "1" + cbBakType.SelectedIndex = baktype + + + If CBool(ini.Read("main", "bak1folder", False)) Then + cbBakTarget.SelectedIndex = 0 + Else + cbBakTarget.SelectedIndex = 1 + End If + + Dim runtime As String = ini.Read("main", "runtype", 0) + btCopy.Pressed = False + btDel.Pressed = False + btMove.Pressed = False + + If runtime = "1" Then + btDel.Pressed = True + ElseIf runtime = "2" Then + btMove.Pressed = True + Else + btCopy.Pressed = True + End If + 'Me.cmb_runtype.SelectedIndex = ini.Read("main", "runtype", 0) //160407 + + '//하위폴더목록 불러오기 + Dim SubCnt As Integer = ini.Read("main", "subdirCnt", 0) + For i As Integer = 1 To SubCnt + AddSubDirList(ini.Read("subdir", "list" & i, "")) + Next + + '//srcfile + '//가져올부분은 작업폴더/백업폴더/백업폴더2/확장자/서브디렉토리참조/백업정책1/백업정책2/중복정책/실행형태/검사형태 + Dim PF As String = ini.Read("srcfile", "prevfile", "") + If PF = "" Then + Prev_file = Nothing + Else + Prev_file = New System.IO.FileInfo(PF) + End If + + '//시작,종료영역 복구 + Me.tb_sttrange.Text = ini.Read("srcfile", "sttrange", "1") + Me.tb_endrange.Text = ini.Read("srcfile", "endrange", "0") + If Me.tb_sttrange.Text = "0" Then Me.tb_sttrange.Text = "1" + + For Each AA As Control In Me.src_tp.Controls + If AA.GetType.Name.ToUpper = "IMPCTL" Then + CType(AA, impctl).열번호 = ini.Read("srcfile", AA.Name & "C", "") + CType(AA, impctl).문자열자르기 = ini.Read("srcfile", AA.Name & "S", "") + CType(AA, impctl).포맷마스크 = ini.Read("srcfile", AA.Name & "F", "") + End If + Next + '//DESFile + For Each AA As Control In Me.desf_pt.Controls + If AA.GetType.Name.ToUpper = "IMPCTL" Then + CType(AA, impctl).열번호 = ini.Read("desfile", AA.Name & "C", "") + CType(AA, impctl).문자열자르기 = ini.Read("desfile", AA.Name & "S", "") + CType(AA, impctl).포맷마스크 = ini.Read("desfile", AA.Name & "F", "") + End If + Next + + '//DESDIR + For Each AA As Control In Me.desd_pt.Controls + If AA.GetType.Name.ToUpper = "IMPCTL" Then + CType(AA, impctl).열번호 = ini.Read("desdir", AA.Name & "C", "") + CType(AA, impctl).문자열자르기 = ini.Read("desdir", AA.Name & "S", "") + CType(AA, impctl).포맷마스크 = ini.Read("desdir", AA.Name & "F", "") + End If + Next + + Me.des_chk_merge.Checked = ini.Read("desdir", "Chkmerge", False) + + '//srcdir 160408 + For Each AA As Control In Me.srcd_pt.Controls + If AA.GetType.Name.ToUpper = "IMPCTL" Then + CType(AA, impctl).열번호 = ini.Read("srcdir", AA.Name & "C", "") + CType(AA, impctl).문자열자르기 = ini.Read("srcdir", AA.Name & "S", "") + CType(AA, impctl).포맷마스크 = ini.Read("srcdir", AA.Name & "F", "") + End If + Next + Me.src_chk_merge.Checked = ini.Read("srcdir", "Chkmerge", False) + + '//160716 + Me.chkReplay.Checked = ini.Read("option", "replay", True) + Me.chkAutoRun.Checked = ini.Read("option", "autorun", False) + Me.chkHide.Checked = ini.Read("option", "hide", False) + + '//ftp 정보 복구 + FTPServer = ini.Read("ftp", "server", "") + FTPID = ini.Read("ftp", "id", "Anonymouse") + FTPPW = ini.Read("ftp", "pass", "") + FTPPort = ini.Read("ftp", "port", "21") + FTPPath = ini.Read("ftp", "path", "/") + FTPPassive = ini.Read("ftp", "passive", False) + FTPUTF8 = ini.Read("ftp", "utf8", False) + + If String.IsNullOrEmpty(FTPPath) Then FTPPath = "/" + FTPPath = FTPPath.Replace("//", "/") + + Dim ftpindex As Integer = ini.Read("ftp", "index", "0") + + FTP_0.host = FTPServer + ":" + FTPPort.ToString() + FTP_0.user = FTPID + FTP_0.pass = FTPPW + FTP_0.Passive = FTPPassive + FTP_0.utf8 = FTPUTF8 + + PLog.Add("Load Setting OK", True) + End Sub + Private Function Setting_Save(Optional ByVal Macroindex As Integer = 0) As Boolean '//현재 셋팅을 저장합니다. + '//저장목록은 시작/종료 열번호 아이템의 텍스트이다. + + PLog.Add(">> : Save_Setting") + + Dim Macroname As String + Dim ini As MyINI + If Macroindex = 0 Then + ini = New MyINI(IniFile) + Macroname = "기본설정" + ElseIf Macroindex = -999 Then '//이건 새로운 매크로의 추가다. 매크로 파일명을 새로지어야한다. + Macroname = InputBox("매크로 설명을 입력하세요", "설명입력", "신규매크로") + If String.IsNullOrEmpty(Macroname) Then Return False + Dim i As Integer = 0 + Dim NewName As String = "" +NewName: + i += 1 + NewName = PathMacro & "\" & MacroPattern & Format(Me.Macro.GetUpperBound(0) + i + 1, "00") & ".ini" + If New FileInfo(NewName).Exists Then GoTo NewName + ini = New MyINI(NewName) + Else + ini = New MyINI(Me.Macro(Macroindex - 1).FileName) + Macroname = Me.Macro(Macroindex - 1).Desc + End If + ini.Write("main", "desc", Macroname) + + ini.Write("main", "workdir", Me.tb_workdir.Text) + ini.Write("main", "desdir", Me.desd_tb_path.Text) + ini.Write("main", "bakdir1", Me.tb_bakdir1.Text) + ini.Write("main", "ext", Me.tb_ext.Text) + ini.Write("main", "subdir", Me.chk_subdir.Checked) + + ini.Write("main", "bak1type", cbBakType.SelectedIndex) + + If btDel.Pressed Then + ini.Write("main", "runtype", "1") + ElseIf btMove.Pressed Then + ini.Write("main", "runtype", "2") + Else + ini.Write("main", "runtype", "0") + End If + + If cbBakTarget.SelectedIndex = 0 Then + ini.Write("main", "bak1folder", Boolean.TrueString) + Else + ini.Write("main", "bak1folder", Boolean.FalseString) + End If + + '//하위폴더목록을 저장한다. + ini.Write("main", "subdirCnt", Me.list_subdir.Items.Count) + For i As Integer = 1 To Me.list_subdir.Items.Count + ini.Write("subdir", "list" & i, Me.list_subdir.Items(i - 1).Text) + Next + + '//srcfile + If Not Prev_file Is Nothing Then ini.Write("srcfile", "prevfile", Prev_file.FullName) + ini.Write("srcfile", "sttrange", Me.tb_sttrange.Text) + ini.Write("srcfile", "endrange", Me.tb_endrange.Text) + + For Each AA As Control In Me.src_tp.Controls + If AA.GetType.Name.ToUpper = "IMPCTL" Then + ini.Write("srcfile", AA.Name & "C", CType(AA, impctl).열번호) + ini.Write("srcfile", AA.Name & "S", CType(AA, impctl).문자열자르기) + ini.Write("srcfile", AA.Name & "F", CType(AA, impctl).포맷마스크) + End If + Next + + '//desfile + For Each AA As Control In Me.desf_pt.Controls + If AA.GetType.Name.ToUpper = "IMPCTL" Then + ini.Write("desfile", AA.Name & "C", CType(AA, impctl).열번호) + ini.Write("desfile", AA.Name & "S", CType(AA, impctl).문자열자르기) + ini.Write("desfile", AA.Name & "F", CType(AA, impctl).포맷마스크) + End If + Next + + + '//desdir + For Each AA As Control In Me.desd_pt.Controls + If AA.GetType.Name.ToUpper = "IMPCTL" Then + ini.Write("desdir", AA.Name & "C", CType(AA, impctl).열번호) + ini.Write("desdir", AA.Name & "S", CType(AA, impctl).문자열자르기) + ini.Write("desdir", AA.Name & "F", CType(AA, impctl).포맷마스크) + End If + Next + ini.Write("desdir", "Chkmerge", Me.des_chk_merge.Checked) + + '//srcdir 160408 + For Each AA As Control In Me.srcd_pt.Controls + If AA.GetType.Name.ToUpper = "IMPCTL" Then + ini.Write("srcdir", AA.Name & "C", CType(AA, impctl).열번호) + ini.Write("srcdir", AA.Name & "S", CType(AA, impctl).문자열자르기) + ini.Write("srcdir", AA.Name & "F", CType(AA, impctl).포맷마스크) + End If + Next + ini.Write("srcdir", "Chkmerge", Me.src_chk_merge.Checked) + + '//160716 + ini.Write("option", "replay", Me.chkReplay.Checked) + ini.Write("option", "autorun", Me.chkAutoRun.Checked) + ini.Write("option", "hide", Me.chkHide.Checked) + + ini.Write("ftp", "server", FTPServer) + ini.Write("ftp", "id", FTPID) + ini.Write("ftp", "pass", FTPPW) + ini.Write("ftp", "port", FTPPort) + ini.Write("ftp", "passive", FTPPassive.ToString()) + ini.Write("ftp", "utf8", FTPUTF8.ToString()) + ini.Write("ftp", "path", FTPPath) + + PLog.Add("<< : Save Setting(" + Macroindex.ToString() + ")") + Return True + End Function + +#End Region + + Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick + + '//타이머가 작동중임을 표시한다. + If RibbonLabel2.Text = "●" Then + RibbonLabel2.Text = "○" + Else + RibbonLabel2.Text = "●" + End If + + If Not RibbonGroup1.Enabled Then + RibbonGroup1.Enabled = True + RibbonGroup2.Enabled = True + RibbonGroup3.Enabled = True + RibbonGroup4.Enabled = True + RibbonGroup6.Enabled = True + RibbonGroup7.Enabled = True + End If + + '//현재 상태값을 화면에 보여준다. + strbuff = New System.Text.StringBuilder + Select Case cbBakTarget.SelectedIndex + Case 0 + strbuff.Append("[폴더]") + Case 1 + strbuff.Append("[파일]") + End Select + + strbuff = New System.Text.StringBuilder + '//---원본목록부분 + If IsNumeric(Me.tb_sttrange.Text) = False OrElse Me.tb_sttrange.Text <= 0 Then + Me.preview1.Text = "시작범위값이 숫자가 아니거나 0보다 작습니다" + Me.preview1.ForeColor = Color.Red + ElseIf Me.NewList = False Then + Me.preview1.Text = "원본목록이 정의되지 않았습니다." + Me.preview1.ForeColor = Color.Red + Else + strbuff.Append(Me.src_Impctl1.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl2.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl3.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl4.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl5.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl6.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl7.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + Me.preview1.Text = "미리보기 : " & strbuff.ToString & Pub.GetExtendFromMdi.Trim("*") + Me.preview1.ForeColor = Color.Black + End If + + '//원보폴더 160408 + If src_chk_merge.Checked Then + pviewSrcDir.Text = "" + + Me.pviewSrcDir.ForeColor = Color.Black + Me.pviewSrcDir.Text = "[대기]" + + If IsNumeric(getSP) = False OrElse getSP() <= 0 Then + Me.pviewSrcDir.Text = "[원본파일] 시작범위값이 숫자가 아니거나 0보다 작습니다" + Me.pviewSrcDir.ForeColor = Color.Red + Else + Me.pviewSrcDir.Text = "미리보기 : " & Me.DESD_GetSrcDir(getSP, "파일명", "확장자", "") ' Me.tb_path.Text & "\" & Get_FileList(Frm_srcfile.tb_sttrange.Text + 1, "파일명", "확장자").ToString + If Me.pviewSrcDir.Text.IndexOf("*") >= 0 OrElse Me.pviewDesDir.Text.IndexOf("?") >= 0 Then + Me.pviewSrcDir.Text = "원본폴더조합시에는 * 또는 ? 를 사용할 수 없습니다" + Me.pviewSrcDir.ForeColor = Color.Red + End If + End If + Else + pviewSrcDir.Text = tb_workdir.Text + Me.pviewSrcDir.ForeColor = Color.Gray + End If + + '//대상폴더 + If Me.desd_Impctl1.enabled = False Then Me.desd_Impctl1.enabled = True + If Me.desd_Impctl2.enabled = False Then Me.desd_Impctl2.enabled = True + If Me.desd_Impctl3.enabled = False Then Me.desd_Impctl3.enabled = True + If Me.desd_Impctl4.enabled = False Then Me.desd_Impctl4.enabled = True + If Me.desd_Impctl5.enabled = False Then Me.desd_Impctl5.enabled = True + If Me.desd_Impctl6.enabled = False Then Me.desd_Impctl6.enabled = True + If Me.desd_Impctl7.enabled = False Then Me.desd_Impctl7.enabled = True + Me.pviewDesDir.ForeColor = Color.Black + Me.pviewDesDir.Text = "[대기]" + + If IsNumeric(getSP) = False OrElse getSP() <= 0 Then + Me.pviewDesDir.Text = "[원본파일] 시작범위값이 숫자가 아니거나 0보다 작습니다" + Me.pviewDesDir.ForeColor = Color.Red + Else + Me.pviewDesDir.Text = "미리보기 : " & Me.DESD_GetDesDir(getSP, "파일명", "확장자", "") ' Me.tb_path.Text & "\" & Get_FileList(Frm_srcfile.tb_sttrange.Text + 1, "파일명", "확장자").ToString + If Me.pviewDesDir.Text.IndexOf("*") >= 0 OrElse Me.pviewDesDir.Text.IndexOf("?") >= 0 Then + Me.pviewDesDir.Text = "대상폴더조합시에는 * 또는 ? 를 사용할 수 없습니다" + Me.pviewDesDir.ForeColor = Color.Red + End If + End If + + '//대상파일부분 + If Me.desf_Impctl1.enabled = False Then Me.desf_Impctl1.enabled = True + If Me.desf_Impctl2.enabled = False Then Me.desf_Impctl2.enabled = True + If Me.desf_Impctl3.enabled = False Then Me.desf_Impctl3.enabled = True + If Me.desf_Impctl4.enabled = False Then Me.desf_Impctl4.enabled = True + If Me.desf_Impctl5.enabled = False Then Me.desf_Impctl5.enabled = True + If Me.desf_Impctl6.enabled = False Then Me.desf_Impctl6.enabled = True + If Me.desf_Impctl7.enabled = False Then Me.desf_Impctl7.enabled = True + Me.pviewDesFile.ForeColor = Color.Black + Me.pviewDesFile.Text = "[대기]" + + If IsNumeric(getSP) = False OrElse getSP() < 1 Then + Me.pviewDesFile.Text = "[원본파일] 시작범위값이 숫자가 아니거나 1보다 작습니다" + Me.pviewDesFile.ForeColor = Color.Red + Return + End If + + Me.pviewDesFile.Text = "미리보기 : " & Me.Desf_Get_FileList(getSP, "파일명", "확장자") & Pub.GetExtendFromMdi.Trim("*") + If Me.pviewDesFile.Text.IndexOf("*") >= 0 OrElse Me.pviewDesFile.Text.IndexOf("?") >= 0 Then + Me.pviewDesFile.Text = "대상파일조합시에는 * 또는 ? 를 사용할 수 없습니다" + Me.pviewDesFile.ForeColor = Color.Red + End If + + End Sub + + '''입력값에 오류를 체크한다. + Private Function Check_InputError() As Boolean + + If Me.NewList = False Then + MsgBox("원본 목록이 정의되지않았습니다", MsgBoxStyle.Critical, "확인") + Return True + End If + + Ep = Me.GetLastRowCount '//목록에서 종료줄번호 + Addlog2("원본목록 줄번호 범위 " & getSP() & " ~ " & Ep, True) + + If Val(getSP) < 1 OrElse Val(Ep) < Val(getSP) Then + MsgBox("목록의 시작줄번호가 1보다 작거나 종료번호가 시작번호보다 작습니다.", MsgBoxStyle.Critical, Ep & " 학인") + Return True + End If + + If tb_workdir.Text.StartsWith("ftp:/") Then + If btCopy.Pressed = False Then + MsgBox("FTP를 원본으로 사용할 때에는 '이동/삭제' 작업을 할 수 없습니다", MsgBoxStyle.Critical, "확인") + Return True + End If + Else + If Directory.Exists(Me.tb_workdir.Text) = False Then + MsgBox("지정된 작업폴더가 존재하지 않거나" & vbCrLf & "경로에 문제가있습니다", MsgBoxStyle.Critical, "확인") + Return True + End If + End If + + '//백업폳러확인 + If Directory.Exists(GetBakDir1) = False AndAlso (GetBackType1() = E_baktype.Folder1) Then + MsgBox("사용자지정폴더1이 존재하지않지않습니다" & vbCrLf & "백업정책을 해제하거나 경로를 다시 설정하세요", MsgBoxStyle.Critical, "확인") + Return True + End If + + '//여기까지 왔다면 오류 없음 + Return False + End Function + + Public Delegate Sub Msghandler(s As String) + Public Sub MSG(ByVal s As String) + If C1StatusBar1.InvokeRequired Then + C1StatusBar1.Invoke(New Msghandler(AddressOf MSG), New Object() {s}) + Else + lb_msg.Text = s + C1StatusBar1.Refresh() + End If + End Sub + + + +#Region "SubDir" + + Public ReadOnly Property HasSubDir As Boolean + Get + If Me.list_subdir.Items.Count > 0 Then + Return True + Else + Return False + End If + End Get + End Property + + Public ReadOnly Property SubDirCount As Integer + Get + Return Me.list_subdir.Items.Count + End Get + End Property + + Private Sub list_subdir_KeyDown(sender As Object, e As KeyEventArgs) Handles list_subdir.KeyDown + If e.KeyCode = Keys.Delete Then + If Me.list_subdir.Items.Count < 1 OrElse Me.list_subdir.FocusedItem Is Nothing Then Return + Dim 현재위치 As Integer = Me.list_subdir.FocusedItem.Index + + PLog.Add("Remove SubDir Item : " + Me.list_subdir.Items(현재위치).Text) + + Me.list_subdir.Items.Remove(Me.list_subdir.Items(현재위치)) + If Me.list_subdir.Items.Count >= 현재위치 + 1 Then + Me.list_subdir.FocusedItem = Me.list_subdir.Items(현재위치) + ElseIf Me.list_subdir.Items.Count > 0 Then + Me.list_subdir.FocusedItem = Me.list_subdir.Items(0) + End If + End If + End Sub + + '''하위폴더목록을 추가한다. + Public Sub AddSubDirList(ByVal s As String) + If s <> "" Then + If list_subdir.InvokeRequired Then + list_subdir.Invoke(New addsubDirlistHandler(AddressOf AddSubDirList), New Object() {s}) + Else + If Me.list_subdir.Items.IndexOfKey(s.ToUpper) = -1 Then + Dim lv As ListViewItem = Me.list_subdir.Items.Add(s.ToUpper, s.ToString, 0) + lv.ForeColor = Color.Black + lv.SubItems.Add("") + End If + End If + End If + End Sub + Private Delegate Sub addsubDirlistHandler(s As String) + + Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAddSubDir.Click + Dim A As String +input: + A = InputBox("\,/는 제외하고 입력하세요", "서브폴더명입력") + If A = "" Then Return + AddSubDirList(A) + GoTo input + End Sub + + Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btDeleteSubDir.Click + If Me.list_subdir.Items.Count = 0 OrElse Me.list_subdir.SelectedItems.Count < 1 Then Return + Me.list_subdir.Items.Remove(Me.list_subdir.SelectedItems(0)) + End Sub + +#End Region + +#Region "SRCFILE" + Private Sub src_bt_read_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + + End Sub + Private Sub Src_RenameColumnname() + PLog.Add("Rename : Column Title") + For i As Integer = 0 To Me.src_view1.Sheets.Count - 1 + For Each CL As FarPoint.Win.Spread.Column In Me.src_view1.Sheets(i).Columns + Me.src_view1.Sheets(i).Columns(CL.Index).Label = CL.Index + 1 + Next + Next + Me.NewList = True + End Sub + Private Sub Src_Init() + PLog.Add("Farpoint Init") + Dim im As New FarPoint.Win.Spread.InputMap + im = src_view1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused) + im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap) + im = src_view1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused) + im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap) + End Sub + + Public Function Get_SrcFileList(ByVal sp As Integer) As String + If sp = 0 Then Return "" + Dim strbuff As New System.Text.StringBuilder + strbuff.Append(Me.src_Impctl1.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl2.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl3.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl4.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl5.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl6.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl7.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + Return strbuff.ToString + End Function + + Public Function GetLastRowCount() As Integer '//마지막 줄번호를 리턴 + If Me.tb_endrange.Text = "" Then Me.tb_endrange.Text = "0" + + Dim Ep As String = Me.tb_endrange.Text '//종료줄번호 + Dim Sp As String = Me.tb_sttrange.Text '//시작줄번호 + + Dim nullcnt As Integer = 0 + Dim Offset As Integer = 10 + If Ep = "" OrElse Ep = "0" Then '//끝까지이므로 여기서 계산을 해준다. 1,2,3번열이 연속 5번 비어있으면 멈춘다. + For i As Integer = Val(Sp) To Me.src_view1.ActiveSheet.RowCount + If Me.src_view1.ActiveSheet.Cells(i, 0).Text = "" AndAlso Me.src_view1.ActiveSheet.Cells(i, 1).Text = "" AndAlso Me.src_view1.ActiveSheet.Cells(i, 2).Text = "" Then + nullcnt += 1 + If nullcnt = 5 Then + Ep = i - 4 '//160407 4 to 3 + Exit For + End If + Else + nullcnt = 0 + End If + Next + Return Val(Ep) + End If + Return Ep + End Function + + Public Function Get_FileListArray() As ArrayList + Dim FileList As New ArrayList + If NewList = False Then Return Nothing '//목록자체가 결정되지않았다. + Dim strbuff As System.Text.StringBuilder + + Dim SP, Ep As String + SP = Me.tb_sttrange.Text + Ep = Me.tb_endrange.Text + If Ep = "" OrElse Ep = "0" Then Ep = Me.src_view1.ActiveSheet.RowCount + If SP < 1 OrElse Ep < SP Then Return Nothing '//1이상으로시작하고 종료숫자는 시작보다 커야한다. + + '//파일목록을 작성합니다. + MSG("파일목록을 작성합니다") + + Dim NullCnt As Short = 0 + For i As Integer = SP To Ep + MSG(i & "번줄을 작성하는중...") + strbuff = New System.Text.StringBuilder + strbuff.Append(Me.src_Impctl1.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl2.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl3.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl4.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl5.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl6.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.src_Impctl7.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + If strbuff.ToString.Trim <> "" Then + FileList.Add(strbuff.ToString) '//내용이있으면 배열에저장한다. + NullCnt = 0 + Else + NullCnt += 1 + If NullCnt = 5 Then '//빈줄이나올때 널카운트를 증가시키고 빈줄이 5번연속나올때는 빠져나온다. + Exit For + End If + End If + Next + MSG("파일목록을 작성완료") + If FileList.Count = 0 Then Return Nothing + Return FileList + End Function + + Private Sub SRC_Imp_Enable(ByVal value As Boolean) + PLog.Add("Import Control Enable Set = " + value.ToString()) + If Me.src_Impctl1.enabled <> value Then Me.src_Impctl1.enabled = value + If Me.src_Impctl2.enabled <> value Then Me.src_Impctl2.enabled = value + If Me.src_Impctl3.enabled <> value Then Me.src_Impctl3.enabled = value + If Me.src_Impctl4.enabled <> value Then Me.src_Impctl4.enabled = value + If Me.src_Impctl5.enabled <> value Then Me.src_Impctl5.enabled = value + If Me.src_Impctl6.enabled <> value Then Me.src_Impctl6.enabled = value + If Me.src_Impctl7.enabled <> value Then Me.src_Impctl7.enabled = value + End Sub + +#End Region + +#Region "DESDIR" + Private Sub ToolStripButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles desd_find_folder.Click + Dim FB As New FolderBrowserDialog + FB.SelectedPath = Me.desd_tb_path.Text + If FB.ShowDialog = Windows.Forms.DialogResult.OK Then + Me.desd_tb_path.Text = FB.SelectedPath + End If + End Sub + Public Function DESD_GetSrcDir(ByVal Rownum As Integer, ByVal orgfn As String, ByVal orgext As String, ByVal subfolder As String) As String + '//sp는 목록을 사용햇을때 몇번째 row인지의 오프셋이다. + If Rownum = 0 Then Return "#Err" + Dim pathdiv As Char = "\"c + If tb_workdir.Text.StartsWith("ftp:") Then pathdiv = "/"c + + Dim NewDir As String + If Me.src_chk_merge.Checked Then '//폴더만사용 + ' Addlog2(Get_FileList(Rownum, orgfn, orgext).ToString) + NewDir = Me.tb_workdir.Text.Trim(pathdiv) & pathdiv & srcd_Get_FileList(Rownum, orgfn, orgext).ToString + Else + NewDir = Me.tb_workdir.Text.Trim(pathdiv) & pathdiv & subfolder + End If + ' MsgBox(NewDir.Replace("\\", "\"), MsgBoxStyle.Information, subfolder) + Return (NewDir.Replace(pathdiv + pathdiv, pathdiv)) + End Function + Public Function DESD_GetDesDir(ByVal Rownum As Integer, ByVal orgfn As String, ByVal orgext As String, ByVal subfolder As String) As String + '//sp는 목록을 사용햇을때 몇번째 row인지의 오프셋이다. + If Rownum = 0 Then Return "#Err" + + Dim NewDir As String + If Me.des_chk_merge.Checked Then '//폴더만사용 + ' Addlog2(Get_FileList(Rownum, orgfn, orgext).ToString) + NewDir = Me.desd_tb_path.Text.Trim("\") & "\" & desd_Get_FileList(Rownum, orgfn, orgext).ToString + Else + NewDir = Me.desd_tb_path.Text.Trim("\") & "\" & subfolder + End If + ' MsgBox(NewDir.Replace("\\", "\"), MsgBoxStyle.Information, subfolder) + Return (NewDir.Replace("\\", "\")) + End Function + + Delegate Function desd_Get_FileListHandler(ByVal sp As Integer, ByVal orgfn As String, ByVal orgext As String) As String + Private Function desd_Get_FileList(ByVal sp As Integer, ByVal orgfn As String, ByVal orgext As String) As String + If im1.InvokeRequired Then + Return im1.Invoke(New desd_Get_FileListHandler(AddressOf desd_Get_FileList), New Object() {sp, orgfn, orgext}) + Else + Dim strbuff As New System.Text.StringBuilder + strbuff.Append(Me.desd_Impctl1.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desd_Impctl2.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desd_Impctl3.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desd_Impctl4.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desd_Impctl5.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desd_Impctl6.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desd_Impctl7.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + Return strbuff.ToString + End If + End Function + + Delegate Function srcd_Get_FileListHandler(ByVal sp As Integer, ByVal orgfn As String, ByVal orgext As String) As String + Public Function srcd_Get_FileList(ByVal sp As Integer, ByVal orgfn As String, ByVal orgext As String) As String + If im1.InvokeRequired Then + Return im1.Invoke(New srcd_Get_FileListHandler(AddressOf srcd_Get_FileList), New Object() {sp, orgfn, orgext}) + Else + Dim strbuff As New System.Text.StringBuilder + strbuff.Append(Me.im1.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.im2.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.im3.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.im4.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.im5.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.im6.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.im7.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + Return strbuff.ToString + End If + End Function +#End Region + +#Region "DESFILE" + Public Function Desf_Get_FileList(ByVal sp As Integer, ByVal orgfn As String, ByVal orgext As String) As String + Dim strbuff As New System.Text.StringBuilder + strbuff.Append(Me.desf_Impctl1.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desf_Impctl2.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desf_Impctl3.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desf_Impctl4.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desf_Impctl5.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desf_Impctl6.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + strbuff.Append(Me.desf_Impctl7.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text) + Return strbuff.ToString + End Function +#End Region + + 'Private Sub StatusStrip1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) + ' '//사용자가 파일목록을 직접 구성하려고할때를 가정한다. + ' '//기존파일뒤에 추가할것인지 초기화하고 추가할것인지 묻는다 + ' If MsgBox("기존파일의 목록을 유지하고 추가하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "원본목록 사용자생성") <> MsgBoxResult.Ok Then + ' Me.DataSet1.FileList.Rows.Clear() + ' Me.DataSet1.FileList.AcceptChanges() + ' End If + + ' '//이렇게되면 이제 추가를 한다. + ' If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then + ' Dim STR() As String = CType(e.Data.GetData(DataFormats.FileDrop), String()) + ' For Each fn As String In STR + ' My.Application.DoEvents() + ' Dim Fi As New System.IO.FileInfo(fn) + ' Dim Dir As System.IO.DirectoryInfo + ' If Fi.Exists = False Then '//디렉토리다. + ' Dir = New System.IO.DirectoryInfo(fn) + ' For Each Ff As System.IO.FileInfo In Dir.GetFiles("*.jpg", 1) + ' Me.DataSet1.FileList.Rows.Add(New String() {Ff.DirectoryName, Ff.Name}) + ' Me.lb_cnt1.Text = "파일검색중(" & Me.DataSet1.FileList.Rows.Count & ")" + ' My.Application.DoEvents() + ' Next + ' Else '//파일일경우에 + ' If Fi.Extension.ToUpper = ".JPG" Then Me.DataSet1.FileList.Rows.Add(New String() {Fi.DirectoryName, Fi.Name}) + ' Me.lb_cnt1.Text = "파일검색중(" & Me.DataSet1.FileList.Rows.Count & ")" + ' My.Application.DoEvents() + ' End If + ' Next + ' End If + ' MsgBox(Me.DataSet1.FileList.Rows.Count, MsgBoxStyle.Information, "수집") + ' 'Me.dv_filelist.DataSource = Me.DataSet1.FileList + 'End Sub + + 'Private Sub StatusStrip1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) + ' '//대상목록파일을 직접 지정할려고할때 쓴다. + ' If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then + ' e.Effect = DragDropEffects.Copy + ' ElseIf (e.Data.GetDataPresent(DataFormats.StringFormat)) Then + ' ' MsgBox("string") + ' e.Effect = DragDropEffects.Copy + ' ElseIf (e.Data.GetDataPresent(DataFormats.Text)) Then + ' ' MsgBox("text") + ' e.Effect = DragDropEffects.Copy + ' Else + ' e.Effect = DragDropEffects.None + ' End If + 'End Sub + + Private Sub des_chk_merge_CheckedChanged(sender As Object, e As EventArgs) Handles des_chk_merge.CheckedChanged + desd_pt.Enabled = des_chk_merge.Checked + PLog.Add("대상폴더조합기능 변경 : " + des_chk_merge.Checked.ToString(), True) + End Sub + + Private Sub src_chk_merge_CheckedChanged(sender As Object, e As EventArgs) Handles src_chk_merge.CheckedChanged + srcd_pt.Enabled = src_chk_merge.Checked + ToolStrip1.Enabled = Not src_chk_merge.Checked + 'list_subdir.Enabled = Not src_chk_merge.Checked + PLog.Add("원본폴더조합기능 변경 : " + src_chk_merge.Checked.ToString(), True) + End Sub + + Private Sub srcd_find_ftp_Click(sender As Object, e As EventArgs) Handles srcd_find_ftp.Click + Dim f As New fFtpPath(FTPServer, FTPID, FTPPW, FTPPort, FTPPassive, FTPUTF8, FTPPath) + If f.ShowDialog() = Windows.Forms.DialogResult.OK Then + tb_workdir.Text = "ftp:/" + f.Selpath + PLog.Add("FTP 원본경로 변경 : " + f.Selpath) + + FTPServer = f.tb_ftpserver.Text + FTPID = f.tb_ftpid.Text + FTPPW = f.tb_ftppass.Text + FTPPort = f.tb_ftpport.Text + FTPPassive = f.chk_ftpPassive.Checked + FTPUTF8 = f.chk_ftputf8.Checked + FTPPath = f.tb_ftppath.Text + Else + MsgBox("선택이 취소되었습니다", MsgBoxStyle.Information, "확인") + End If + + FTP_0.Close() + End Sub + + Private Sub srcd_find_folder_Click(sender As Object, e As EventArgs) Handles bt_workdir.Click + Me.FB.SelectedPath = Me.tb_workdir.Text + If Me.FB.ShowDialog() = Windows.Forms.DialogResult.OK Then + Me.tb_workdir.Text = FB.SelectedPath + PLog.Add("원본경로 변경 : " + FB.SelectedPath) + End If + End Sub + + Private Sub ToolStripButton4_Click_1(sender As Object, e As EventArgs) Handles ToolStripButton4.Click + Dim SB As New System.Text.StringBuilder("[복사]") + SB.AppendLine() + SB.AppendLine("복사가될 위치 : 원본폴더로부터 이곳에 복사됩니다") + SB.AppendLine() + SB.AppendLine("[삭제]") + SB.AppendLine("사용되지않음") + SB.AppendLine() + SB.AppendLine("[이동]") + SB.AppendLine("원본폴더로부터 이동되는 위치") + MsgBox(SB.ToString, MsgBoxStyle.Information, "확인") + End Sub + + Private Sub RibbonButton10_Click(sender As Object, e As EventArgs) Handles RibbonButton10.Click + PLog.Add("닫기버튼클릭") + Me.Close() + End Sub + + Private Sub btCopy_Click(sender As Object, e As EventArgs) Handles btCopy.Click, btDel.Click, btMove.Click + + Dim bt As C1.Win.C1Ribbon.RibbonToggleButton = sender + If bt.Name.ToLower = "btdel" Then + btCopy.Pressed = False + btDel.Pressed = True + btMove.Pressed = False + PLog.Add("작업형태 [delete] 클릭") + ElseIf bt.Name.ToLower = "btmove" Then + btCopy.Pressed = False + btDel.Pressed = False + btMove.Pressed = True + PLog.Add("작업형태 [move] 클릭") + Else + btCopy.Pressed = True + btDel.Pressed = False + btMove.Pressed = False + PLog.Add("작업형태 [copy] 클릭") + End If + + End Sub + + Private Sub RibbonButton11_Click_1(sender As Object, e As EventArgs) Handles RibbonButton11.Click + Form_Status.Winhide = False + Form_Status.AutoRun = False + Form_Status.Show() + End Sub + + Private Sub RibbonTextBox2_TextChanged(sender As Object, e As EventArgs) Handles tb_sttrange.TextChanged + If Me.tb_sttrange.Text = "0" Then + MsgBox("목록의 시작값은 반드시 1보다 커야합니다", MsgBoxStyle.Critical, "확인") + Me.tb_sttrange.Text = "1" + End If + End Sub + + '''파일(엑셀)열기 + Private Sub RibbonButton8_Click(sender As Object, e As EventArgs) Handles btOpenFile.Click + Dim fn As String + If Prev_file Is Nothing Then + fn = ARINCLASS.OpenFile("", "엑셀파일|*.xls") + Else + fn = ARINCLASS.OpenFile(Prev_file.FullName, "엑셀파일|*.xls") + End If + + If fn <> "" Then + + '//설정창으로 표시를 해준다. + TabControl1.SelectedIndex = 0 + + Prev_file = New System.IO.FileInfo(fn) + + Noti("File Open" + vbCrLf + fn) + PLog.Add("File Open : " + fn) + Me.src_view1.OpenExcel(fn) + Src_RenameColumnname() + + '//줄너비값을 이용하여 처리해준다 + If chk_autorow.Checked Then + tb_endrange.Text = "0" + Dim 마지막줄번호 As Integer = GetLastRowCount() + tb_endrange.Text = 마지막줄번호.ToString() + src_view1_Sheet1.RowCount = CInt(tb_endrange.Text) + 5 + PLog.Add("Auto RowCount = " + tb_endrange.Text, True) + End If + End If + End Sub + + '''목록직접작성하기 + Private Sub RibbonButton9_Click(sender As Object, e As EventArgs) Handles btMakeNewList.Click + + '//설정창으로 표시를 해준다. + TabControl1.SelectedIndex = 0 + + Prev_file = Nothing + Me.src_view1.ActiveSheet.RowCount = 0 + Me.src_view1.ActiveSheet.RowCount = 100 + Me.src_view1.ActiveSheet.ColumnCount = 0 + Me.src_view1.ActiveSheet.ColumnCount = 100 + Dim CT As New FarPoint.Win.Spread.CellType.TextCellType + + For i As Integer = 0 To Me.src_view1.Sheets.Count - 1 + For Each CL As FarPoint.Win.Spread.Column In Me.src_view1.Sheets(i).Columns + CL.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center + CL.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center + Me.src_view1.Sheets(i).Columns(CL.Index).CellType = CT + Next + Next + Src_RenameColumnname() + End Sub + + Private Sub RibbonButton8_Click_1(sender As Object, e As EventArgs) Handles bT_netdrvconn.Click + Dim DirName As Char = "X" + Dim Path As String = "\\Kepgis_4822\ndis\photo" +dname: + If Directory.Exists(DirName & ":\") Then + MsgBox("지정된 드라이브가 존재합니다 다른드라이브명을 사용하세요", MsgBoxStyle.Critical, "확인") + DirName = Chr(Asc(DirName) + 1) + GoTo dname + End If + + Dim A As New System.Text.StringBuilder("사용할 네트워크 드라이브/네트워크경로를 입력하세요") + A.AppendLine() + A.AppendLine("예) X/\\Kepgis_<지점코드>\ndis\photo") + Dim n As String = InputBox(A.ToString, "드라이브연결", DirName & "/" & Path) + If n = "" Then Return + Dim S() As String = n.Split("/") + + If Directory.Exists(S(0) & ":\") Then + MsgBox("지정된 드라이브가 존재합니다 다른드라이브명을 사용하세요", MsgBoxStyle.Critical, "확인") + Return + End If + + Dim P As New Process + P.StartInfo.FileName = "net" + P.StartInfo.Arguments = " use " & S(0) & ": " & S(1) + + PLog.Add("Net Drive Connect : " + P.StartInfo.Arguments) + P.Start() + + End Sub + + Private Sub RibbonButton12_Click(sender As Object, e As EventArgs) Handles bt_netdrvdel.Click + Dim A As String = InputBox("드라이브명을 입력하세요" & vbCrLf & "X", "네트워크드라이브 삭제", "X") + If A = "" Then Return + Dim P As New Process + P.StartInfo.FileName = "net" + P.StartInfo.Arguments = " use " & A & ": /d" + + PLog.Add("Net Drive Delete : " + P.StartInfo.Arguments) + P.Start() + End Sub + + Private Sub RibbonButton8_Click_2(sender As Object, e As EventArgs) Handles RibbonButton8.Click + If Me.Setting_Save(-999) Then + MsgBox("매크로가 저장되었습니다", MsgBoxStyle.Information, "확인") + Me.Load_Macro() + End If + End Sub + + Private Sub RibbonButton12_Click_1(sender As Object, e As EventArgs) Handles RibbonButton12.Click + If Me.cmb_macro.SelectedIndex <= 0 Then + MsgBox("저장될 매크로가 선택되지않았습니다", MsgBoxStyle.Information, "확인") + Return + End If + If Me.Setting_Save(Me.cmb_macro.SelectedIndex) Then + MsgBox("매크로가 저장되었습니다", MsgBoxStyle.Information, "확인") + Me.Load_Macro() + End If + End Sub + + Private Sub RibbonButton13_Click(sender As Object, e As EventArgs) Handles RibbonButton13.Click + If Me.cmb_macro.SelectedIndex <= 0 Then + MsgBox("삭제될 매크로가 선택되지않았습니다", MsgBoxStyle.Information, "확인") + Return + End If + File.Delete(Me.Macro(Me.cmb_macro.SelectedIndex - 1).FileName) + MsgBox("매크로가 삭제되었습니다", MsgBoxStyle.Information, "확인") + Me.Load_Macro() + End Sub + + Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmb_macro.SelectedIndexChanged + Setting_Load(Me.cmb_macro.SelectedIndex) + End Sub + +#Region "실행버튼" + + Private Sub RibbonButton1_Click(sender As Object, e As EventArgs) Handles bt_run.Click + Job_Start(chkReplay.Checked) + End Sub + + Sub Job_Start(replay As Boolean) + If Check_InputError() Then Return + Me.Timer1.Enabled = False + + Dim startP As Integer = Integer.Parse(tb_sttrange.Text) '//시작줄 + Dim endP As Integer = GetLastRowCount() '//종료줄 + Dim WorkDir As String = GetWorkDIr() + + If MsgBox("시스템 데이터를 수집합니다" & vbCrLf & "이후 실행 메세지가 출력됩니다" & vbCrLf & "계속하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "실행확인") <> MsgBoxResult.Ok Then Return + + '//작업창으로 화면을 돌려준다. + Me.TabControl1.SelectedIndex = 1 + Me.TabControl1.Refresh() + + '//데이터테이블초기화(대상목록이저장된다) + PLog.Add("데이터테이블초기화") + DataSet1.SrcList.Rows.Clear() + DataSet1.FileList.Rows.Clear() + DataSet1.WorkList.Rows.Clear() + DataSet1.SrcList.AcceptChanges() '//삭제승인 + DataSet1.FileList.AcceptChanges() + DataSet1.WorkList.AcceptChanges() + + '//스케쥴창표시 + lvSchedule.Items.Clear() + lvSchedule.Refresh() + + '//작업파라미터를 생성 + Dim param As New RunParam + param.StartP = startP + param.Replay = replay + param.EndP = endP + param.WorkDir = WorkDir + param.isCopy = btCopy.Pressed + param.원본폴더조합 = src_chk_merge.Checked + param.확장자 = Me.GetExt() + + If chkHide.Checked Then + Me.WindowState = FormWindowState.Minimized + Noti("작업실행") + End If + + '//작업시작 + If Job.Run(param) Then + + '//스케쥴데이터도 기록을 해준다. 160717 + Dim fn As String = PathList + "\스케쥴" + Format(Now, "yyMMddHHmm") + ".txt" + Dim buf As New System.Text.StringBuilder + For i As Integer = 1 To lvSchedule.Columns.Count + buf.Append(vbTab + lvSchedule.Columns(i - 1).Text) + Next + buf.AppendLine() + For Each lv As ListViewItem In lvSchedule.Items + For i As Integer = 1 To lvSchedule.Columns.Count + buf.Append(vbTab + lv.SubItems(i - 1).Text) + Next + buf.AppendLine() + Next + System.IO.File.WriteAllText(fn, buf.ToString()) + + '//목록을 미리 저장해준다. + 'Dim 파일_전체 As String = PathList + "\" + Format(Now, "yyMMddHHmm") + "전체파일목록.xls" + 'Dim 파일_작업 As String = PathList + "\" + Format(Now, "yyMMddHHmm") + "작업파일목록.xls" + 'Dim 파일_원본 As String = PathList + "\" + Format(Now, "yyMMddHHmm") + "원본파일목록.xls" + + 'SaveExcelFile(파일_전체, DataSet1.FileList) + 'SaveExcelFile(파일_작업, DataSet1.WorkList) + 'SaveExcelFile(파일_원본, DataSet1.SrcList) + + If chkHide.Checked Then + Form_Status.WindowState = FormWindowState.Minimized + Else + Form_Status.WindowState = FormWindowState.Normal + End If + Form_Status.Show() + Application.DoEvents() + + '//svae List + Form_Status.AutoRun = chkAutoRun.Checked + Form_Status.Winhide = chkHide.Checked + Form_Status.SaveList(Form_Status.E_SaveType.FileList, False) + Form_Status.SaveList(Form_Status.E_SaveType.SrcList, False) + Form_Status.SaveList(Form_Status.E_SaveType.WorkList, False) + + '//작업내용표시 + If chkAutoRun.Checked Then + Form_Status.btRun.PerformClick() + End If + End If + + '//임시로 뷰에 보여준다. + Me.Timer1.Enabled = True + End Sub + +#End Region + + + +#Region "Progress Bar" + + Private Delegate Sub PorgressSetHandler(Max As Integer, Min As Integer, value As Integer) + Public Sub ProgressSet(Max As Integer, Min As Integer, value As Integer) + If C1StatusBar1.InvokeRequired Then + C1StatusBar1.Invoke(New PorgressSetHandler(AddressOf ProgressSet), New Object() {Max, Min}) + Else + prb1.Maximum = Max + prb1.Minimum = Min + prb1.Value = value + C1StatusBar1.Refresh() + End If + End Sub + + Private Delegate Sub ProgressvalHandler(value As Integer) + Public Sub ProgressVal(value As Integer) + If C1StatusBar1.InvokeRequired Then + C1StatusBar1.Invoke(New ProgressvalHandler(AddressOf ProgressVal), New Object() {value}) + Else + prb1.Value = value + C1StatusBar1.Refresh() + End If + End Sub + +#End Region + + '''확장자명을 가져옵니다. + Function GetExt() As String + If C1Ribbon1.InvokeRequired Then + Return C1Ribbon1.Invoke(New GetExtHandler(AddressOf GetExt), New Object() {}) + Else + Dim ext As String = tb_ext.Text.Trim() + If String.IsNullOrEmpty(ext) Then ext = "JPG" + Return ext + End If + End Function + Delegate Sub GetExtHandler() + + '''입력된 하위폴더목록이 현재 존재하는가 확인합니다. + Function CheckExistSubDir(subdir As String) As Boolean + If list_subdir.InvokeRequired Then + Return list_subdir.Invoke(New CheckExistSubDirHandler(AddressOf CheckExistSubDir), New Object() {subdir}) + Else + If list_subdir.Items.IndexOfKey(subdir) = -1 Then + Return False + Else + Return True + End If + End If + End Function + Delegate Sub CheckExistSubDirHandler(subdir As String) + + Sub SubDirListCler() + If list_subdir.InvokeRequired Then + list_subdir.Invoke(New MethodInvoker(AddressOf SubDirListCler), New Object() {}) + Else + list_subdir.Items.Clear() + list_subdir.Refresh() + End If + End Sub + + Sub ScheduleListCler() + If lvSchedule.InvokeRequired Then + lvSchedule.Invoke(New MethodInvoker(AddressOf ScheduleListCler), New Object() {}) + Else + lvSchedule.Items.Clear() + lvSchedule.Refresh() + End If + End Sub + + Function GetSrcMerge() As Boolean + If ToolStrip5.InvokeRequired Then + ToolStrip5.Invoke(New MethodInvoker(AddressOf GetSrcMerge), New Object() {}) + Else + Return src_chk_merge.Checked + End If + End Function + + Function GetStartPosition() As Integer + If C1Ribbon1.InvokeRequired Then + C1Ribbon1.Invoke(New MethodInvoker(AddressOf GetStartPosition), New Object() {}) + Else + Return tb_sttrange.Text + End If + End Function + + Function GetSubDirCount() As Integer + If list_subdir.InvokeRequired Then + list_subdir.Invoke(New MethodInvoker(AddressOf GetSubDirCount), New Object() {}) + Else + Return list_subdir.Items.Count + End If + End Function + + Delegate Sub GetSubDirItemStringHandler(rowindex As Integer, colindex As Integer) + Function GetSubDirItemString(rowindex As Integer, colindex As Integer) As String + If list_subdir.InvokeRequired Then + Return list_subdir.Invoke(New GetSubDirItemStringHandler(AddressOf GetSubDirItemString), New Object() {rowindex, colindex}) + Else + Return list_subdir.Items(rowindex).SubItems(colindex).Text + End If + End Function + + Delegate Sub AddScheduleItemHanlder(A As String, B As String, C As String, D As String) + Sub AddScheduleItem(A As String, B As String, C As String, D As String) + If lvSchedule.InvokeRequired Then + lvSchedule.Invoke(New AddScheduleItemHanlder(AddressOf AddScheduleItem), New Object() {A, B, C, D}) + Else + Dim lv As ListViewItem = lvSchedule.Items.Add(A) + lv.SubItems.Add(B) + lv.SubItems.Add(C) + lv.SubItems.Add(D) + lvSchedule.Refresh() + End If + End Sub + + Private Sub RibbonButton1_Click_1(sender As Object, e As EventArgs) Handles RibbonButton1.Click + If cbBakType.SelectedIndex <> 1 Then + MsgBox("백업방법이 사용자지정폴더일때에 사용됩니다.", MsgBoxStyle.Information, "확인") + End If + Me.FB.SelectedPath = Me.tb_bakdir1.Text + Me.FB.ShowDialog() + Me.tb_bakdir1.Text = FB.SelectedPath + End Sub + + Private Sub src_chk_merge_Click(sender As Object, e As EventArgs) Handles src_chk_merge.Click + If src_chk_merge.Checked Then + MsgBox("원본폴더를 조합할 경우 '하위폴더목록'을 수동으로 입력할 수 없습니다" + vbCrLf + "하위폴더는 원본조합에서 자동으로 설정됩니다") + End If + End Sub + + Private Sub chkReplay_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkReplay.CheckedChanged + PLog.Add("작업이어하기 클릭 변경값=" + chkReplay.Checked.ToString()) + End Sub + + Private Sub chkAutoRun_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkAutoRun.CheckedChanged + PLog.Add("작업자동실행 클릭 변경값=" + chkAutoRun.Checked.ToString()) + End Sub + + Private Sub btMakeCache_Click(sender As System.Object, e As System.EventArgs) Handles btMakeCache.Click + '//Summary 파일을 재 생성한다. + If Not GetWorkDIr().ToLower.StartsWith("ftp:") Then + MsgBox("캐쉬파일(Summary.txt)는 FTP대상일때만 사용할 수 있습니다", MsgBoxStyle.Critical, "확인") + Return + End If + + Dim CacheDirName As String = PathJob + "\" + FTPServer + CacheDirName = CacheDirName.Replace("\\", "\") + + MsgBox("캐쉬파일(Summary.txt)을 생성할 폴더를 선택하세요", MsgBoxStyle.Information, "확인") + Dim fd As New FolderBrowserDialog + fd.SelectedPath = CacheDirName + If (fd.ShowDialog() = Windows.Forms.DialogResult.OK) Then + Dim di As New System.IO.DirectoryInfo(fd.SelectedPath) + If Not di.Exists Then + MsgBox("대상폴더" + vbCrLf + di.FullName + "가 존재하지 않습니다", MsgBoxStyle.Critical, "확인") + Return + End If + + '//summary 파일이 존재하는가? + Dim Summary As New System.IO.FileInfo(di.FullName + "\Summary.txt") + If Summary.Exists Then + If MsgBox("캐쉬파일(Summary.txt)가 현재 존재합니다. 새로 생성하시겠습니까?", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "확인") <> MsgBoxResult.Yes Then + Return + End If + End If + + Dim files() As System.IO.FileInfo = di.GetFiles("*." + GetExt()) + If files.Length < 1 Then + If MsgBox("대상폴더에 파일이 존재하지 않습니다." + vbCrLf + "진행하시겠습니까?", _ + MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "확인") <> MsgBoxResult.Yes Then + Return + End If + End If + + + '//이대상파일의 summay를 먼저 생성하고 하위폴더를 추가로 생성한다. + Dim summaryCur As New ArinSetting.ArinSetting(Summary.FullName) + summaryCur.CreateFile() + summaryCur.Data("file", "count") = files.Length.ToString() + + Dim filelist As String = "" + For Each fi As System.IO.FileInfo In files + filelist += "," + fi.Name + Next + summaryCur.Data("file", "list") = filelist + + Dim 하위폴더() As System.IO.DirectoryInfo = di.GetDirectories() + summaryCur.Data("subdir", "count") = 하위폴더.Length.ToString() + + Dim 하위폴더목록 As String = "" + For Each subdr As System.IO.DirectoryInfo In 하위폴더 + 하위폴더목록 += "," + subdr.Name + Next + summaryCur.Data("subdir", "list") = 하위폴더목록 + summaryCur.Save() + + MsgBox("캐쉬파일(Summary.txt)이 생성되었습니다" + vbCrLf + _ + "폴더내에 하위폴더가 있다면 해당 폴더도 개별 생성해야합니다", MsgBoxStyle.Information, "확인") + End If + + End Sub +End Class + diff --git a/DriveInfo/My Project/Application.Designer.vb b/DriveInfo/My Project/Application.Designer.vb new file mode 100644 index 0000000..8e067ed --- /dev/null +++ b/DriveInfo/My Project/Application.Designer.vb @@ -0,0 +1,38 @@ +'------------------------------------------------------------------------------ +' +' 이 코드는 도구를 사용하여 생성되었습니다. +' 런타임 버전:4.0.30319.42000 +' +' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +' 이러한 변경 내용이 손실됩니다. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + '참고: 자동으로 생성되므로 직접 이 파일을 수정하지 마십시오. 변경할 사항이 있거나 + ' 파일에서 빌드 오류가 발생하는 경우 프로젝트 디자이너로 + ' 이동([프로젝트 속성]으로 이동하거나 솔루션 탐색기에서 My Project 노드를 + ' 두 번 클릭)한 다음 [응용 프로그램] 탭에서 변경하십시오. + ' + Partial Friend Class MyApplication + + _ + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = false + Me.EnableVisualStyles = true + Me.SaveMySettingsOnExit = false + Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + _ + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Global.FileManager.MDiMain + End Sub + End Class +End Namespace diff --git a/DriveInfo/My Project/Application.myapp b/DriveInfo/My Project/Application.myapp new file mode 100644 index 0000000..e117e97 --- /dev/null +++ b/DriveInfo/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + true + MDiMain + false + 0 + true + 0 + false + \ No newline at end of file diff --git a/DriveInfo/My Project/ApplicationEvents.vb b/DriveInfo/My Project/ApplicationEvents.vb new file mode 100644 index 0000000..0516c32 --- /dev/null +++ b/DriveInfo/My Project/ApplicationEvents.vb @@ -0,0 +1,15 @@ +Namespace My + + ' MyApplication ̺Ʈ ֽϴ. + ' + ' Startup: α׷ ۵ǰ ߻մϴ. + ' Shutdown: α׷ Ŀ ߻մϴ. ̺Ʈ α׷ Ǵ 쿡 ߻ ʽϴ. + ' UnhandledException: α׷ ó ܰ ߻ϴ ̺Ʈ ߻մϴ. + ' StartupNextInstance: νϽ α׷ ش α׷ ̹ Ȱ ߻մϴ. + ' NetworkAvailabilityChanged: Ʈũ ǰų ߻մϴ. + Partial Friend Class MyApplication + + End Class + +End Namespace + diff --git a/DriveInfo/My Project/AssemblyInfo.vb b/DriveInfo/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..5495cc2 --- /dev/null +++ b/DriveInfo/My Project/AssemblyInfo.vb @@ -0,0 +1,37 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' General Information about an assembly is controlled through the following +' set of attributes. Change these attribute values to modify the information +' associated with an assembly. + +' Review the values of the assembly attributes + + + + + + + + + + + + +'The following GUID is for the ID of the typelib if this project is exposed to COM + + +' Version information for an assembly consists of the following four values: +' +' Major Version +' Minor Version +' Build Number +' Revision +' +' You can specify all the values or you can default the Build and Revision Numbers +' by using the '*' as shown below: +' + + + diff --git a/DriveInfo/My Project/Resources.Designer.vb b/DriveInfo/My Project/Resources.Designer.vb new file mode 100644 index 0000000..59a3d73 --- /dev/null +++ b/DriveInfo/My Project/Resources.Designer.vb @@ -0,0 +1,213 @@ +'------------------------------------------------------------------------------ +' +' 이 코드는 도구를 사용하여 생성되었습니다. +' 런타임 버전:4.0.30319.42000 +' +' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +' 이러한 변경 내용이 손실됩니다. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + '이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + '클래스에서 자동으로 생성되었습니다. + '멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을 + '다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + ''' + ''' 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. + ''' + _ + 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("FileManager.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대한 현재 스레드의 CurrentUICulture + ''' 속성을 재정의합니다. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property Accessibility() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("Accessibility", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property apps_16() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("apps_16", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property foldr_16() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("foldr_16", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property go_32() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("go_32", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property hd_24() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("hd_24", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property impt_32() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("impt_32", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property opts_16() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("opts_16", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property opts_24() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("opts_24", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property play_32() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("play_32", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property play_321() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("play_321", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property remov_16() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("remov_16", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property save_24() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("save_24", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property splay_32() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("splay_32", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property srch_32() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("srch_32", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + ''' + Friend ReadOnly Property stop_16() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("stop_16", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + End Module +End Namespace diff --git a/DriveInfo/My Project/Resources.resx b/DriveInfo/My Project/Resources.resx new file mode 100644 index 0000000..90ec401 --- /dev/null +++ b/DriveInfo/My Project/Resources.resx @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + ..\Resources\go_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\impt_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\play_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\remov_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\save_24.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\hd_24.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\opts_24.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\play_321.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\srch_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\foldr_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\apps_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Accessibility.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\stop_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\splay_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\opts_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/DriveInfo/My Project/Settings.Designer.vb b/DriveInfo/My Project/Settings.Designer.vb new file mode 100644 index 0000000..bfe3604 --- /dev/null +++ b/DriveInfo/My Project/Settings.Designer.vb @@ -0,0 +1,71 @@ +'------------------------------------------------------------------------------ +' +' 이 코드는 도구를 사용하여 생성되었습니다. +' 런타임 버전:4.0.30319.42000 +' +' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +' 이러한 변경 내용이 손실됩니다. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + + + _ +Partial Friend NotInheritable Class Settings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As Settings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New Settings()),Settings) + +#Region "My.Settings 자동 저장 기능" +#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 Settings + 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 + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.FileManager.Settings + Get + Return Global.FileManager.Settings.Default + End Get + End Property + End Module +End Namespace diff --git a/DriveInfo/My Project/Settings.settings b/DriveInfo/My Project/Settings.settings new file mode 100644 index 0000000..8e615f2 --- /dev/null +++ b/DriveInfo/My Project/Settings.settings @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/DriveInfo/My Project/app.manifest b/DriveInfo/My Project/app.manifest new file mode 100644 index 0000000..95e43a4 --- /dev/null +++ b/DriveInfo/My Project/app.manifest @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DriveInfo/My Project/licenses.licx b/DriveInfo/My Project/licenses.licx new file mode 100644 index 0000000..0a9f403 --- /dev/null +++ b/DriveInfo/My Project/licenses.licx @@ -0,0 +1,3 @@ +C1.Win.C1Ribbon.C1StatusBar, C1.Win.C1Ribbon.4, Version=4.0.20171.248, Culture=neutral, PublicKeyToken=79882d576c6336da +FarPoint.Win.Spread.FpSpread, FarPoint.Win.Spread, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457 +C1.Win.C1Ribbon.C1Ribbon, C1.Win.C1Ribbon.4, Version=4.0.20171.248, Culture=neutral, PublicKeyToken=79882d576c6336da diff --git a/DriveInfo/My Project/licenses.licx.bak b/DriveInfo/My Project/licenses.licx.bak new file mode 100644 index 0000000..87d4eda --- /dev/null +++ b/DriveInfo/My Project/licenses.licx.bak @@ -0,0 +1,3 @@ +C1.Win.C1Ribbon.C1Ribbon, C1.Win.C1Ribbon.2, Version=2.0.20153.110, Culture=neutral, PublicKeyToken=79882d576c6336da +FarPoint.Win.Spread.FpSpread, FarPoint.Win.Spread, Version=5.0.2005.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457 +C1.Win.C1Ribbon.C1StatusBar, C1.Win.C1Ribbon.2, Version=2.0.20153.110, Culture=neutral, PublicKeyToken=79882d576c6336da diff --git a/DriveInfo/Resources/Accessibility.png b/DriveInfo/Resources/Accessibility.png new file mode 100644 index 0000000..8a7a54e Binary files /dev/null and b/DriveInfo/Resources/Accessibility.png differ diff --git a/DriveInfo/Resources/apps_16.png b/DriveInfo/Resources/apps_16.png new file mode 100644 index 0000000..9772817 Binary files /dev/null and b/DriveInfo/Resources/apps_16.png differ diff --git a/DriveInfo/Resources/foldr_16.png b/DriveInfo/Resources/foldr_16.png new file mode 100644 index 0000000..bfb63dc Binary files /dev/null and b/DriveInfo/Resources/foldr_16.png differ diff --git a/DriveInfo/Resources/go_32.png b/DriveInfo/Resources/go_32.png new file mode 100644 index 0000000..0a1c84a Binary files /dev/null and b/DriveInfo/Resources/go_32.png differ diff --git a/DriveInfo/Resources/hd_24.png b/DriveInfo/Resources/hd_24.png new file mode 100644 index 0000000..ee57acc Binary files /dev/null and b/DriveInfo/Resources/hd_24.png differ diff --git a/DriveInfo/Resources/impt_32.png b/DriveInfo/Resources/impt_32.png new file mode 100644 index 0000000..240ea72 Binary files /dev/null and b/DriveInfo/Resources/impt_32.png differ diff --git a/DriveInfo/Resources/opts_16.png b/DriveInfo/Resources/opts_16.png new file mode 100644 index 0000000..62b7bd1 Binary files /dev/null and b/DriveInfo/Resources/opts_16.png differ diff --git a/DriveInfo/Resources/opts_24.png b/DriveInfo/Resources/opts_24.png new file mode 100644 index 0000000..c9287f4 Binary files /dev/null and b/DriveInfo/Resources/opts_24.png differ diff --git a/DriveInfo/Resources/play_32.png b/DriveInfo/Resources/play_32.png new file mode 100644 index 0000000..164740d Binary files /dev/null and b/DriveInfo/Resources/play_32.png differ diff --git a/DriveInfo/Resources/play_321.png b/DriveInfo/Resources/play_321.png new file mode 100644 index 0000000..164740d Binary files /dev/null and b/DriveInfo/Resources/play_321.png differ diff --git a/DriveInfo/Resources/remov_16.png b/DriveInfo/Resources/remov_16.png new file mode 100644 index 0000000..4f048fb Binary files /dev/null and b/DriveInfo/Resources/remov_16.png differ diff --git a/DriveInfo/Resources/save_24.png b/DriveInfo/Resources/save_24.png new file mode 100644 index 0000000..3ed41c6 Binary files /dev/null and b/DriveInfo/Resources/save_24.png differ diff --git a/DriveInfo/Resources/splay_32.png b/DriveInfo/Resources/splay_32.png new file mode 100644 index 0000000..1ccbe9b Binary files /dev/null and b/DriveInfo/Resources/splay_32.png differ diff --git a/DriveInfo/Resources/srch_32.png b/DriveInfo/Resources/srch_32.png new file mode 100644 index 0000000..574f519 Binary files /dev/null and b/DriveInfo/Resources/srch_32.png differ diff --git a/DriveInfo/Resources/stop_16.png b/DriveInfo/Resources/stop_16.png new file mode 100644 index 0000000..a9967a8 Binary files /dev/null and b/DriveInfo/Resources/stop_16.png differ diff --git a/DriveInfo/app.config b/DriveInfo/app.config new file mode 100644 index 0000000..6685f77 --- /dev/null +++ b/DriveInfo/app.config @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DriveInfo/fFtpPath.Designer.vb b/DriveInfo/fFtpPath.Designer.vb new file mode 100644 index 0000000..edea7bd --- /dev/null +++ b/DriveInfo/fFtpPath.Designer.vb @@ -0,0 +1,301 @@ + _ +Partial Class fFtpPath + Inherits System.Windows.Forms.Form + + 'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. + _ + 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 + + 'Windows Form 디자이너에 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. + '수정하려면 Windows Form 디자이너를 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + Me.lv_ftpde = New System.Windows.Forms.ListView() + Me.columnHeader18 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.columnHeader21 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.columnHeader19 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.columnHeader20 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.Panel2 = New System.Windows.Forms.Panel() + Me.Panel1 = New System.Windows.Forms.Panel() + Me.chk_ftputf8 = New System.Windows.Forms.CheckBox() + Me.chk_ftpPassive = New System.Windows.Forms.CheckBox() + Me.tb_ftpserver = New System.Windows.Forms.TextBox() + Me.tb_ftpport = New System.Windows.Forms.TextBox() + Me.Label2 = New System.Windows.Forms.Label() + Me.tb_ftppass = New System.Windows.Forms.TextBox() + Me.Label3 = New System.Windows.Forms.Label() + Me.tb_ftpid = New System.Windows.Forms.TextBox() + Me.Label4 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.Button2 = New System.Windows.Forms.Button() + Me.btFtpSearch = New System.Windows.Forms.Button() + Me.tb_ftppath = New System.Windows.Forms.TextBox() + Me.Label5 = New System.Windows.Forms.Label() + Me.Label1 = New System.Windows.Forms.Label() + Me.Panel2.SuspendLayout() + Me.Panel1.SuspendLayout() + Me.SuspendLayout() + ' + 'lv_ftpde + ' + Me.lv_ftpde.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.columnHeader18, Me.columnHeader21, Me.columnHeader19, Me.columnHeader20}) + Me.lv_ftpde.Dock = System.Windows.Forms.DockStyle.Fill + Me.lv_ftpde.FullRowSelect = True + Me.lv_ftpde.GridLines = True + Me.lv_ftpde.Location = New System.Drawing.Point(0, 106) + Me.lv_ftpde.Name = "lv_ftpde" + Me.lv_ftpde.Size = New System.Drawing.Size(542, 410) + Me.lv_ftpde.TabIndex = 17 + Me.lv_ftpde.UseCompatibleStateImageBehavior = False + Me.lv_ftpde.View = System.Windows.Forms.View.Details + ' + 'columnHeader18 + ' + Me.columnHeader18.Text = "FileName" + Me.columnHeader18.Width = 207 + ' + 'columnHeader21 + ' + Me.columnHeader21.Text = "Ext" + Me.columnHeader21.Width = 69 + ' + 'columnHeader19 + ' + Me.columnHeader19.Text = "Size" + Me.columnHeader19.Width = 132 + ' + 'columnHeader20 + ' + Me.columnHeader20.Text = "Time" + Me.columnHeader20.Width = 127 + ' + 'Panel2 + ' + Me.Panel2.Controls.Add(Me.Panel1) + Me.Panel2.Controls.Add(Me.Button2) + Me.Panel2.Controls.Add(Me.btFtpSearch) + Me.Panel2.Controls.Add(Me.tb_ftppath) + Me.Panel2.Controls.Add(Me.Label5) + Me.Panel2.Dock = System.Windows.Forms.DockStyle.Top + Me.Panel2.Location = New System.Drawing.Point(0, 0) + Me.Panel2.Name = "Panel2" + Me.Panel2.Size = New System.Drawing.Size(542, 106) + Me.Panel2.TabIndex = 16 + ' + 'Panel1 + ' + Me.Panel1.BackColor = System.Drawing.Color.Gainsboro + Me.Panel1.Controls.Add(Me.chk_ftputf8) + Me.Panel1.Controls.Add(Me.chk_ftpPassive) + Me.Panel1.Controls.Add(Me.tb_ftpserver) + Me.Panel1.Controls.Add(Me.tb_ftpport) + Me.Panel1.Controls.Add(Me.Label2) + Me.Panel1.Controls.Add(Me.tb_ftppass) + Me.Panel1.Controls.Add(Me.Label3) + Me.Panel1.Controls.Add(Me.tb_ftpid) + Me.Panel1.Controls.Add(Me.Label4) + Me.Panel1.Controls.Add(Me.Label6) + Me.Panel1.Dock = System.Windows.Forms.DockStyle.Top + Me.Panel1.Location = New System.Drawing.Point(0, 0) + Me.Panel1.Name = "Panel1" + Me.Panel1.Size = New System.Drawing.Size(542, 61) + Me.Panel1.TabIndex = 8 + ' + 'chk_ftputf8 + ' + Me.chk_ftputf8.AutoSize = True + Me.chk_ftputf8.Location = New System.Drawing.Point(12, 34) + Me.chk_ftputf8.Name = "chk_ftputf8" + Me.chk_ftputf8.Size = New System.Drawing.Size(59, 16) + Me.chk_ftputf8.TabIndex = 12 + Me.chk_ftputf8.Text = "UTF-8" + Me.chk_ftputf8.UseVisualStyleBackColor = True + ' + 'chk_ftpPassive + ' + Me.chk_ftpPassive.AutoSize = True + Me.chk_ftpPassive.Location = New System.Drawing.Point(12, 11) + Me.chk_ftpPassive.Name = "chk_ftpPassive" + Me.chk_ftpPassive.Size = New System.Drawing.Size(69, 16) + Me.chk_ftpPassive.TabIndex = 11 + Me.chk_ftpPassive.Text = "Passive" + Me.chk_ftpPassive.UseVisualStyleBackColor = True + ' + 'tb_ftpserver + ' + Me.tb_ftpserver.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.tb_ftpserver.Location = New System.Drawing.Point(149, 9) + Me.tb_ftpserver.Name = "tb_ftpserver" + Me.tb_ftpserver.Size = New System.Drawing.Size(201, 21) + Me.tb_ftpserver.TabIndex = 4 + Me.tb_ftpserver.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'tb_ftpport + ' + Me.tb_ftpport.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.tb_ftpport.Location = New System.Drawing.Point(394, 32) + Me.tb_ftpport.Name = "tb_ftpport" + Me.tb_ftpport.Size = New System.Drawing.Size(139, 21) + Me.tb_ftpport.TabIndex = 10 + Me.tb_ftpport.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.Location = New System.Drawing.Point(87, 13) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(56, 12) + Me.Label2.TabIndex = 3 + Me.Label2.Text = "Server IP" + ' + 'tb_ftppass + ' + Me.tb_ftppass.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.tb_ftppass.Location = New System.Drawing.Point(149, 32) + Me.tb_ftppass.Name = "tb_ftppass" + Me.tb_ftppass.PasswordChar = Global.Microsoft.VisualBasic.ChrW(42) + Me.tb_ftppass.Size = New System.Drawing.Size(201, 21) + Me.tb_ftppass.TabIndex = 8 + Me.tb_ftppass.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'Label3 + ' + Me.Label3.AutoSize = True + Me.Label3.Location = New System.Drawing.Point(374, 13) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(16, 12) + Me.Label3.TabIndex = 5 + Me.Label3.Text = "ID" + ' + 'tb_ftpid + ' + Me.tb_ftpid.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.tb_ftpid.Location = New System.Drawing.Point(394, 9) + Me.tb_ftpid.Name = "tb_ftpid" + Me.tb_ftpid.Size = New System.Drawing.Size(139, 21) + Me.tb_ftpid.TabIndex = 6 + Me.tb_ftpid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'Label4 + ' + Me.Label4.AutoSize = True + Me.Label4.Location = New System.Drawing.Point(81, 36) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(62, 12) + Me.Label4.TabIndex = 7 + Me.Label4.Text = "Password" + ' + 'Label6 + ' + Me.Label6.AutoSize = True + Me.Label6.Location = New System.Drawing.Point(363, 36) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(27, 12) + Me.Label6.TabIndex = 9 + Me.Label6.Text = "Port" + ' + 'Button2 + ' + Me.Button2.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Button2.Location = New System.Drawing.Point(456, 68) + Me.Button2.Name = "Button2" + Me.Button2.Size = New System.Drawing.Size(74, 29) + Me.Button2.TabIndex = 7 + Me.Button2.Text = "선택" + Me.Button2.UseVisualStyleBackColor = True + ' + 'btFtpSearch + ' + Me.btFtpSearch.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.btFtpSearch.Location = New System.Drawing.Point(391, 68) + Me.btFtpSearch.Name = "btFtpSearch" + Me.btFtpSearch.Size = New System.Drawing.Size(61, 29) + Me.btFtpSearch.TabIndex = 5 + Me.btFtpSearch.Text = "조회" + Me.btFtpSearch.UseVisualStyleBackColor = True + ' + 'tb_ftppath + ' + Me.tb_ftppath.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.tb_ftppath.Font = New System.Drawing.Font("맑은 고딕", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.tb_ftppath.Location = New System.Drawing.Point(79, 68) + Me.tb_ftppath.Name = "tb_ftppath" + Me.tb_ftppath.Size = New System.Drawing.Size(304, 29) + Me.tb_ftppath.TabIndex = 4 + Me.tb_ftppath.Text = "/" + Me.tb_ftppath.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'Label5 + ' + Me.Label5.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) + Me.Label5.AutoSize = True + Me.Label5.Location = New System.Drawing.Point(14, 76) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(56, 12) + Me.Label5.TabIndex = 3 + Me.Label5.Text = "FTP 경로" + ' + 'Label1 + ' + Me.Label1.Dock = System.Windows.Forms.DockStyle.Bottom + Me.Label1.Location = New System.Drawing.Point(0, 516) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(542, 46) + Me.Label1.TabIndex = 18 + Me.Label1.Text = "원본으로 사용할 폴더를 선택하세요." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "폴더를 더블클릭할 경우 서브폴더로 이동됩니다." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "폴더를 선택했다면 우측 상단의 ""선택""을 클릭하세요" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft + ' + 'fFtpPath + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(542, 562) + Me.Controls.Add(Me.lv_ftpde) + Me.Controls.Add(Me.Label1) + Me.Controls.Add(Me.Panel2) + Me.Name = "fFtpPath" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "(원본) FTP 경로 선택" + Me.Panel2.ResumeLayout(False) + Me.Panel2.PerformLayout() + Me.Panel1.ResumeLayout(False) + Me.Panel1.PerformLayout() + Me.ResumeLayout(False) + + End Sub + Private WithEvents lv_ftpde As System.Windows.Forms.ListView + Private WithEvents columnHeader18 As System.Windows.Forms.ColumnHeader + Private WithEvents columnHeader21 As System.Windows.Forms.ColumnHeader + Private WithEvents columnHeader19 As System.Windows.Forms.ColumnHeader + Private WithEvents columnHeader20 As System.Windows.Forms.ColumnHeader + Friend WithEvents Panel2 As System.Windows.Forms.Panel + Friend WithEvents btFtpSearch As System.Windows.Forms.Button + Friend WithEvents tb_ftppath As System.Windows.Forms.TextBox + Friend WithEvents Label5 As System.Windows.Forms.Label + Friend WithEvents Label1 As System.Windows.Forms.Label + Friend WithEvents Button2 As System.Windows.Forms.Button + Friend WithEvents Panel1 As System.Windows.Forms.Panel + Friend WithEvents chk_ftputf8 As System.Windows.Forms.CheckBox + Friend WithEvents chk_ftpPassive As System.Windows.Forms.CheckBox + Friend WithEvents tb_ftpserver As System.Windows.Forms.TextBox + Friend WithEvents tb_ftpport As System.Windows.Forms.TextBox + Friend WithEvents Label2 As System.Windows.Forms.Label + Friend WithEvents tb_ftppass As System.Windows.Forms.TextBox + Friend WithEvents Label3 As System.Windows.Forms.Label + Friend WithEvents tb_ftpid As System.Windows.Forms.TextBox + Friend WithEvents Label4 As System.Windows.Forms.Label + Friend WithEvents Label6 As System.Windows.Forms.Label +End Class diff --git a/DriveInfo/fFtpPath.resx b/DriveInfo/fFtpPath.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/DriveInfo/fFtpPath.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/DriveInfo/fFtpPath.vb b/DriveInfo/fFtpPath.vb new file mode 100644 index 0000000..3e5d624 --- /dev/null +++ b/DriveInfo/fFtpPath.vb @@ -0,0 +1,184 @@ + +Public Class fFtpPath + + Public Selpath As String = "" + Private ftpindex As Integer = 0 + + Public Sub New(_host As String, _id As String, _pw As String, _port As Integer, + _passive As Boolean, _utf8 As Boolean, _ + _BasePath As String) + + ' 이 호출은 디자이너에 필요합니다. + InitializeComponent() + + tb_ftpid.Text = _id + tb_ftppass.Text = _pw + tb_ftpport.Text = _port.ToString() + tb_ftpserver.Text = _host + chk_ftpPassive.Checked = _passive + chk_ftputf8.Checked = _utf8 + + If String.IsNullOrEmpty(_BasePath) Then _BasePath = "/" + _BasePath = _BasePath.Replace("\\", "\").Replace("//", "/") + tb_ftppath.Text = _BasePath + + ' InitializeComponent() 호출 뒤에 초기화 코드를 추가하십시오. + End Sub + + + Private Sub fFtpPath_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Me.Text = "(원본)FTP경로선택" + Me.Show() + My.Application.DoEvents() + + 'RefreshFile(tb_ftppath.Text) + End Sub + + Private Sub RefreshFile(dir As String) + If String.IsNullOrEmpty(dir) Then + dir = "/" + End If + + btFtpSearch.Enabled = False + btFtpSearch.Refresh() + tb_ftppath.Text = dir + lv_ftpde.Items.Clear() + + '//최상위가 아니라면 상위폴더이동을 추가해준다. + If dir <> "/" Then + Dim lvitem As ListViewItem = Me.lv_ftpde.Items.Add("..") + lvitem.ForeColor = Color.DarkMagenta + End If + + '//검출된데이터의 갯수 + Dim dataCount As UInteger = 0 + + '//라이브러리종류별로 데이터를 조회한다. + Dim isErr As Boolean = False + Dim ErrMsg As String = "" + FTP_0.CurrentDirectory = dir + + Dim ftpdir As FTPClients.FTPdirectory + + Try + ftpdir = FTP_0.ListDirectoryDetail(dir) + For Each info As FTPClients.FTPfileInfo In ftpdir.GetDirectories + dataCount += 1 + Dim lvitem As ListViewItem = Me.lv_ftpde.Items.Add(info.Filename) + lvitem.SubItems.Add(info.FileType.ToString()) + lvitem.SubItems.Add("-") + lvitem.SubItems.Add(info.FileDateTime.ToString("yy-MM-dd HH:mm:ss")) + lvitem.ForeColor = Color.Blue + Next + + For Each info As FTPClients.FTPfileInfo In ftpdir.GetFiles("") + dataCount += 1 + Dim lvitem As ListViewItem = Me.lv_ftpde.Items.Add(info.Filename) + lvitem.SubItems.Add(info.FileType.ToString()) + lvitem.SubItems.Add(info.Size.ToString()) + lvitem.SubItems.Add(info.FileDateTime.ToString("yy-MM-dd HH:mm:ss")) + lvitem.ForeColor = Color.Black + Next + Catch ex As Exception + MsgBox("목록갱신실패" + vbCrLf + ex.Message, MsgBoxStyle.Critical, "확인") + End Try + + btFtpSearch.Enabled = True + btFtpSearch.Refresh() + + If (dataCount < 1) Then + MsgBox(String.Format("경로 : {0}" + vbCrLf + "에서 검색된 파일이 없습니다", dir), MsgBoxStyle.Information, "확인") + End If + End Sub + + Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click + Me.Selpath = tb_ftppath.Text + DialogResult = Windows.Forms.DialogResult.OK + End Sub + + Private Sub lv_ftpde_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles lv_ftpde.MouseDoubleClick + If lv_ftpde.SelectedItems.Count < 1 Then + MsgBox("대상이 선택되지 않았습니다", MsgBoxStyle.Information, "확인") + Return + End If + + Dim lv As ListViewItem = lv_ftpde.SelectedItems(0) + If lv.Text = ".." Then + '//상위폴더로이동 + Dim curpath As String = tb_ftppath.Text + If curpath.EndsWith("/") Then curpath = curpath.Substring(0, curpath.Length - 1) + curpath = curpath.Replace("//", "/") + Dim curs() As String = curpath.Split("/") + Dim parentpath As String = "" + For i As Integer = 1 To curs.Length - 1 + If curs(i - 1) = "" Then Continue For + parentpath += "/" + curs(i - 1) + Next + tb_ftppath.Text = parentpath + btFtpSearch.PerformClick() + Else + Dim ftype As String = lv.SubItems(1).Text + Select Case ftype + Case "Dir", "Directory" + Dim newdir As String = tb_ftppath.Text + "/" + lv.Text + newdir = newdir.Replace("//", "/") + tb_ftppath.Text = newdir + btFtpSearch.PerformClick() + Case "File" + MsgBox("원본폴더를 선택하세요" + vbCrLf + _ + "선택을 완료하였다면 상단의 '선택' 버튼을 클릭하세요", MsgBoxStyle.Information, "확인") + 'If MsgBox("파일을 다운로드 하시겠습니까?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "확인") = MsgBoxResult.Yes Then + ' Dim file_local As String = path.GetTempPath + "\" + lv.Text + ' Dim file_remote As String = tb_ftppath.Text + "/" + lv.Text + ' file_local = file_local.Replace("\\", "\") + ' file_remote = file_remote.Replace("//", "/") + ' FTP.download(file_remote, file_local) + + ' If System.IO.File.Exists(file_local) Then + ' Dim fi As New System.IO.FileInfo(file_local) + ' Dim fs As Long = Long.Parse(lv.SubItems(2).Text) + ' If fi.Length <> fs Then + ' MsgBox("다운로드된 파일의 용량이 일치하지 않습니다", MsgBoxStyle.Critical, "확인") + ' Return + ' Else + ' Dim cmd As String = "explorer " + path.GetTempPath + ' Shell(cmd, AppWinStyle.NormalFocus) + ' End If + ' Else + ' MsgBox("파일이 다운로드 되지 않았습니다", MsgBoxStyle.Critical, "확인") + ' End If + + 'End If + End Select + End If + + + End Sub + + Private Sub btFtpSearch_Click(sender As Object, e As EventArgs) Handles btFtpSearch.Click + + If String.IsNullOrEmpty(tb_ftpserver.Text) Then + MsgBox("FTP Server IP는 반드시 입력되어야 합니다", MsgBoxStyle.Critical, "확인") + Return + End If + + If Not IsNumeric(tb_ftpport.Text) Then + MsgBox("FTP Port(기본값=21)가 입력되지 않았습니다", MsgBoxStyle.Critical, "확인") + tb_ftpport.Text = "21" + Return + End If + + If String.IsNullOrEmpty(tb_ftppath.Text) Then + tb_ftppath.Text = "/" + End If + + FTP_0.host = tb_ftpserver.Text + ":" + tb_ftpport.Text + FTP_0.user = tb_ftpid.Text + FTP_0.pass = tb_ftppass.Text + FTP_0.Passive = chk_ftpPassive.Checked + FTP_0.utf8 = chk_ftputf8.Checked + + RefreshFile(tb_ftppath.Text) + End Sub + +End Class \ No newline at end of file diff --git a/DriveInfo/irea.mdb b/DriveInfo/irea.mdb new file mode 100644 index 0000000..ae45925 Binary files /dev/null and b/DriveInfo/irea.mdb differ diff --git a/DriveInfo/모듈/Job.vb b/DriveInfo/모듈/Job.vb new file mode 100644 index 0000000..f1de7e1 --- /dev/null +++ b/DriveInfo/모듈/Job.vb @@ -0,0 +1,568 @@ +Module Job + + '//작업을 이어서하는 지 플래그 + Private Bw As System.Threading.Thread + + Structure RunParam + Dim StartP As Integer + Dim EndP As Integer + Dim WorkDir As String + Dim Replay As Boolean + Dim isCopy As Boolean '//복사작업인가? + Dim 원본폴더조합 As Boolean + Dim 확장자 As String + + Public ReadOnly Property isFTPWork As Boolean + Get + If WorkDir.StartsWith("ftp:") Then + Return True + Else + Return False + End If + End Get + End Property + End Structure + + Public Function Run(Param As RunParam) As Boolean + + PLog.Add("작업시작", True) + + '//일반 초기화 + PLog.Add("시스템초기화") + Log = New ArrayList() + log2 = New ArrayList() + Backupfolder1.Clear() '//기존의 백업폴더명을 삭제한다. (새로쓰기위해서) + + '//원본폴더조합기능이 켜져있는경우 + If Param.원본폴더조합 Then + + MDiMain.MSG("원본폴더조합시작") + MDiMain.SubDirListCler() '//기존목록은 초기화한다. + + '//작업순서에 포함시킨다. + Dim lv As ListViewItem = MDiMain.lvSchedule.Items.Add("폴더조합") + lv.SubItems.Add("원본") + lv.SubItems.Add("지정된 목록으로부터 하위폴더명을 추출합니다.") + lv.SubItems.Add("대기") + lv.SubItems.Add("-") + MDiMain.lvSchedule.Refresh() + + MDiMain.Noti("하위폴더조합 실행") + + '//이어하기 작업이 설정되어있다면? + Dim 체크섬 As String = "" + If Not Prev_file Is Nothing Then + 체크섬 = FileCheckSum(Prev_file.FullName) + End If + Dim jobfile As String = String.Format("{0}\{1}_{2}_{3}_{4}_{5}.job", PathJob, Prev_file.Name, Prev_file.Length, Param.StartP, Param.EndP, 체크섬) + Dim 폴더조합불러오기성공 As Boolean = False + If Param.Replay Then + '//원본폴더조합기능은 직접편집이아니고 불러온 파일명과 해당 파일의 크기가 동일한 기록이 있다면 그것을 이용한다 + If Not Prev_file Is Nothing AndAlso Prev_file.Exists Then + If System.IO.File.Exists(jobfile) Then + '//동일한 내역을 가진 job 파일이 있으므로 그것을 이용하도록 한다 + Dim fi As New System.IO.FileInfo(jobfile) + If fi.Length > 0 Then + Try + Dim buffer As String = System.IO.File.ReadAllText(jobfile) + For Each line As String In buffer.Split(vbCrLf) + If String.IsNullOrEmpty(line) Then Continue For + MDiMain.AddSubDirList(line.Trim()) + Next + 폴더조합불러오기성공 = True + + '//현재상태 + lv.SubItems(2).Text = String.Format("{0}건 의 하위폴더가 설정됨", MDiMain.SubDirCount) + lv.SubItems(3).Text = "통과" + lv.BackColor = Color.LightSkyBlue + MDiMain.lvSchedule.Refresh() + + Catch ex As Exception + PLog.Add("폴더조합불러오기오류 : " + ex.Message) + End Try + End If + End If + End If + End If + + If Not 폴더조합불러오기성공 Then + '//새로 생성한다. + + '//프로그레스바 초기화 + MDiMain.ProgressSet(Param.EndP, Param.StartP, Param.StartP) + + '//수량 표시 + MDiMain.ShowCnt1(Param.StartP, Param.EndP) + + Dim rcnt As Integer = Param.EndP - Param.StartP + 1 + PLog.Add(String.Format("원본폴더 조합기능 시작({0})", rcnt)) + + '//현재작업을 저장해준다 + Dim JobFileBuf As New System.Text.StringBuilder + + For i As Integer = Param.StartP To Param.EndP + MDiMain.ProgressVal(i) + + '//작업진행사항을 표시해준다. + lv.SubItems(3).Text = String.Format("{0}/{1}", i, Param.EndP) + MDiMain.lvSchedule.Refresh() + + Dim subdir As String = MDiMain.srcd_Get_FileList(i, "", Param.확장자).ToString + If subdir = "/" OrElse subdir = "\" OrElse subdir.ToLower().IndexOf("err") <> -1 Then Continue For + If Not MDiMain.CheckExistSubDir(subdir) Then + MDiMain.AddSubDirList(subdir) '//존재하는 항목은 추가되지 않는다. + JobFileBuf.AppendLine(subdir) + End If + Application.DoEvents() + Next + + '//현재상태 + lv.SubItems(3).Text = "완료" + lv.BackColor = Color.LightGreen + MDiMain.lvSchedule.Refresh() + + '//완료목록을 저장해준다. + System.IO.File.WriteAllText(jobfile, JobFileBuf.ToString()) + End If + + End If + + '//중간분리자 + MDiMain.AddScheduleDiv("파일목록 수집") + + '//파일정보수집 + MDiMain.MSG("파일정보수집") + + '//서브목록이있다면 그것들만 수집힌다. + Dim fullsubdir As String + Dim 재시도 As Boolean = False +retryFileSearch: + + '//폴더내의 파일목록을 수집한다. + Dim 수집오류 As Boolean = False + If MDiMain.HasSubDir Then '//서브목록이 있다면 + + '//프로그레스 설정과 현재 수량 표시 + MDiMain.ProgressSet(MDiMain.SubDirCount, 0, 0) + + For i As Integer = 1 To MDiMain.SubDirCount + MDiMain.ShowCnt1(i, MDiMain.SubDirCount) + MDiMain.ProgressVal(i) + + Dim lvSubDir As ListViewItem = MDiMain.list_subdir.Items(i - 1) + fullsubdir = CStr(GetWorkDIr() & "\" & lvSubDir.Text).Replace("\\", "\") + + '//대상폴더가 FTP람녀 폴더구분기호를 \ 에서 / 로 변경해야한다. + If Param.isFTPWork Then fullsubdir = fullsubdir.Replace("\", "/") + + Dim lvitem As ListViewItem = MDiMain.lvSchedule.Items.Add("검색") + lvitem.SubItems.Add(fullsubdir) + lvitem.SubItems.Add("파일목록을 작성합니다.") + lvitem.SubItems.Add("대기") + lvitem.SubItems.Add("-") + MDiMain.lvSchedule.Refresh() + Application.DoEvents() + + MDiMain.Noti("폴더검색" + vbCrLf + fullsubdir) + + If 재시도 AndAlso lvSubDir.ForeColor <> Color.Red Then + '//재시도이므로 처리하지 않는다 + PLog.Add("재시도작업이므로 확인개체는 처리하지 않습니다(" + lvSubDir.Text + ")") + Continue For + End If + + '//FTP가 대상일경우에는 별도 처리를 한다. + If Param.isFTPWork Then + fullsubdir = fullsubdir.Replace("\", "/") + Dim ermsg As String = "" + Dim fnotfound As Boolean = False + Dim filecount As Integer = 0 + Dim RetryCount As Integer = 0 +RETRYFTP: + RetryCount += 1 + If Not SearchFTP(Param, lvitem, fullsubdir, ermsg, fnotfound, filecount) Then + If Not fnotfound Then + '//오류가 발생했다면 3회정도 재시도를 한다. + If RetryCount <= MaxRetryCount Then + lvitem.ForeColor = Color.DarkMagenta + lvitem.SubItems(3).Text = String.Format("{0}/{1}", RetryCount, MaxRetryCount) + MDiMain.lvSchedule.Refresh() + PLog.Add(String.Format("재시도를 위해서 다음 시간을 기다림 : {0}ms", RetrySleeptime)) + Threading.Thread.Sleep(RetrySleeptime) + Application.DoEvents() + GoTo RETRYFTP + Else + lvitem.ForeColor = Color.White + lvitem.BackColor = Color.DarkRed + lvitem.SubItems(3).Text = "오류" + MDiMain.lvSchedule.Refresh() + Application.DoEvents() + End If + End If + End If + Else + SearchDir(Param, New DirectoryInfo(fullsubdir)) + Application.DoEvents() + End If + + '//delay + Threading.Thread.Sleep(1000) + Next + Else '//없으면 지정된 목록을 기준으로 잡는다 + 'MsgBox("dirinfo" & New DirectoryInfo(GetWorkDIr).FullName) + + If Param.WorkDir.StartsWith("ftp:/") Then + Dim ermsg As String = "" + Dim fnotfound As Boolean = False + Dim filecount As Integer = 0 + + Dim lvitem As ListViewItem = MDiMain.lvSchedule.Items.Add("검색") + lvitem.SubItems.Add(Param.WorkDir) + lvitem.SubItems.Add("FTP 파일명수집") + lvitem.SubItems.Add("대기") + lvitem.SubItems.Add("-") + + MDiMain.Noti("폴더검색" + vbCrLf + Param.WorkDir) + Application.DoEvents() + + If Not SearchFTP(Param, lvitem, GetWorkDIr, ermsg, fnotfound, filecount) Then + MsgBox("FTP경로조회가 실패되었습니다" + vbCrLf + ermsg, MsgBoxStyle.Critical, "확인") + Else + Log.Add("FTP 파일조회성공 : " + Param.WorkDir + ":" + filecount.ToString()) + End If + Else + + Dim lvitem As ListViewItem = MDiMain.lvSchedule.Items.Add("검색") + lvitem.SubItems.Add(Param.WorkDir) + lvitem.SubItems.Add("파일명수집") + lvitem.SubItems.Add("대기") + lvitem.SubItems.Add("-") + MDiMain.lvSchedule.Refresh() + Application.DoEvents() + + SearchDir(Param, New DirectoryInfo(Param.WorkDir)) + End If + End If + + If 수집오류 Then + If MsgBox("파일목록 수집오류가 발생하였습니다 " + vbCrLf + "다시시도 하시겠습니까?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "확인") = MsgBoxResult.Yes Then + 재시도 = True + GoTo retryFileSearch + Else + MsgBox("현재목록을 가지고 진행합니다", MsgBoxStyle.Information, "확인") + End If + End If + + Addlog2("전체 그림파일 수 : " & MDiMain.DataSet1.FileList.Rows.Count & "개") + PLog.Add(String.Format("Total Image Count : {0}", MDiMain.DataSet1.FileList.Rows.Count)) + + If MDiMain.DataSet1.FileList.Rows.Count = 0 Then '//목록이 하나도없다 + MsgBox("지정된 작업폴더내에 가능한 그림파일이 존재하지않습니다" & vbCrLf & "더이상 진행을 할 수 없습니다", MsgBoxStyle.Critical, "확인") + Return False + End If + + '//중간분리자 + MDiMain.AddScheduleDiv("원본목록 작성") + Application.DoEvents() + + '//원본목록작성 + MDiMain.MSG("원본목록 작성") + Dim SrcTxt As String + Dim StartIndex As Integer = getSP() + PLog.Add(String.Format("Make SourceList Range {0}~{1}", StartIndex, Ep)) + MDiMain.Noti("원본목록작성") + For i As Integer = StartIndex To Ep + MDiMain.ShowCnt1(i, Ep, "원본목록 작성중") + SrcTxt = MDiMain.Get_SrcFileList(i + 1) + If SrcTxt <> "" AndAlso SrcTxt <> "*" And SrcTxt <> "?" Then + MDiMain.DataSet1.SrcList.Rows.Add(New String() {SrcTxt}) + End If + Application.DoEvents() + Next + Addlog2("원본목록 수 : " & MDiMain.DataSet1.SrcList.Rows.Count & "개") + PLog.Add(String.Format("Source List Count ={0}", MDiMain.DataSet1.SrcList.Count)) + + + '//중간분리자 + MDiMain.AddScheduleDiv("작업목록 작성") + Application.DoEvents() + + '//이제 원본목록을 파일목로에서 검색한다. 데이터테이블의 Like 를 이요하면된다. + '//그리고 검색된것들은 worklist 로보낸다. + MDiMain.Noti("작업목록 작성") + If GetrunType() = E_Runtype.Delete Then + DeleteFileM(Param) + Application.DoEvents() + Else + MoveFileM(Param) + Application.DoEvents() + End If + + Addlog2("작업목록 : " & MDiMain.DataSet1.WorkList.Rows.Count & "개") + Return True + + End Function + + + ''' + ''' 지정된 FTP로부터 파일목록을 수신한다 + ''' + ''' + ''' + Public Function SearchFTP(ByRef Param As RunParam, ByRef lvitem As ListViewItem, ByVal Di As String, ByRef erMsg As String, ByRef NotFound As Boolean, ByRef filecnt As Integer) As Boolean + + Di = Di.Replace("ftp:/", "").Replace("//", "/") + If Not Di.StartsWith("/") Then Di = "/" + Di + If Di.EndsWith("/") Then Di = Di.Substring(0, Di.Length - 1) + If Di.IndexOf("-원본") = -1 Then + + PLog.Add(String.Format("FTP 목록조회 : {0}", Di)) + + '//FTP캐쉬폴더가 있다면 그것을 사용한다.(우선은 파일목록에대한 작업이다) + Dim CacheDirName As String = PathJob + "\" + FTPServer + "\" + Di.Replace("/", "\") + "\summary.txt" + CacheDirName = CacheDirName.Replace("\\", "\") + + '//수집된파일목록 + Dim filelist As New List(Of String) + Dim SubDirList As New List(Of String) + Dim 이어하기 As Boolean = False + + '//파일목록수집(기존정보의 사용이 허가된 경우 캐쉬파일에서 정보를 읽는다 + If Param.Replay AndAlso System.IO.File.Exists(CacheDirName) Then + Dim SumFile As New ArinSetting.ArinSetting(CacheDirName) + Dim 파일목록 As String = SumFile.Data("file", "list") + For Each 파일 As String In 파일목록.Split(",") + If String.IsNullOrEmpty(파일) Then Continue For + If filelist.IndexOf(파일) = -1 Then filelist.Add(파일) + Next + Application.DoEvents() + Dim 하위폴더목록 As String = SumFile.Data("subdir", "list") + For Each 파일 As String In 하위폴더목록.Split(",") + If String.IsNullOrEmpty(파일) Then Continue For + If SubDirList.IndexOf(파일) = -1 Then SubDirList.Add(파일) + Next + If filelist.Count > 0 Then 이어하기 = True + Application.DoEvents() + End If + + '//파일목록이 불러와진게 없다면 FTP에서 조회를 시작한다. + If filelist.Count < 1 Then + + Dim isErr As Boolean = False + Dim ErrMsg As String = "" + Dim dirlist As FTPClients.FTPdirectory + Try + dirlist = FTP_0.ListDirectoryDetail(Di) + Catch exw As System.Net.WebException + + If TypeOf (exw.Response) Is System.Net.FtpWebResponse Then + + PLog.Add("FTP목록조회오류(WEBEX) : " + exw.Message, True) + Dim ftpdesc As String = CType(exw.Response, System.Net.FtpWebResponse).StatusDescription + If ftpdesc.ToLower.IndexOf("directory not found") <> -1 Then + PLog.Add("폴더없음 오류코드이므로 정상 처리로 한다", True) + NotFound = True + erMsg = ftpdesc + + lvitem.SubItems(2).Text = "폴더가 존재하지 않습니다" + lvitem.SubItems(3).Text = "완료" + lvitem.BackColor = Color.White '//성공했다 + lvitem.ForeColor = Color.DimGray + Return False + Else + erMsg = exw.Message + lvitem.SubItems(2).Text = exw.Message + lvitem.SubItems(3).Text = "오류" + lvitem.BackColor = Color.Red + lvitem.ForeColor = Color.White + Return False + End If + Else + PLog.Add("FTP목록조회오류(WEBEX-2) : " + exw.Message, True) + erMsg = exw.Message + lvitem.SubItems(2).Text = exw.Message + lvitem.SubItems(3).Text = "오류" + lvitem.BackColor = Color.Red + lvitem.ForeColor = Color.White + Return False + End If + + Catch ex As Exception + PLog.Add("FTP목록조회오류(기타) : " + ex.Message, True) + erMsg = ex.Message + lvitem.SubItems(2).Text = ex.Message + lvitem.SubItems(3).Text = "오류" + lvitem.BackColor = Color.Red + lvitem.ForeColor = Color.White + Return False + End Try + + Application.DoEvents() + + '//파일목록을 저장해서 캐쉬로사용하도록 한다. + Dim sb_FileList As New System.Text.StringBuilder + Dim fcnt1 As UInteger = 0 + For Each info As FTPClients.FTPfileInfo In dirlist.GetFiles(Param.확장자) + If info.FileType <> FTPClients.FTPfileInfo.DirectoryEntryTypes.File Then Continue For + fcnt1 += 1 + sb_FileList.Append("," + info.Filename) + filelist.Add(info.Filename) + '//If filelist.Count Mod 50 = 0 Then + Application.DoEvents() '//160831 + '//End If + Next + + ''//ftp에러 오류없이 처리되었따 + 'lvitem.ForeColor = Color.Black + 'lvitem.SubItems(2).Text = fcnt1.ToString() + 'lvitem.SubItems(3).Text = "완료" + 'If fcnt1 < 1 Then + ' lvitem.BackColor = Color.WhiteSmoke '//성공했지만 파일은 없었다 + 'Else + ' lvitem.BackColor = Color.LightGreen '//성공했다 + 'End If + + '//캐쉬파일을 생성해준다. 160716 + Dim fiCache As New System.IO.FileInfo(CacheDirName) + If Not fiCache.Directory.Exists Then fiCache.Directory.Create() + Dim summary As New ArinSetting.ArinSetting(fiCache.FullName) + If Not summary.Exist Then summary.CreateFile() + summary.Data("file", "count", "") = fcnt1.ToString() + summary.Data("file", "list", "") = sb_FileList.ToString() + + Application.DoEvents() + Dim foldlist2 As New System.Text.StringBuilder + For Each info As FTPClients.FTPfileInfo In dirlist.GetDirectories + SubDirList.Add(info.NameOnly) + foldlist2.Append("," + info.NameOnly) + Next + + '//하위목록도 저장해준다. + summary.Data("subdir", "count", "") = SubDirList.Count.ToString() + summary.Data("subdir", "list", "") = foldlist2.ToString() + summary.Save() + Application.DoEvents() + End If + + '//수집된 파일목록을 데이터테이블에 기록한다. + Dim fcnt As Integer = 0 + For Each File As String In filelist + fcnt += 1 + MDiMain.MSG(MDiMain.DataSet1.FileList.Rows.Count & "개의 파일정보를 수집했습니다") + MDiMain.DataSet1.FileList.Rows.Add(New String() {Di, File}) + Application.DoEvents() + Next + filecnt += fcnt + lvitem.SubItems(2).Text = String.Format("{0}", fcnt) + + If 이어하기 Then + lvitem.SubItems(3).Text = "통과" + lvitem.BackColor = Color.LightSkyBlue + Else + lvitem.SubItems(3).Text = "완료" + lvitem.BackColor = Color.LightGreen '//성공했다 + End If + + If fcnt = 0 Then + lvitem.ForeColor = Color.Gray + Else + lvitem.ForeColor = Color.Black + End If + + + PLog.Add(String.Format("폴더검색결과({0}) 파일={1},폴더={2}", Di, filelist.Count, SubDirList.Count)) + MDiMain.MSG(MDiMain.DataSet1.FileList.Rows.Count & "개의 파일정보를 수집했습니다") + Application.DoEvents() + + '//해당폴더의 서브폴더를 체크하도록 하였다면? + If GetSubDir() Then + + '//여기서 폴더정보를 다시 수집한다. + For Each DD As String In SubDirList + Dim subpath As String = Di + "/" + DD + subpath = subpath.Replace("//", "/") + subpath = subpath.Replace("\", "/") + PLog.Add(String.Format("Entering Subdir : {0}", subpath)) + + Dim fnotfound As Boolean + Dim filecount As Integer + Dim lvitemS As ListViewItem = MDiMain.lvSchedule.Items.Add("검색") + lvitemS.SubItems.Add(subpath) + lvitemS.SubItems.Add("FTP 파일명수집") + lvitemS.SubItems.Add("대기") + lvitemS.SubItems.Add("-") + MDiMain.lvSchedule.Refresh() + Application.DoEvents() + + Dim RetryCount As Integer = 0 +RETRYFTP: + + If Not SearchFTP(Param, lvitemS, subpath, erMsg, fnotfound, filecount) Then + If Not fnotfound Then + '//오류가발생했지만 오류내용이 없다는 오류이다.(정상처리해야함) + If RetryCount <= MaxRetryCount Then + lvitem.ForeColor = Color.DarkMagenta + lvitem.SubItems(3).Text = String.Format("{0}/{1}", RetryCount, MaxRetryCount) + MDiMain.lvSchedule.Refresh() + PLog.Add(String.Format("재시도를 위해서 다음 시간을 기다림 : {0}ms", RetrySleeptime)) + Threading.Thread.Sleep(RetrySleeptime) + Application.DoEvents() + GoTo RETRYFTP + Else + lvitem.ForeColor = Color.White + lvitem.BackColor = Color.DarkRed + lvitem.SubItems(3).Text = "오류" + MDiMain.lvSchedule.Refresh() + Application.DoEvents() + End If + End If + End If + Next + End If + Else + PLog.Add("SearchFTP Skip : " + Di) + End If + Return True + End Function + + ''' + ''' 해당디렉토리로부터 파일정보를 수집한다 + ''' + ''' + ''' + Public Function SearchDir(ByRef Param As RunParam, ByVal Di As DirectoryInfo) As Boolean + If Di.Exists = False Then + PLog.Add("폴더내파일검색 : 폴더없음 : " + Di.FullName, True) + Return False + End If + + If Di.FullName.IndexOf("-원본") = -1 Then + + PLog.Add("폴더내 파일검색 : " + Di.FullName) + + Try + Dim FI() As FileInfo = Di.GetFiles("*." + Param.확장자) + For Each F As FileInfo In FI + MDiMain.MSG(MDiMain.DataSet1.FileList.Rows.Count & "개의 파일정보를 수집했습니다") + MDiMain.DataSet1.FileList.Rows.Add(New String() {F.DirectoryName, F.Name}) + Application.DoEvents() + Next + Application.DoEvents() + If GetSubDir() Then + For Each DD As DirectoryInfo In Di.GetDirectories + SearchDir(Param, DD) + Next + End If + Return True + Catch ex As Exception + MsgBox("폴더정보를 불러오는데 실패했습니다" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "확인") + Return False + End Try + Else + PLog.Add("폴더내파일검색 : 원본폴더로인한 통과 : " + Di.FullName, True) + Return False + End If + End Function + + +End Module diff --git a/DriveInfo/모듈/Mod_Backup.vb b/DriveInfo/모듈/Mod_Backup.vb new file mode 100644 index 0000000..d2d952f --- /dev/null +++ b/DriveInfo/모듈/Mod_Backup.vb @@ -0,0 +1,182 @@ +Imports System.IO +'---------------------------------- +' backup Class +'--------------------------------- +Module Mod_Backup + Public Backupfolder1 As New ArrayList + + Private Function ExistBakFolder1(ByVal FolderName As String) As Boolean + '//지정된 폴더가 백업된 폴더목록에 존재하는지 + 'addlog("기존백업폴더목록에 저장되어잇는지 : " & Backupfolder.IndexOf(FolderName)) + If Backupfolder1.IndexOf(FolderName) >= 0 Then Return True + If MDiMain.cbBakTarget.SelectedIndex = 0 Then + '//백업정책1이 폴더백업이고 하위폴더포함한 백업일경우에는 상위폴더가 백업되어잇는지 찾아야한다. + For Each P As String In Backupfolder1 '//백업된 폴더의 모든 폴더명을 루프로돈다. + '//백업된 폴더명이 루트라면 지금의 폴더명보다 더 짧을것이다. indexof 로 찾는다. + If FolderName.ToUpper.IndexOf(P.ToUpper) >= 0 Then Return True + Next + End If + Return False + End Function + + + Public Sub Check_Backup(ByVal fn As FileInfo, Optional ByVal tag As String = "") + Dim BT1 As E_baktype = GetBackType1() '//백업정책의 형태를 가져온다. + If BT1 <> E_baktype.none Then + If MDiMain.cbBakTarget.SelectedIndex = 0 Then + Try + BT1WorkFD(BT1, fn, tag & "D") ' & "_FD") '//폴더백업 + Catch ex As Exception + Errlog("BT1WorkFD 정의" & ex.Message.ToString) + End Try + + Else + Try + BT1WorkFL(BT1, fn, tag & "F") ' & "_FL") '//파일백업 + Catch ex As Exception + Errlog("BT1WorkFL 정의" & ex.Message.ToString) + End Try + + End If + End If + + End Sub + Private Sub BT1WorkFL(ByVal bt1 As E_baktype, ByVal fn As FileInfo, ByVal tag As String) + Dim NewFn As String + Dim NFN As FileInfo + Select Case bt1 + Case E_baktype.none '//아무것도 하지않는다. + Case E_baktype.Folder1 '//지정된 1번 폴더에 복사를 해놓는다. 바귄파일의 상위폴더명을 원래폳러명+날짜+태그 로 한다. + NewFn = fn.FullName.ToUpper.Replace(GetWorkDIr.ToUpper, GetBakDir1.ToUpper & "\" & tag) '//작업폴더명은 백업폴더명으로 변경 + NFN = New FileInfo(NewFn) + Addlog("B", fn.FullName, NFN.FullName, "파일백업(정책1-사용자지정폴더1)") + NFN.Directory.Create() '//디렉토리생성 + fn.CopyTo(NFN.FullName, True) + Case E_baktype.CurrnetFolder '//해당파일이 발견된 폴더의 하위폴더를 생성해서 백업 폴더명은 위에꺼 참고 + NewFn = fn.DirectoryName & "\BAK_" & tag & "\" & fn.Name '//현재폴더에 태그명으로 폴더를 만들고 그곳에 파일을 저장한다. + NFN = New FileInfo(NewFn) + Addlog("B", fn.FullName, NFN.FullName, "파일백업(정책1-현재폴더)") + NFN.Directory.Create() '//디렉토리생성 + fn.CopyTo(NFN.FullName, True) + Case E_baktype.ParentFolder '//해당파일이 발견된 폴더의 상위폴더를 생성 폳러명 위 참조 + NewFn = fn.Directory.FullName & tag & "\" & fn.Name '//상위폴더에 생성 + NFN = New FileInfo(NewFn) + Addlog("B", fn.FullName, NFN.FullName, "파일백업(정책1-상위폴더)") + NFN.Directory.Create() '//디렉토리생성 + fn.CopyTo(NFN.FullName, True) + End Select + End Sub + + Private Sub BT1WorkFD(ByVal bt1 As E_baktype, ByVal fn As FileInfo, ByVal tag As String) '//백업정책1 폴더백업 + Dim NewFn As String + Dim NFN As FileInfo + Dim FL() As FileInfo + Select Case bt1 + Case E_baktype.none '//아무것도 하지않는다. + Case E_baktype.Folder1 '//지정된 1번 폴더에 복사를 해놓는다. 바귄파일의 상위폴더명을 원래폳러명+날짜+태그 로 한다. + 'Addlog2("백업사용자폴더1 파일명 : " & fn.FullName & " 태그:" & tag) + NewFn = fn.FullName.ToUpper.Replace(GetWorkDIr.ToUpper, GetBakDir1.ToUpper & "\" & tag) '//작업폴더명은 백업폴더명으로 변경 + NewFn = NewFn.Replace("\\", "\") + 'Addlog2("백업형태로 변경된 파일명 : " & NewFn) + NFN = New FileInfo(NewFn) + '//백업된폴더목록에 해당 목록이없으면 + If ExistBakFolder1(NFN.DirectoryName) = False Then + MDiMain.MSG(NFN.DirectoryName & "폴더 백업중...") + MDiMain.Refresh() + Addlog("B", fn.FullName, NFN.FullName, "폴더백업(정책1-사용자지정폴더1)") + '//원본폴더의 모든 내용을 복사해논다. + Directory.CreateDirectory(NFN.DirectoryName) '//디렉토리생성 + FL = New DirectoryInfo(fn.DirectoryName).GetFiles("*.*", SearchOption.AllDirectories) '//파일목록을 가져온다. + + Dim index As Integer = 0 + Dim endcnt As Integer = FL.Length + + For Each F As FileInfo In FL + index += 1 + MDiMain.ShowCnt2(index, endcnt, "백업") + My.Application.DoEvents() + Try + F.CopyTo(NFN.DirectoryName & "\" & F.Name, True) '//새로운경로로 복사를 한다. + Catch ex As System.IO.DirectoryNotFoundException + Dim B As New System.IO.FileInfo(NFN.DirectoryName & "\" & F.Name) + System.IO.Directory.CreateDirectory(B.DirectoryName) + B = Nothing + F.CopyTo(NFN.DirectoryName & "\" & F.Name, True) '//새로운경로로 복사를 한다. + Catch ex As Exception + MsgBox("파일복사오류 : " & vbCrLf & ex.Message, MsgBoxStyle.Critical, "확인") + End Try + Next + Backupfolder1.Add(NFN.DirectoryName) + MDiMain.MSG(NFN.DirectoryName & "폴더 백업완료.") + MDiMain.Refresh() + End If + Case E_baktype.CurrnetFolder '//해당파일이 발견된 폴더의 하위폴더를 생성해서 백업 폴더명은 위에꺼 참고 + NewFn = fn.DirectoryName & "\BAK_" & tag & "\" & fn.Name '//현재폴더에 태그명으로 폴더를 만들고 그곳에 파일을 저장한다. + NFN = New FileInfo(NewFn) + '//백업된폴더목록에 해당 목록이없으면 + If ExistBakFolder1(NFN.DirectoryName) = False Then + MDiMain.MSG(NFN.DirectoryName & "폴더 백업중...") + MDiMain.Refresh() + Addlog("B", fn.FullName, NFN.FullName, "폴더백업(정책1-현재폴더)") + '//원본폴더의 모든 내용을 복사해논다. + Directory.CreateDirectory(NFN.DirectoryName) '//디렉토리생성 + FL = New DirectoryInfo(fn.DirectoryName).GetFiles("*.*", SearchOption.AllDirectories) + + Dim index As Integer = 0 + Dim endcnt As Integer = FL.Length + + For Each F As FileInfo In FL + index += 1 + MDiMain.ShowCnt2(index, endcnt, "백업") + My.Application.DoEvents() + Try + F.CopyTo(NFN.DirectoryName & "\" & F.Name, True) '//새로운경로로 복사를 한다. + Catch ex As System.IO.DirectoryNotFoundException + Dim B As New System.IO.FileInfo(NFN.DirectoryName & "\" & F.Name) + System.IO.Directory.CreateDirectory(B.DirectoryName) + B = Nothing + F.CopyTo(NFN.DirectoryName & "\" & F.Name, True) '//새로운경로로 복사를 한다. + Catch ex As Exception + MsgBox("파일복사오류 : " & vbCrLf & ex.Message, MsgBoxStyle.Critical, "확인") + End Try + Next + Backupfolder1.Add(NFN.DirectoryName) + MDiMain.MSG(NFN.DirectoryName & "폴더 백업완료.") + MDiMain.Refresh() + End If + Case E_baktype.ParentFolder '//해당파일이 발견된 폴더의 상위폴더를 생성 폳러명 위 참조 + NewFn = fn.Directory.FullName & tag & "\" & fn.Name '//상위폴더에 생성 + NFN = New FileInfo(NewFn) + If ExistBakFolder1(NFN.DirectoryName) = False Then + MDiMain.MSG(NFN.DirectoryName & "폴더 백업중...") + MDiMain.Refresh() + addlog("B", fn.FullName, NFN.FullName, "폴더백업(정책1-상위폴더)") + '//원본폴더의 모든 내용을 복사해논다. + Directory.CreateDirectory(NFN.DirectoryName) '//디렉토리생성 + FL = New DirectoryInfo(fn.DirectoryName).GetFiles("*.*", SearchOption.AllDirectories) + Dim index As Integer = 0 + Dim endcnt As Integer = FL.Length + For Each F As FileInfo In FL + index += 1 + MDiMain.ShowCnt2(index, endcnt, "백업") + My.Application.DoEvents() + Try + F.CopyTo(NFN.DirectoryName & "\" & F.Name, True) '//새로운경로로 복사를 한다. + Catch ex As System.IO.DirectoryNotFoundException + Dim B As New System.IO.FileInfo(NFN.DirectoryName & "\" & F.Name) + System.IO.Directory.CreateDirectory(B.DirectoryName) + B = Nothing + F.CopyTo(NFN.DirectoryName & "\" & F.Name, True) '//새로운경로로 복사를 한다. + Catch ex As Exception + MsgBox("파일복사오류 : " & vbCrLf & ex.Message, MsgBoxStyle.Critical, "확인") + End Try + Next + Backupfolder1.Add(NFN.DirectoryName) + MDiMain.MSG(NFN.DirectoryName & "폴더 백업완료.") + MDiMain.Refresh() + End If + End Select + End Sub + + +End Module diff --git a/DriveInfo/모듈/Mod_Move.vb b/DriveInfo/모듈/Mod_Move.vb new file mode 100644 index 0000000..ff88898 --- /dev/null +++ b/DriveInfo/모듈/Mod_Move.vb @@ -0,0 +1,494 @@ +Imports System.IO +Imports System.Threading +Imports System.Text + +Module Mod_Move '//파일이동 모듈파일 + Public Sub MoveFileM(Param As RunParam) '//파일목록으로부터 삭제대상폴더의 파일을 삭제한다. + Dim StrBuff As New StringBuilder + Dim WorkDes As String = IIf(GetrunType() = E_Runtype.Move, "이동", "복사") + + '//작업목록을 작성합니다. + MDiMain.MSG(WorkDes & "목록 작성중.") + + '//변수목록 + Dim NR As ireaDataSet.WorkListRow + Dim WRow() As ireaDataSet.FileListRow + Dim DesDir As DirectoryInfo + Dim DesFile As FileInfo + Dim SrcOffset As Long = 0 '//원본목록에서의 레코드위치(대상파일을 생성하려면 줄번호를 기억해야한다.) + + Dim index As Integer = 0 + Dim endcnt As Integer = MDiMain.DataSet1.SrcList.Rows.Count - 1 + + If MDiMain.DataSet1.SrcList Is Nothing Then + MsgBox("원본목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인") + Return + End If + + For Each drs As ireaDataSet.SrcListRow In MDiMain.DataSet1.SrcList.Rows + + If MDiMain.DataSet1.FileList Is Nothing Then + MsgBox("파일목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인") + Return + End If + index += 1 + MDiMain.ShowCnt1(index, endcnt, "목록작성") + Application.DoEvents() + + '//전체목록에서 원본목록 검색 + Try + WRow = MDiMain.DataSet1.FileList.Select("파일명 like '" & drs.목록명.Replace("'", "''") & "'") '//170410 홑따옴표 처리 및 오류처리기능 추가 + Catch ex As Exception + + '//오류가 발생했으므로 오류로 기록하고 넘긴다. + WRow = Nothing + NR = MDiMain.DataSet1.WorkList.NewWorkListRow + NR.원본경로 = String.Empty + NR.원본파일명 = drs.목록명 + Select Case GetrunType() + Case E_Runtype.Copy + NR.구분 = "복사" + Case E_Runtype.Delete + NR.구분 = "삭제" + Case E_Runtype.Move + NR.구분 = "이동" + End Select + NR.대상경로 = String.Empty + NR.대상파일명 = String.Empty + NR.오류 = "파일추출실패:" + ex.Message + Try + MDiMain.DataSet1.WorkList.Rows.Add(NR) + Catch ex2 As Exception '//추가오류는 뻔하다이미 그 파일이 있는경우다. + Continue For + End Try + End Try + + SrcOffset = index + getSP() - 1 '//줄시작값과 현재의 오프셋을 더한다. + Dim loopcnt2 As Integer = 0 + For Each dr As ireaDataSet.FileListRow In WRow + + NR = MDiMain.DataSet1.WorkList.NewWorkListRow + NR.원본경로 = dr.경로 + NR.원본파일명 = dr.파일명 + Select Case GetrunType() + Case E_Runtype.Copy + NR.구분 = "복사" + Case E_Runtype.Delete + NR.구분 = "삭제" + Case E_Runtype.Move + NR.구분 = "이동" + End Select + + loopcnt2 += 1 + Application.DoEvents() + + '//검색된것들은 이동또는 복사대상이므로 작업목록에 집어넣는다. + '//대상파일명을 생성한다. + NR.오류 = "" + + Try + DesDir = New DirectoryInfo(MDiMain.DESD_GetDesDir(SrcOffset, dr.파일명.Substring(0, dr.파일명.LastIndexOf(".")), GetExtendOnly, dr.경로.Substring(GetWorkDIr.Length))) + NR.대상경로 = DesFile.DirectoryName + Catch ex As Exception + NR.대상경로 = "" + NR.오류 += ex.Message + End Try + + Try + DesFile = New FileInfo(DesDir.FullName & "\" & MDiMain.Desf_Get_FileList(SrcOffset, dr.파일명.Substring(0, dr.파일명.LastIndexOf(".")), GetExtendOnly) & Pub.GetExtendFromMdi.Trim("*")) + NR.대상파일명 = DesFile.Name + Catch ex As Exception + NR.대상파일명 = "" + NR.오류 += ex.Message + End Try + + If NR.오류 <> "" Then + '//이미오류가 발생했다. + Try + MDiMain.DataSet1.WorkList.Rows.Add(NR) + Catch ex As Exception '//추가오류는 뻔하다이미 그 파일이 있는경우다. + + End Try + Else + If DesFile.Name.IndexOf("*") = -1 AndAlso DesFile.Name.IndexOf("?") = -1 Then + + Try + MDiMain.DataSet1.WorkList.Rows.Add(NR) + Catch ex As Exception '//추가오류는 뻔하다이미 그 파일이 있는경우다. + NR.오류 += ",중복된 대상파일입니다(" & ex.Message.ToString & ")" + 'MDiMain.DataSet1.WorkList.Rows.Add(NR) + makelog2("중복된 대상파일이 생성되었습니다") + makelog2(" 원본파일명 : " & NR.원본경로 & "\" & NR.원본파일명) + makelog2(" 대상파일명 : " & NR.대상경로 & "\" & NR.대상파일명) + 'If MsgBox("중복된 대상파일이 확인되었습니다" & vbCrLf & vbCrLf & "계속하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then + ' Return + 'End If + End Try + End If + End If + + + Application.DoEvents() + Next + Next + MDiMain.MSG(WorkDes & "목록 작성완료.") + MDiMain.MSG(WorkDes & "연속참조 검사") + index = 0 + Dim Rc As Integer = MDiMain.DataSet1.WorkList.Rows.Count + Dim 원본파일명, 원본경로, 대상파일명, 대상경로 As String + Dim 시퀀스 As Integer + Dim Findrow As Boolean = False + Application.DoEvents() + For Each dr As ireaDataSet.WorkListRow In MDiMain.DataSet1.WorkList.Rows + Findrow = False + index += 1 + MDiMain.ShowCnt1(index, Rc, "연속참조검사") + 원본파일명 = dr.원본파일명 + 원본경로 = dr.원본경로 + 대상파일명 = dr.대상파일명 + 대상경로 = dr.대상경로 + 시퀀스 = dr.seq + + Application.DoEvents() + + If 원본파일명 <> "" Then + Dim dr2() As ireaDataSet.WorkListRow = MDiMain.DataSet1.WorkList.Select("대상파일명='" & 원본파일명 & "' and 대상경로='" & 원본경로 & "' and seq <> " & 시퀀스) + For Each Drow2 As ireaDataSet.WorkListRow In dr2 + Findrow = True + Drow2.성공 = "◈" + Drow2.오류 = "연속참조오류:" & index + Next + If Findrow Then + dr.성공 = "◈" + dr.오류 = "연속참조오류" + End If + End If + + If 대상파일명 <> "" Then + Dim dr2() As ireaDataSet.WorkListRow = MDiMain.DataSet1.WorkList.Select("원본파일명='" & 대상파일명 & "' and 원본경로='" & 대상경로 & "' and seq <> " & 시퀀스) + For Each Drow2 As ireaDataSet.WorkListRow In dr2 + Findrow = True + Drow2.성공 = "◈" + Drow2.오류 = "연속참조오류:" & index + Next + If Findrow Then + dr.성공 = "◈" + dr.오류 = "연속참조오류" + End If + End If + Next + + Application.DoEvents() + + '//오류를 제외한 실제 처리할 내용을 리스트뷰에 넣는다 + '//작업대상을 지정해준다. + Dim 작업갯수 As Integer = 0 + Dim DRows() As System.Data.DataRow = MDiMain.DataSet1.WorkList.Select("isnull(오류,'')=''") + MDiMain.AddScheduleDiv(" " + DRows.Length.ToString() + " 개의 작업대상이 설정되었습니다") + + Dim loopcnt As Integer = 0 + For Each dr As ireaDataSet.WorkListRow In DRows + Dim lvKey As String = dr.대상경로 + "\" + dr.대상파일명 + + Dim 원본파일 As String = dr.원본경로 + "\" + dr.원본파일명 + Dim 대상파일 As String = dr.대상경로 + "\" + dr.대상파일명 + If Param.isFTPWork Then + 원본파일 = 원본파일.Replace("\", "/") + 대상파일 = 대상파일.Replace("\", "/") + End If + + loopcnt += 1 + Application.DoEvents() + + + 'If MDiMain.lvSchedule.Items.IndexOfKey(lvKey) = -1 Then + ' 작업갯수 += 1 + ' Dim lvSC As ListViewItem = MDiMain.lvSchedule.Items.Add(lvKey, dr.구분, 0) + ' lvSC.SubItems.Add(원본파일) + ' lvSC.SubItems.Add(대상파일) + ' lvSC.SubItems.Add("대기") + ' lvSC.SubItems.Add(작업갯수.ToString()) + ' lvSC.ForeColor = Color.DarkMagenta + + ' '//명령파라미터추가 + ' 'Dim NewCmd As New SJobCommand() + ' 'Select Case dr.구분 + ' ' Case "복사" + ' ' NewCmd.Mode = E_Runtype.Copy + ' ' Case "삭제" + ' ' NewCmd.Mode = E_Runtype.Delete + ' ' Case "이동" + ' ' NewCmd.Mode = E_Runtype.Move + ' 'End Select + ' 'NewCmd.SrcDir = dr.원본경로 + ' 'NewCmd.SrcFile = dr.원본파일명 + ' 'NewCmd.DesDir = dr.대상경로 + ' 'NewCmd.DesFile = dr.대상파일명 + ' 'NewCmd.isFTP = Param.isFTPWork + ' 'lvSC.Tag = NewCmd + + 'Else + ' PLog.Add("중복대상파일:" + lvKey) + 'End If + Next + End Sub + + Public Sub MoveFileRMove(winhide As Boolean) + Dim SrcFI, DesFi As FileInfo + Dim Errcount As Integer = 0 + + MDiMain.MSG("파일이동중...") + + Dim index As Integer = 0 + Dim endcnt As Integer = MDiMain.DataSet1.WorkList.Rows.Count - 1 + + If MDiMain.DataSet1.WorkList Is Nothing Then + MsgBox("작업파일목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인") + Return + End If + + For Each Dr As ireaDataSet.WorkListRow In MDiMain.DataSet1.WorkList.Rows + index += 1 + MDiMain.ShowCnt1(index, endcnt, "파일이동") + My.Application.DoEvents() + + If Dr.오류 <> "" Then + Errlog("선오류감지되어서 넘어갑니다(" & Dr.오류 & ")") + Errcount += 1 + Else + + Dim 원본파일명 As String = Dr.원본경로 & "\" & Dr.원본파일명 + Dim 대상파일명 As String = Dr.대상경로 & "\" & Dr.대상파일명 + + If Not isFileName(원본파일명) Then + Dr.성공 = "X" + Dr.오류 = "원본파일명이 올바르지 않습니다:" + 원본파일명 + ElseIf Not isFileName(대상파일명) Then + Dr.성공 = "X" + Dr.오류 = "대상파일명이 올바르지 않습니다:" + 대상파일명 + Else + SrcFI = New System.IO.FileInfo(원본파일명) + DesFi = New System.IO.FileInfo(대상파일명) + + Try + Check_Backup(SrcFI, BakTag) + Catch ex As Exception + MsgBox("백업정책(Check_Backup이 실패했습니다)" & vbCrLf & "Baktag=" & BakTag & vbCrLf & "오류내용:" & ex.Message.ToString, MsgBoxStyle.Information, "메일보내주세요") + End Try + Application.DoEvents() + + '//폴더생성시 오류가 발생할수있다. + If Not System.IO.Directory.Exists(Dr.대상경로) Then + If Not DirCreate(Dr.대상경로) Then + Dr.성공 = "X" + Dr.오류 = "대상폴더생성실패:" + Dr.대상경로 + Errcount += 1 + Continue For + End If + End If + Application.DoEvents() + + Try + '//대상파일이존재한다면 넘어가도록 한다. + If DesFi.Exists AndAlso DesFi.Length = SrcFI.Length Then + Dr.성공 = "△" + Dr.오류 = "대상파일존재 넘어감" + 'DesFi.Delete() '//덮어쓰기이므로 기존파일을 삭제해주심! + Else + SrcFI.MoveTo(DesFi.FullName) '//실제로 이동한다. + Dr.성공 = "O" + Dr.오류 = "" + End If + Catch ex As Exception + Dr.성공 = "X" + Dr.오류 = "MFRM:" + ex.Message.ToString + Errcount += 1 + End Try + Application.DoEvents() + + End If + End If + Next + MDiMain.MSG("파일 [이동] 완료" & IIf(Errcount > 0, "(일부파일에 오류가 발생하였습니다", "")) + End Sub + + Public Sub MoveFileRCopy(winhide As Boolean) + Dim SrcFI As FileInfo = Nothing + Dim DesFi As FileInfo = Nothing + + Dim SrcFIp As String '//ft용 160328 + Dim Err As Boolean = False + Dim isFTP As Boolean = False + + If GetWorkDIr.StartsWith("ftp:/") Then isFTP = True + + MDiMain.MSG("파일복사중...") + Application.DoEvents() + + Dim index As Integer = 0 + Dim endcnt As Integer = MDiMain.DataSet1.WorkList.Rows.Count - 1 + + If MDiMain.DataSet1.WorkList Is Nothing Then + If winhide Then + MDiMain.Noti("MoveFileRCopy" + vbCrLf + "파일목록이 없습니다") + Else + MsgBox("작업파일목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인") + End If + Return + End If + + Application.DoEvents() + + For Each Dr As ireaDataSet.WorkListRow In MDiMain.DataSet1.WorkList.Rows + index += 1 + + Application.DoEvents() + + MDiMain.ShowCnt1(index, endcnt, "파일복사") + If Dr.오류 <> "" Then + Errlog("선오류감지되어서 넘어갑니다(" & Dr.오류 & ")") + Else + Dim 원본파일명 As String = Dr.원본경로 & "\" & Dr.원본파일명 + Dim 대상파일명 As String = Dr.대상경로 & "\" & Dr.대상파일명 + + If isFTP Then + SrcFIp = 원본파일명.Replace("\", "/") + SrcFIp = SrcFIp.Replace("//", "/") + Else + If isFileName(원본파일명) Then + SrcFI = New FileInfo(원본파일명) + Else + Dr.성공 = "X" + Dr.오류 = "원본파일명오류:" + 원본파일명 + Dr.EndEdit() + Continue For + End If + End If + + If isFileName(대상파일명) Then + DesFi = New FileInfo(대상파일명) + Else + Dr.성공 = "X" + Dr.오류 = "대상파일명오류:" + 대상파일명 + Dr.EndEdit() + Continue For + End If + + Application.DoEvents() + + '//ftp상태일때는 원본 백업을 하지 않는다. + If Not isFTP Then + Try + Check_Backup(SrcFI, BakTag) + Catch ex As Exception + PLog.Add(ex.Message, True) + If winhide Then + MDiMain.Noti("백업정책실패: " + ex.Message) + Else + MsgBox("백업정책(Check_Backup이 실패했습니다)" & vbCrLf & "Baktag=" & BakTag & vbCrLf & "오류내용:" & ex.Message.ToString, MsgBoxStyle.Information, "메일보내주세요") + End If + End Try + End If + + Application.DoEvents() + + Try + If Directory.Exists(DesFi.DirectoryName) = False Then + Directory.CreateDirectory(DesFi.DirectoryName) '//대상폴더생성 + End If + Catch ex As Exception + + Dr.성공 = "X" + Dr.오류 = "대상폴더생성실패:" + ex.Message + Dr.EndEdit() + + Errlog("대상폴더생성실패:" + DesFi.DirectoryName & vbCrLf + ex.Message.ToString) + Continue For + End Try + + + If DesFi.Exists Then + Dr.성공 = "△" + Dr.오류 = "대상파일존재 넘어감" + Dr.EndEdit() + Else + If isFTP Then + Dim 재시도횟수 As Integer = 0 +FTPDOWN: + Try + FTP_0.Download(SrcFIp, DesFi.FullName, True) + If System.IO.File.Exists(DesFi.FullName) Then + Dim fi As New System.IO.FileInfo(DesFi.FullName) + If fi.Length = 0 Then + Dr.성공 = "X" + Dr.오류 = "다운로드실패(0byte)" + Dr.EndEdit() + Else + Dr.성공 = "O" + Dr.오류 = "" + Dr.EndEdit() + Continue For + End If + Else + Dr.성공 = "X" + Dr.오류 = "다운로드실패(대상파일이없음)" + Dr.EndEdit() + End If + Catch ex As Exception + Dr.성공 = "X" + Dr.오류 = "다운로드실패(예외:" + ex.Message + ")" + Dr.EndEdit() + End Try + + Application.DoEvents() + + + If Dr.성공 = "X" Then + '//다운로드실패일때는 대상횟수로 연속 다운로드를 한다 + If 재시도횟수 < MaxRetryCount Then + Dr.성공 = "■" + Dr.오류 = String.Format("재시도({0}/{1})", 재시도횟수, MaxRetryCount) + Dr.EndEdit() + 재시도횟수 += 1 + PLog.Add("재실행으로인한 지연시간") + MDiMain.Noti(String.Format("FTP Download 오류(재시도:{0}/{1})" + vbCrLf + SrcFIp, 재시도횟수, MaxRetryCount)) + Form_Status.Refresh() + Threading.Thread.Sleep(2000) + GoTo FTPDOWN + Else + '//아무것도 하지않는다 이것은 오류이다. + Err = True + Continue For + End If + End If + + + Else + + Try + '//일반파일은 기존대로 사용하도록 한다. + SrcFI.CopyTo(DesFi.FullName, True) + Dr.성공 = "O" + Dr.오류 = "" + Dr.EndEdit() + Catch ex As Exception + Err = True + Dr.성공 = "X" + Dr.오류 = "일반파일복사오류:" + ex.Message.ToString() + Dr.EndEdit() + Continue For + End Try + + End If + + Application.DoEvents() + + End If + End If + + Next + MDiMain.MSG("파일 [복사] 완료" & IIf(Err, "(일부파일에 오류가 발생하였습니다", "")) + MDiMain.Noti("파일(복사)완료") + End Sub + +End Module diff --git a/DriveInfo/모듈/Pub.vb b/DriveInfo/모듈/Pub.vb new file mode 100644 index 0000000..81e42e4 --- /dev/null +++ b/DriveInfo/모듈/Pub.vb @@ -0,0 +1,330 @@ +Imports System.Data + +Module Pub + + Structure Str_Macro + Dim FileName As String + Dim Desc As String + End Structure + + '//일반변수 + Public PLog As ArinLog.ArinLog + + Public PathTempDown As String + Public PathMacro As String + Public PathJob As String + Public PathList As String + + Public MacroPattern As String = "fileinfo" + Public IniFile As String + Public Prev_file As System.IO.FileInfo + + Public MaxRetryCount As Integer = 20 '//ftp 재시도 횟수 (10회 재시도 후 실패시에는 우선 넘어간다) + Public RetrySleeptime As Integer = 2000 + + '//FTP변수 + Public FTPServer As String = "127.0.0.1" + Public FTPID As String = "anonymous" + Public FTPPW As String = "" + Public FTPPort As Integer = 21 + Public FTPPath As String = "" + Public FTPPassive As Boolean = False + Public FTPUTF8 As Boolean = False + + Public Enum EJobCmdType + copy = 0 + move = 1 + delete = 2 + End Enum + Public Structure SJobCommand + Dim Mode As E_Runtype + Dim SrcDir As String + Dim SrcFile As String + Dim DesDir As String + Dim DesFile As String + Dim isFTP As Boolean + End Structure + + Public Function FileCheckSum(fn As String) As String + Dim _md5 As System.Security.Cryptography.MD5 = System.Security.Cryptography.MD5.Create() + Using stream As System.IO.FileStream = File.OpenRead(fn) + Dim checksum() As Byte = _md5.ComputeHash(stream) + Return BitConverter.ToString(checksum).Replace("-", String.Empty) + End Using + Return "CHKERR" + End Function + + Public Sub init() + + '//공용로그값 + PLog = New ArinLog.ArinLog() + + '//공용변수 + Prev_file = Nothing + + '//기본경로 + PathMacro = My.Application.Info.DirectoryPath & "\macro\" & MacroPattern + PathJob = My.Application.Info.DirectoryPath & "\Job" + PathList = My.Application.Info.DirectoryPath & "\List" + + '//작업용폴더확인 + If Not System.IO.Directory.Exists(PathJob) Then System.IO.Directory.CreateDirectory(PathJob) + If Not System.IO.Directory.Exists(PathMacro) Then System.IO.Directory.CreateDirectory(PathMacro) + If Not System.IO.Directory.Exists(PathList) Then System.IO.Directory.CreateDirectory(PathList) + + '//파일변수 + IniFile = My.Application.Info.DirectoryPath & "\macro\" & MacroPattern & "\default.ini" + + End Sub + + '''입력문자열이 파일로 변환되는지? + Public Function isFileName(fn As String) As Boolean + Try + Dim fi As New System.IO.FileInfo(fn) + Return True + Catch ex As Exception + Return False + End Try + End Function + + Public Function DirCreate(path As String) As Boolean + Try + System.IO.Directory.CreateDirectory(path) + Return True + Catch ex As Exception + PLog.Add(ArinLog.ArinLog.ETYPE.ERROR, "폴더생성실패(" + path + ") " + ex.Message, True) + Return False + End Try + End Function + + 'Public _ParseFormats As String() = { _ + ' "(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\w+\s+\w+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{4})\s+(?.+)", _ + ' "(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\d+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{4})\s+(?.+)", _ + ' "(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\d+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{1,2}:\d{2})\s+(?.+)", _ + ' "(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\w+\s+\w+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{1,2}:\d{2})\s+(?.+)", _ + ' "(?[\-dl])(?([\-r][\-w][\-xs]){3})(\s+)(?(\d+))(\s+)(?(\w+\s\w+))(\s+)(?(\d+))\s+(?\w+\s+\d+\s+\d{2}:\d{2})\s+(?.+)", _ + ' "(?\d{2}\-\d{2}\-\d{2}\s+\d{2}:\d{2}[Aa|Pp][mM])\s+(?\<\w+\>){0,1}(?\d+){0,1}\s+(?.+)"} + + 'Public Function GetMatchingRegex(ByVal line As String) As System.Text.RegularExpressions.Match + ' Dim rx As System.Text.RegularExpressions.Regex, m As System.Text.RegularExpressions.Match + ' For i As Integer = 0 To _ParseFormats.Length - 1 + ' rx = New System.Text.RegularExpressions.Regex(_ParseFormats(i)) + ' m = rx.Match(line) + ' If m.Success Then Return m + ' Next + ' Return Nothing + 'End Function + + 'Public Enum SFtpType + ' Link = 0 + ' File = 1 + ' Dir = 2 + 'End Enum + + 'Public Structure SFTPDetail + ' Dim FileType As SFtpType + ' Dim FileName As String + ' Dim Size As Long + ' Dim Permission As String + ' Dim TimeStamp As String + 'End Structure + + 'Public Function FtpDirParser(dirList() As String) As List(Of SFTPDetail) + ' Dim retval As New List(Of SFTPDetail) + ' For Each line As String In dirList + ' Dim m As System.Text.RegularExpressions.Match = GetMatchingRegex(line) + ' If Not m Is Nothing Then + + ' Dim newdr As New SFTPDetail + + ' Dim name As String = m.Groups("name").Value + ' Dim perm As String = m.Groups("poermission").Value + ' Dim _dir As String = m.Groups("dir").Value + ' newdr.TimeStamp = m.Groups("timestamp").Value + + ' Dim filetype As String = "" + ' Dim size As Long = 0 + ' If _dir.ToLower = "l" Then + ' filetype = "LINK" + ' size = 0 + ' newdr.FileType = SFtpType.Link + ' ElseIf _dir.ToLower = "d" OrElse _dir.ToLower = "" Then + ' filetype = "DIR" + ' size = 0 + ' newdr.FileType = SFtpType.Dir + ' Else + ' filetype = "FILE" + ' size = Long.Parse(m.Groups("size").Value) + ' newdr.FileType = SFtpType.File + ' End If + + ' newdr.Permission = perm + ' newdr.FileName = name + + ' newdr.Size = size + ' retval.Add(newdr) + ' End If + ' Next + ' Return retval + 'End Function + + Public FTP_0 As FTPClients.Client_2 + + Public Enum E_DesDirType + desPath = 1 '//대상폴더 + CustomPath = 2 '//조합에의한 폴더 + End Enum + Public Enum E_baktype + none = 0 + Folder1 = 1 + CurrnetFolder = 2 + ParentFolder = 3 + End Enum + Structure S_Log + Dim Result As Char + Dim OrgFile As String + Dim DesFile As String + Dim Orgpath As String + Dim DesPath As String + Dim Msg As String + End Structure + Enum E_Runtype + Copy = 0 + Delete = 1 + Move = 2 + End Enum + + Public Log As ArrayList + Public log2 As ArrayList + Public Fileok As ArrayList '//성공한 파일목록 + Public Ep As String + Public BakTag As String = "-원본(" & Format(Now, "MMdd") & ")" '& "_MOV_D" + + Public Function GetBakDir1() As String + Return MDiMain.tb_bakdir1.Text + End Function + + Public Function SaveExcelFile(fn As String, dt As DataTable) + Dim fp As New FarPoint.Win.Spread.FpSpread() + fp.DataSource = dt + Return fp.SaveExcel(fn, FarPoint.Excel.ExcelSaveFlags.SaveBothCustomRowAndColumnHeaders) + End Function + + + Public Function GetBackType1() As E_baktype + Select Case MDiMain.cbBakType.SelectedIndex + Case 0 + Return E_baktype.none + Case 1 + Return E_baktype.Folder1 + Case 2 + Return E_baktype.CurrnetFolder + Case 3 + Return E_baktype.ParentFolder + End Select + 'If MDiMain.btBakNo.Pressed Then + ' Return E_baktype.none + 'ElseIf MDiMain.btBakSrc.Pressed Then + ' Return E_baktype.CurrnetFolder + 'ElseIf MDiMain.btBakUpDir.Pressed Then + ' Return E_baktype.ParentFolder + 'Else + ' Return E_baktype.Folder1 + 'End If + End Function + + Public Function GetrunType() As E_Runtype + If MDiMain.btDel.Pressed Then + Return 1 + ElseIf MDiMain.btMove.Pressed Then + Return 2 + Else + Return 0 + End If + End Function + Public Function GetWorkDIr() As String + Try + Return CStr(MDiMain.tb_workdir.Text).Replace("\\", "\").Replace("//", "/") + Catch ex As Exception + Return "작업폴더에 문제가있습니다" + End Try + End Function + Public Function GetExtendFromMdi() As String + Try + Return "*." & MDiMain.tb_ext.Text + Catch ex As Exception + Return "*.*" + End Try + End Function + Public Function GetExtendOnly() As String + + Return MDiMain.tb_ext.Text + + End Function + Public Function GetSubDir() As Boolean + Try + Return MDiMain.chk_subdir.Checked + Catch ex As Exception + Return True + End Try + End Function + + Public Function GetSubdirType() As Short + If MDiMain.chk_subdir.Checked Then + Return 1 + Else + Return 0 + End If + End Function + + Public MyINI As New CommonClassv2.MyINI(My.Application.Info.DirectoryPath & "\main.ini") + Public Arin As New CommonClassv2.ARINCLASS + + Public Sub Addlog(ByVal 성공여부 As String, ByVal 원본파일 As String, ByVal 대상파일 As String, ByVal 메세지 As String, Optional ByVal reset As Boolean = False) + If reset Then Log = New ArrayList + Log.Add(성공여부 & "/" & 원본파일 & "/" & 대상파일 & "/" & 메세지) + End Sub + + Public Sub Addlog2(ByVal msg As String, Optional ByVal reset As Boolean = False) + If reset Then log2 = New ArrayList + log2.Add(">> " & msg) + 'Frm_log.RichTextBox1.AppendText(">> " & msg) + 'Frm_log.RichTextBox1.AppendText(vbCrLf) + End Sub + Public Sub makelog2(ByVal msg As String) + Try + Form_Status.RichTextBox1.AppendText(msg) + Form_Status.RichTextBox1.AppendText(vbCrLf) + Catch ex As Exception + + End Try + + End Sub + + Public Sub MakeBakLog1() + Form_Status.RichTextBox2.Clear() + For Each Msg As String In Backupfolder1 + Form_Status.RichTextBox2.AppendText(Msg) + Form_Status.RichTextBox2.AppendText(vbCrLf) + Next + End Sub + + + + Public Function getSP() As Integer + If String.IsNullOrEmpty(MDiMain.tb_sttrange.Text) Then MDiMain.tb_sttrange.Text = "1" + Return MDiMain.tb_sttrange.Text '//목록에서 시작줄번호 + End Function + + Public Sub Errlog(ByVal amsg As String) + Dim Fs As New System.IO.FileStream(My.Application.Info.DirectoryPath & "\error.txt", FileMode.Create) + Dim Sw As New System.IO.StreamWriter(Fs, System.Text.Encoding.Default) + Sw.WriteLine("시간:" & Now.ToShortDateString & ":" & Now.ToShortTimeString & vbCrLf & amsg) + Sw.Close() + Sw.Dispose() + Fs.Close() + Fs.Dispose() + End Sub + + +End Module diff --git a/DriveInfo/모듈/mod_Delete.vb b/DriveInfo/모듈/mod_Delete.vb new file mode 100644 index 0000000..9d6e1ac --- /dev/null +++ b/DriveInfo/모듈/mod_Delete.vb @@ -0,0 +1,183 @@ +Imports System.IO +Imports System.Threading +Imports System.Data + +Module Mod_Delete + 'Public Sub DeleteFile() + ' DeleteFileFromList() + 'End Sub + + 'Public Sub DeleteFileFromList() '//파일목록으로부터 삭제대상폴더의 파일을 삭제한다. + ' Dim FileList As New ArrayList + ' Dim FI() As FileInfo + ' Dim Di As DirectoryInfo + + ' If MsgBox("파일삭제작업을 진행하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "삭제확인") <> MsgBoxResult.Ok Then + ' MsgBox("취소되었습니다", MsgBoxStyle.Information, "확인") + ' Return + ' End If + + ' '//파일목록을 작성합니다. + ' MSG("삭제 진행중...") + ' MDiMain.pbar2.Minimum = 0 + ' MDiMain.pbar2.Maximum = Ep + ' MDiMain.Refresh() + + ' Addlog2("삭제시작 줄번호 범위 " & SP & " ~ " & Ep, True) + + ' Dim NullCnt As Short = 0 + ' Dim fn As String + + ' For i As Integer = SP To Ep + ' MDiMain.pbar2.Value = i + ' If i Mod 10 = 0 Then + ' MSG("삭제중 (" & i & "/" & Ep & ")") + ' MDiMain.Refresh() + ' End If + + ' fn = Frm_srcfile.Get_FileList(i + 1) & Mod_Comm.GetExtendFromMdi.Trim("*") + ' If fn.Trim <> "" Then + ' NullCnt = 0 '//파일을 삭제하는 루틴을 만든다. + ' Di = New DirectoryInfo(GetWorkDIr) '//경로선택 + ' FI = Di.GetFiles(fn, GetSubdirType) + ' If FI.Length < 1 Then + ' addlog("X", fn, "", "파일없음") + ' End If + + ' For Each F As FileInfo In FI '//일치하는 모든 파일을 삭제한다. + ' If F.FullName.IndexOf("-원본") = -1 Then '//백업이 만들어놓은 폴더의 파일은 제낀다. + ' Fileok.Add(F.FullName) '//정상파일목록을 가진다. + ' addlog("O", F.FullName, "", "삭제") + ' If Mod_Comm.GetExeType Then ''//모의실행은 백업및 작업을 하지않는다. + ' '//백업정책을 확인해서 해당 파일을 백업할곳을 결정한다. + ' Check_Backup(F, BakTag) + ' F.Delete() + ' End If + ' End If + ' Next + ' Else + ' NullCnt += 1 + ' If NullCnt = 5 Then '//빈줄이나올때 널카운트를 증가시키고 빈줄이 5번연속나올때는 빠져나온다. + ' Exit For + ' End If + ' End If + ' Next + ' Addlog2("삭제작업이 완료되었습니다") + ' 'Frm_Wait.Hide() + 'End Sub + Public Sub DeleteFileM(Param As RunParam) '//파일목록으로부터 삭제대상폴더의 파일을 삭제한다. + '//파일목록을 작성합니다. + MDiMain.MSG("삭제목록 작성중...") + + '//변수목록 + Dim NR As ireaDataSet.WorkListRow + Dim WRow() As ireaDataSet.FileListRow + Dim index As Integer = 0 + Dim endcnt As Integer = MDiMain.DataSet1.SrcList.Rows.Count - 1 + + + If MDiMain.DataSet1.SrcList Is Nothing Then + MsgBox("원본목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인") + Return + End If + + + For Each drs As ireaDataSet.SrcListRow In MDiMain.DataSet1.SrcList.Rows '//원본목록회전 + + If MDiMain.DataSet1.SrcList Is Nothing Then + MsgBox("파일목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인") + Return + End If + + index += 1 + Application.DoEvents() + MDiMain.ShowCnt1(index, endcnt, "목록작성") + '//전체목록에서 원본목록 검색 + WRow = MDiMain.DataSet1.FileList.Select("파일명 like '" & drs.목록명 & "'") + If WRow.Length = 0 Then Addlog("X", drs.목록명, "", "파일없음") + + For Each dr As ireaDataSet.FileListRow In WRow '//일치하는 목록들 작업목록에 집어넣는다. + NR = MDiMain.DataSet1.WorkList.NewWorkListRow + NR.원본경로 = dr.경로 + NR.원본파일명 = dr.파일명 + NR.구분 = "삭제" + NR.대상경로 = dr.경로 + NR.대상파일명 = dr.파일명 + NR.오류 = "" + If NR.대상파일명.IndexOf("*") = -1 AndAlso NR.대상파일명.IndexOf("?") = -1 Then + Try + MDiMain.DataSet1.WorkList.Rows.Add(NR) + Catch ex As Exception '//추가오류는 뻔하다이미 그 파일이 있는경우다. + NR.오류 = "중복된 삭제대상파일입니다(" & Format(Now, "HHmmss") & ")" + MDiMain.DataSet1.WorkList.Rows.Add(NR) + makelog2("중복된 삭제대상파일이 생성되었습니다") + makelog2(" 파일명 : " & NR.원본경로 & "\" & NR.원본파일명) + 'If MsgBox("중복된 대상파일이 확인되었습니다" & vbCrLf & vbCrLf & "계속하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then + ' Return + 'End If + End Try + End If + Next + Next + MDiMain.MSG("삭제목록 작성완료...") + + 'If GetExeType() Then '//실제실행일경우 + ' DeleteFileR() + 'Else '//모의실행일경우 + ' Addlog2("모의실행 : 실제 복사/이동/삭제는 수행되지 않습니다") + ' MsgBox("모의실행입니다" & vbCrLf & "실제파일의 복사/이동/삭제 는 수행되지 않습니다", MsgBoxStyle.Information, "확인") + 'End If + + End Sub + + Public Sub DeleteFileR(winhide As Boolean) '//실제로 파일을 삭제합니다. 삭제시 성공여부를 기록합니다 + Dim FI As FileInfo + Dim Err As Boolean = False + + MDiMain.MSG("파일삭제 준비중") + + Dim index As Integer = 0 + Dim endcnt As Integer = MDiMain.DataSet1.WorkList.Rows.Count - 1 + + + If MDiMain.DataSet1.WorkList Is Nothing Then + MsgBox("작업파일목록이 존재하지않습니다." & vbCrLf & "진행할 수 없습니다", MsgBoxStyle.Information, "확인") + Return + End If + + For Each Dr As ireaDataSet.WorkListRow In MDiMain.DataSet1.WorkList.Rows + index += 1 + MDiMain.ShowCnt1(index, endcnt, "파일삭제") + Application.DoEvents() + + If Dr.오류 <> "" Then + Errlog("선오류감지되어서 넘어갑니다(" & Dr.오류 & ")") + Else + + Try + FI = New FileInfo(CStr(Dr.원본경로 & "\" & Dr.원본파일명).Replace("\\", "\")) + Check_Backup(FI, BakTag) + If FI.Exists = False Then Dr.오류 = "파일없음" + Try + FI.Delete() + Dr.성공 = "O" + Dr.오류 = "" + Catch ex As Exception + Err = True + Dr.성공 = "X" + Dr.오류 = ex.Message.ToString() + End Try + Catch ex As Exception + Err = True + Dr.성공 = "X" + Dr.오류 = ex.Message + Errlog("FI = New FileInfo(CStr(Dr.원본경로 &)" & ex.Message.ToString) + End Try + + End If + Next + MDiMain.MSG("파일 [삭제] 완료" & IIf(Err, "(일부파일에 오류가 발생하였습니다", "")) + End Sub + + +End Module diff --git a/DriveInfo/입력폼/Form_Status.Designer.vb b/DriveInfo/입력폼/Form_Status.Designer.vb new file mode 100644 index 0000000..0e555c9 --- /dev/null +++ b/DriveInfo/입력폼/Form_Status.Designer.vb @@ -0,0 +1,495 @@ + _ +Partial Class Form_Status + Inherits System.Windows.Forms.Form + + 'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. + _ + 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 + + 'Windows Form 디자이너에 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. + '수정하려면 Windows Form 디자이너를 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim DefaultFocusIndicatorRenderer1 As FarPoint.Win.Spread.DefaultFocusIndicatorRenderer = New FarPoint.Win.Spread.DefaultFocusIndicatorRenderer() + Dim DefaultScrollBarRenderer1 As FarPoint.Win.Spread.DefaultScrollBarRenderer = New FarPoint.Win.Spread.DefaultScrollBarRenderer() + Dim DefaultScrollBarRenderer2 As FarPoint.Win.Spread.DefaultScrollBarRenderer = New FarPoint.Win.Spread.DefaultScrollBarRenderer() + Dim TextCellType1 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Dim TextCellType2 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Dim TextCellType3 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Dim TextCellType4 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Dim TextCellType5 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Dim TextCellType6 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Dim TextCellType7 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Dim DefaultScrollBarRenderer3 As FarPoint.Win.Spread.DefaultScrollBarRenderer = New FarPoint.Win.Spread.DefaultScrollBarRenderer() + Dim DefaultScrollBarRenderer4 As FarPoint.Win.Spread.DefaultScrollBarRenderer = New FarPoint.Win.Spread.DefaultScrollBarRenderer() + Dim TextCellType8 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Dim TextCellType9 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Dim DefaultScrollBarRenderer5 As FarPoint.Win.Spread.DefaultScrollBarRenderer = New FarPoint.Win.Spread.DefaultScrollBarRenderer() + Dim DefaultScrollBarRenderer6 As FarPoint.Win.Spread.DefaultScrollBarRenderer = New FarPoint.Win.Spread.DefaultScrollBarRenderer() + Dim TextCellType10 As FarPoint.Win.Spread.CellType.TextCellType = New FarPoint.Win.Spread.CellType.TextCellType() + Me.TabControl1 = New System.Windows.Forms.TabControl() + Me.TabPage1 = New System.Windows.Forms.TabPage() + Me.FpSpread3 = New FarPoint.Win.Spread.FpSpread() + Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.bt_out_worklist = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripMenuItem3 = New System.Windows.Forms.ToolStripSeparator() + Me.bt_makebat = New System.Windows.Forms.ToolStripMenuItem() + Me.FpSpread3_Sheet1 = New FarPoint.Win.Spread.SheetView() + Me.IreaDataSet = New FileManager.ireaDataSet() + Me.TabPage2 = New System.Windows.Forms.TabPage() + Me.FpSpread1 = New FarPoint.Win.Spread.FpSpread() + Me.ContextMenuStrip2 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem() + Me.FpSpread1_Sheet1 = New FarPoint.Win.Spread.SheetView() + Me.TabPage3 = New System.Windows.Forms.TabPage() + Me.FpSpread2 = New FarPoint.Win.Spread.FpSpread() + Me.ContextMenuStrip3 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem() + Me.FpSpread2_Sheet1 = New FarPoint.Win.Spread.SheetView() + Me.TabPage4 = New System.Windows.Forms.TabPage() + Me.RichTextBox2 = New System.Windows.Forms.RichTextBox() + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.RichTextBox1 = New System.Windows.Forms.RichTextBox() + Me.btRun = New System.Windows.Forms.Button() + Me.TabControl1.SuspendLayout() + Me.TabPage1.SuspendLayout() + CType(Me.FpSpread3, System.ComponentModel.ISupportInitialize).BeginInit() + Me.ContextMenuStrip1.SuspendLayout() + CType(Me.FpSpread3_Sheet1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.IreaDataSet, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TabPage2.SuspendLayout() + CType(Me.FpSpread1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.ContextMenuStrip2.SuspendLayout() + CType(Me.FpSpread1_Sheet1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TabPage3.SuspendLayout() + CType(Me.FpSpread2, System.ComponentModel.ISupportInitialize).BeginInit() + Me.ContextMenuStrip3.SuspendLayout() + CType(Me.FpSpread2_Sheet1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TabPage4.SuspendLayout() + Me.TableLayoutPanel1.SuspendLayout() + Me.SuspendLayout() + ' + 'TabControl1 + ' + Me.TabControl1.Controls.Add(Me.TabPage1) + Me.TabControl1.Controls.Add(Me.TabPage2) + Me.TabControl1.Controls.Add(Me.TabPage3) + Me.TabControl1.Controls.Add(Me.TabPage4) + Me.TabControl1.Dock = System.Windows.Forms.DockStyle.Fill + Me.TabControl1.Location = New System.Drawing.Point(3, 3) + Me.TabControl1.Name = "TabControl1" + Me.TabControl1.SelectedIndex = 0 + Me.TabControl1.Size = New System.Drawing.Size(978, 485) + Me.TabControl1.TabIndex = 25 + ' + 'TabPage1 + ' + Me.TabPage1.Controls.Add(Me.FpSpread3) + Me.TabPage1.Location = New System.Drawing.Point(4, 22) + Me.TabPage1.Name = "TabPage1" + Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage1.Size = New System.Drawing.Size(970, 459) + Me.TabPage1.TabIndex = 0 + Me.TabPage1.Text = "작업대상목록" + Me.TabPage1.UseVisualStyleBackColor = True + ' + 'FpSpread3 + ' + Me.FpSpread3.AccessibleDescription = "FpSpread3, Sheet1" + Me.FpSpread3.BackColor = System.Drawing.Color.Transparent + Me.FpSpread3.ContextMenuStrip = Me.ContextMenuStrip1 + Me.FpSpread3.Dock = System.Windows.Forms.DockStyle.Fill + Me.FpSpread3.FocusRenderer = DefaultFocusIndicatorRenderer1 + Me.FpSpread3.HorizontalScrollBar.Buttons = New FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton") + Me.FpSpread3.HorizontalScrollBar.Name = "" + Me.FpSpread3.HorizontalScrollBar.Renderer = DefaultScrollBarRenderer1 + Me.FpSpread3.HorizontalScrollBar.TabIndex = 4 + Me.FpSpread3.Location = New System.Drawing.Point(3, 3) + Me.FpSpread3.Name = "FpSpread3" + Me.FpSpread3.RightToLeft = System.Windows.Forms.RightToLeft.No + Me.FpSpread3.Sheets.AddRange(New FarPoint.Win.Spread.SheetView() {Me.FpSpread3_Sheet1}) + Me.FpSpread3.Size = New System.Drawing.Size(964, 453) + Me.FpSpread3.Skin = FarPoint.Win.Spread.DefaultSpreadSkins.Classic + Me.FpSpread3.TabIndex = 22 + Me.FpSpread3.VerticalScrollBar.Buttons = New FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton") + Me.FpSpread3.VerticalScrollBar.Name = "" + Me.FpSpread3.VerticalScrollBar.Renderer = DefaultScrollBarRenderer2 + Me.FpSpread3.VerticalScrollBar.TabIndex = 5 + Me.FpSpread3.VisualStyles = FarPoint.Win.VisualStyles.Off + Me.FpSpread3.SetActiveViewport(0, -1, -1) + ' + 'ContextMenuStrip1 + ' + Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.bt_out_worklist, Me.ToolStripMenuItem3, Me.bt_makebat}) + Me.ContextMenuStrip1.Name = "ContextMenuStrip1" + Me.ContextMenuStrip1.Size = New System.Drawing.Size(151, 54) + ' + 'bt_out_worklist + ' + Me.bt_out_worklist.Name = "bt_out_worklist" + Me.bt_out_worklist.Size = New System.Drawing.Size(150, 22) + Me.bt_out_worklist.Text = "내보내기" + ' + 'ToolStripMenuItem3 + ' + Me.ToolStripMenuItem3.Name = "ToolStripMenuItem3" + Me.ToolStripMenuItem3.Size = New System.Drawing.Size(147, 6) + ' + 'bt_makebat + ' + Me.bt_makebat.Name = "bt_makebat" + Me.bt_makebat.Size = New System.Drawing.Size(150, 22) + Me.bt_makebat.Text = "배치파일 작성" + ' + 'FpSpread3_Sheet1 + ' + Me.FpSpread3_Sheet1.Reset() + Me.FpSpread3_Sheet1.SheetName = "Sheet1" + 'Formulas and custom names must be loaded with R1C1 reference style + Me.FpSpread3_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1 + FpSpread3_Sheet1.ColumnCount = 7 + Me.FpSpread3_Sheet1.ActiveColumnIndex = -1 + Me.FpSpread3_Sheet1.ActiveRowIndex = -1 + Me.FpSpread3_Sheet1.AutoGenerateColumns = False + Me.FpSpread3_Sheet1.ColumnFooter.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread3_Sheet1.ColumnFooter.DefaultStyle.Parent = "HeaderDefault" + Me.FpSpread3_Sheet1.ColumnFooterSheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread3_Sheet1.ColumnFooterSheetCornerStyle.Parent = "CornerDefault" + Me.FpSpread3_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "원본파일명" + Me.FpSpread3_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread3_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault" + Me.FpSpread3_Sheet1.ColumnHeader.Rows.Get(0).Height = 38.0! + Me.FpSpread3_Sheet1.Columns.Get(0).CellType = TextCellType1 + Me.FpSpread3_Sheet1.Columns.Get(0).DataField = "원본파일명" + Me.FpSpread3_Sheet1.Columns.Get(0).Width = 151.0! + Me.FpSpread3_Sheet1.Columns.Get(1).CellType = TextCellType2 + Me.FpSpread3_Sheet1.Columns.Get(1).DataField = "대상파일명" + Me.FpSpread3_Sheet1.Columns.Get(1).Width = 151.0! + Me.FpSpread3_Sheet1.Columns.Get(2).CellType = TextCellType3 + Me.FpSpread3_Sheet1.Columns.Get(2).DataField = "원본경로" + Me.FpSpread3_Sheet1.Columns.Get(2).Width = 151.0! + Me.FpSpread3_Sheet1.Columns.Get(3).CellType = TextCellType4 + Me.FpSpread3_Sheet1.Columns.Get(3).DataField = "대상경로" + Me.FpSpread3_Sheet1.Columns.Get(3).Width = 185.0! + Me.FpSpread3_Sheet1.Columns.Get(4).CellType = TextCellType5 + Me.FpSpread3_Sheet1.Columns.Get(4).DataField = "구분" + Me.FpSpread3_Sheet1.Columns.Get(4).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center + Me.FpSpread3_Sheet1.Columns.Get(4).VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center + Me.FpSpread3_Sheet1.Columns.Get(4).Width = 50.0! + Me.FpSpread3_Sheet1.Columns.Get(5).CellType = TextCellType6 + Me.FpSpread3_Sheet1.Columns.Get(5).DataField = "성공" + Me.FpSpread3_Sheet1.Columns.Get(5).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center + Me.FpSpread3_Sheet1.Columns.Get(5).VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center + Me.FpSpread3_Sheet1.Columns.Get(5).Width = 39.0! + Me.FpSpread3_Sheet1.Columns.Get(6).AllowAutoSort = True + Me.FpSpread3_Sheet1.Columns.Get(6).CellType = TextCellType7 + Me.FpSpread3_Sheet1.Columns.Get(6).DataField = "오류" + Me.FpSpread3_Sheet1.Columns.Get(6).ForeColor = System.Drawing.Color.Red + Me.FpSpread3_Sheet1.Columns.Get(6).Width = 145.0! + Me.FpSpread3_Sheet1.DataAutoCellTypes = False + Me.FpSpread3_Sheet1.DataAutoSizeColumns = False + Me.FpSpread3_Sheet1.DataMember = "WorkList" + Me.FpSpread3_Sheet1.DataSource = Me.IreaDataSet + Me.FpSpread3_Sheet1.RowHeader.Columns.Default.Resizable = False + Me.FpSpread3_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread3_Sheet1.RowHeader.DefaultStyle.Parent = "RowHeaderDefault" + Me.FpSpread3_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread3_Sheet1.SheetCornerStyle.Parent = "CornerDefault" + Me.FpSpread3_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1 + ' + 'IreaDataSet + ' + Me.IreaDataSet.DataSetName = "ireaDataSet" + Me.IreaDataSet.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema + ' + 'TabPage2 + ' + Me.TabPage2.Controls.Add(Me.FpSpread1) + Me.TabPage2.Location = New System.Drawing.Point(4, 22) + Me.TabPage2.Name = "TabPage2" + Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage2.Size = New System.Drawing.Size(970, 459) + Me.TabPage2.TabIndex = 1 + Me.TabPage2.Text = "파일목록" + Me.TabPage2.UseVisualStyleBackColor = True + ' + 'FpSpread1 + ' + Me.FpSpread1.AccessibleDescription = "FpSpread1, Sheet1, Row 0, Column 0, " + Me.FpSpread1.BackColor = System.Drawing.Color.Transparent + Me.FpSpread1.ContextMenuStrip = Me.ContextMenuStrip2 + Me.FpSpread1.Dock = System.Windows.Forms.DockStyle.Fill + Me.FpSpread1.FocusRenderer = DefaultFocusIndicatorRenderer1 + Me.FpSpread1.HorizontalScrollBar.Buttons = New FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton") + Me.FpSpread1.HorizontalScrollBar.Name = "" + Me.FpSpread1.HorizontalScrollBar.Renderer = DefaultScrollBarRenderer3 + Me.FpSpread1.HorizontalScrollBar.TabIndex = 4 + Me.FpSpread1.Location = New System.Drawing.Point(3, 3) + Me.FpSpread1.Name = "FpSpread1" + Me.FpSpread1.RightToLeft = System.Windows.Forms.RightToLeft.No + Me.FpSpread1.Sheets.AddRange(New FarPoint.Win.Spread.SheetView() {Me.FpSpread1_Sheet1}) + Me.FpSpread1.Size = New System.Drawing.Size(964, 453) + Me.FpSpread1.Skin = FarPoint.Win.Spread.DefaultSpreadSkins.Classic + Me.FpSpread1.TabIndex = 20 + Me.FpSpread1.VerticalScrollBar.Buttons = New FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton") + Me.FpSpread1.VerticalScrollBar.Name = "" + Me.FpSpread1.VerticalScrollBar.Renderer = DefaultScrollBarRenderer4 + Me.FpSpread1.VerticalScrollBar.TabIndex = 5 + Me.FpSpread1.VisualStyles = FarPoint.Win.VisualStyles.Off + Me.FpSpread1.SetActiveViewport(0, -1, -1) + ' + 'ContextMenuStrip2 + ' + Me.ContextMenuStrip2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripMenuItem1}) + Me.ContextMenuStrip2.Name = "ContextMenuStrip1" + Me.ContextMenuStrip2.Size = New System.Drawing.Size(123, 26) + ' + 'ToolStripMenuItem1 + ' + Me.ToolStripMenuItem1.Name = "ToolStripMenuItem1" + Me.ToolStripMenuItem1.Size = New System.Drawing.Size(122, 22) + Me.ToolStripMenuItem1.Text = "내보내기" + ' + 'FpSpread1_Sheet1 + ' + Me.FpSpread1_Sheet1.Reset() + Me.FpSpread1_Sheet1.SheetName = "Sheet1" + 'Formulas and custom names must be loaded with R1C1 reference style + Me.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1 + FpSpread1_Sheet1.ColumnCount = 2 + Me.FpSpread1_Sheet1.ActiveColumnIndex = -1 + Me.FpSpread1_Sheet1.ActiveRowIndex = -1 + Me.FpSpread1_Sheet1.ColumnFooter.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread1_Sheet1.ColumnFooter.DefaultStyle.Parent = "HeaderDefault" + Me.FpSpread1_Sheet1.ColumnFooterSheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread1_Sheet1.ColumnFooterSheetCornerStyle.Parent = "CornerDefault" + Me.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "경로" + Me.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "파일명" + Me.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault" + Me.FpSpread1_Sheet1.ColumnHeader.Rows.Get(0).Height = 41.0! + Me.FpSpread1_Sheet1.Columns.Get(0).CellType = TextCellType8 + Me.FpSpread1_Sheet1.Columns.Get(0).DataField = "경로" + Me.FpSpread1_Sheet1.Columns.Get(0).Label = "경로" + Me.FpSpread1_Sheet1.Columns.Get(0).Width = 210.0! + Me.FpSpread1_Sheet1.Columns.Get(1).CellType = TextCellType9 + Me.FpSpread1_Sheet1.Columns.Get(1).DataField = "파일명" + Me.FpSpread1_Sheet1.Columns.Get(1).Label = "파일명" + Me.FpSpread1_Sheet1.Columns.Get(1).Width = 210.0! + Me.FpSpread1_Sheet1.DataAutoCellTypes = False + Me.FpSpread1_Sheet1.DataAutoHeadings = False + Me.FpSpread1_Sheet1.DataAutoSizeColumns = False + Me.FpSpread1_Sheet1.DataMember = "FileList" + Me.FpSpread1_Sheet1.DataSource = Me.IreaDataSet + Me.FpSpread1_Sheet1.RowHeader.Columns.Default.Resizable = False + Me.FpSpread1_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread1_Sheet1.RowHeader.DefaultStyle.Parent = "RowHeaderDefault" + Me.FpSpread1_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread1_Sheet1.SheetCornerStyle.Parent = "CornerDefault" + Me.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1 + ' + 'TabPage3 + ' + Me.TabPage3.Controls.Add(Me.FpSpread2) + Me.TabPage3.Location = New System.Drawing.Point(4, 22) + Me.TabPage3.Name = "TabPage3" + Me.TabPage3.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage3.Size = New System.Drawing.Size(970, 459) + Me.TabPage3.TabIndex = 2 + Me.TabPage3.Text = "원본목록" + Me.TabPage3.UseVisualStyleBackColor = True + ' + 'FpSpread2 + ' + Me.FpSpread2.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, " + Me.FpSpread2.BackColor = System.Drawing.Color.Transparent + Me.FpSpread2.ContextMenuStrip = Me.ContextMenuStrip3 + Me.FpSpread2.Dock = System.Windows.Forms.DockStyle.Fill + Me.FpSpread2.FocusRenderer = DefaultFocusIndicatorRenderer1 + Me.FpSpread2.HorizontalScrollBar.Buttons = New FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton") + Me.FpSpread2.HorizontalScrollBar.Name = "" + Me.FpSpread2.HorizontalScrollBar.Renderer = DefaultScrollBarRenderer5 + Me.FpSpread2.HorizontalScrollBar.TabIndex = 2 + Me.FpSpread2.Location = New System.Drawing.Point(3, 3) + Me.FpSpread2.Name = "FpSpread2" + Me.FpSpread2.RightToLeft = System.Windows.Forms.RightToLeft.No + Me.FpSpread2.Sheets.AddRange(New FarPoint.Win.Spread.SheetView() {Me.FpSpread2_Sheet1}) + Me.FpSpread2.Size = New System.Drawing.Size(964, 453) + Me.FpSpread2.Skin = FarPoint.Win.Spread.DefaultSpreadSkins.Classic + Me.FpSpread2.TabIndex = 21 + Me.FpSpread2.VerticalScrollBar.Buttons = New FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton") + Me.FpSpread2.VerticalScrollBar.Name = "" + Me.FpSpread2.VerticalScrollBar.Renderer = DefaultScrollBarRenderer6 + Me.FpSpread2.VerticalScrollBar.TabIndex = 3 + Me.FpSpread2.VisualStyles = FarPoint.Win.VisualStyles.Off + Me.FpSpread2.SetActiveViewport(0, -1, -1) + ' + 'ContextMenuStrip3 + ' + Me.ContextMenuStrip3.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripMenuItem2}) + Me.ContextMenuStrip3.Name = "ContextMenuStrip1" + Me.ContextMenuStrip3.Size = New System.Drawing.Size(123, 26) + ' + 'ToolStripMenuItem2 + ' + Me.ToolStripMenuItem2.Name = "ToolStripMenuItem2" + Me.ToolStripMenuItem2.Size = New System.Drawing.Size(122, 22) + Me.ToolStripMenuItem2.Text = "내보내기" + ' + 'FpSpread2_Sheet1 + ' + Me.FpSpread2_Sheet1.Reset() + Me.FpSpread2_Sheet1.SheetName = "Sheet1" + 'Formulas and custom names must be loaded with R1C1 reference style + Me.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1 + FpSpread2_Sheet1.ColumnCount = 1 + Me.FpSpread2_Sheet1.ActiveColumnIndex = -1 + Me.FpSpread2_Sheet1.ActiveRowIndex = -1 + Me.FpSpread2_Sheet1.ColumnFooter.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread2_Sheet1.ColumnFooter.DefaultStyle.Parent = "HeaderDefault" + Me.FpSpread2_Sheet1.ColumnFooterSheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread2_Sheet1.ColumnFooterSheetCornerStyle.Parent = "CornerDefault" + Me.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "목록" + Me.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault" + Me.FpSpread2_Sheet1.ColumnHeader.Rows.Get(0).Height = 46.0! + Me.FpSpread2_Sheet1.Columns.Get(0).CellType = TextCellType10 + Me.FpSpread2_Sheet1.Columns.Get(0).DataField = "목록명" + Me.FpSpread2_Sheet1.Columns.Get(0).Label = "목록" + Me.FpSpread2_Sheet1.Columns.Get(0).Width = 271.0! + Me.FpSpread2_Sheet1.DataAutoCellTypes = False + Me.FpSpread2_Sheet1.DataAutoHeadings = False + Me.FpSpread2_Sheet1.DataAutoSizeColumns = False + Me.FpSpread2_Sheet1.DataMember = "SrcList" + Me.FpSpread2_Sheet1.DataSource = Me.IreaDataSet + Me.FpSpread2_Sheet1.RowHeader.Columns.Default.Resizable = False + Me.FpSpread2_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread2_Sheet1.RowHeader.DefaultStyle.Parent = "RowHeaderDefault" + Me.FpSpread2_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red + Me.FpSpread2_Sheet1.SheetCornerStyle.Parent = "CornerDefault" + Me.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1 + ' + 'TabPage4 + ' + Me.TabPage4.Controls.Add(Me.RichTextBox2) + Me.TabPage4.Location = New System.Drawing.Point(4, 22) + Me.TabPage4.Name = "TabPage4" + Me.TabPage4.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage4.Size = New System.Drawing.Size(970, 459) + Me.TabPage4.TabIndex = 3 + Me.TabPage4.Text = "백업폴더내역" + Me.TabPage4.UseVisualStyleBackColor = True + ' + 'RichTextBox2 + ' + Me.RichTextBox2.Dock = System.Windows.Forms.DockStyle.Fill + Me.RichTextBox2.Location = New System.Drawing.Point(3, 3) + Me.RichTextBox2.Name = "RichTextBox2" + Me.RichTextBox2.Size = New System.Drawing.Size(964, 453) + Me.RichTextBox2.TabIndex = 27 + Me.RichTextBox2.Text = "" + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.ColumnCount = 1 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.Controls.Add(Me.TabControl1, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.RichTextBox1, 0, 1) + Me.TableLayoutPanel1.Controls.Add(Me.btRun, 0, 2) + Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 3 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 128.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 43.0!)) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(984, 662) + Me.TableLayoutPanel1.TabIndex = 26 + ' + 'RichTextBox1 + ' + Me.RichTextBox1.Dock = System.Windows.Forms.DockStyle.Fill + Me.RichTextBox1.Location = New System.Drawing.Point(3, 494) + Me.RichTextBox1.Name = "RichTextBox1" + Me.RichTextBox1.Size = New System.Drawing.Size(978, 122) + Me.RichTextBox1.TabIndex = 26 + Me.RichTextBox1.Text = "" + ' + 'btRun + ' + Me.btRun.Dock = System.Windows.Forms.DockStyle.Fill + Me.btRun.Font = New System.Drawing.Font("굴림", 20.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.btRun.Location = New System.Drawing.Point(3, 622) + Me.btRun.Name = "btRun" + Me.btRun.Size = New System.Drawing.Size(978, 37) + Me.btRun.TabIndex = 27 + Me.btRun.Text = "실 행" + Me.btRun.UseVisualStyleBackColor = True + ' + 'Form_Status + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(984, 662) + Me.Controls.Add(Me.TableLayoutPanel1) + Me.Name = "Form_Status" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "상태창(데이터수집)" + Me.TopMost = True + Me.TabControl1.ResumeLayout(False) + Me.TabPage1.ResumeLayout(False) + CType(Me.FpSpread3, System.ComponentModel.ISupportInitialize).EndInit() + Me.ContextMenuStrip1.ResumeLayout(False) + CType(Me.FpSpread3_Sheet1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.IreaDataSet, System.ComponentModel.ISupportInitialize).EndInit() + Me.TabPage2.ResumeLayout(False) + CType(Me.FpSpread1, System.ComponentModel.ISupportInitialize).EndInit() + Me.ContextMenuStrip2.ResumeLayout(False) + CType(Me.FpSpread1_Sheet1, System.ComponentModel.ISupportInitialize).EndInit() + Me.TabPage3.ResumeLayout(False) + CType(Me.FpSpread2, System.ComponentModel.ISupportInitialize).EndInit() + Me.ContextMenuStrip3.ResumeLayout(False) + CType(Me.FpSpread2_Sheet1, System.ComponentModel.ISupportInitialize).EndInit() + Me.TabPage4.ResumeLayout(False) + Me.TableLayoutPanel1.ResumeLayout(False) + Me.ResumeLayout(False) + + End Sub + Friend WithEvents TabControl1 As System.Windows.Forms.TabControl + Friend WithEvents TabPage1 As System.Windows.Forms.TabPage + Friend WithEvents FpSpread3 As FarPoint.Win.Spread.FpSpread + Friend WithEvents FpSpread3_Sheet1 As FarPoint.Win.Spread.SheetView + Friend WithEvents TabPage2 As System.Windows.Forms.TabPage + Friend WithEvents FpSpread1 As FarPoint.Win.Spread.FpSpread + Friend WithEvents FpSpread1_Sheet1 As FarPoint.Win.Spread.SheetView + Friend WithEvents TabPage3 As System.Windows.Forms.TabPage + Friend WithEvents FpSpread2 As FarPoint.Win.Spread.FpSpread + Friend WithEvents FpSpread2_Sheet1 As FarPoint.Win.Spread.SheetView + Friend WithEvents IreaDataSet As FileManager.ireaDataSet + Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents RichTextBox1 As System.Windows.Forms.RichTextBox + Friend WithEvents TabPage4 As System.Windows.Forms.TabPage + Friend WithEvents RichTextBox2 As System.Windows.Forms.RichTextBox + Friend WithEvents ContextMenuStrip1 As System.Windows.Forms.ContextMenuStrip + Friend WithEvents bt_out_worklist As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ContextMenuStrip2 As System.Windows.Forms.ContextMenuStrip + Friend WithEvents ToolStripMenuItem1 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents ContextMenuStrip3 As System.Windows.Forms.ContextMenuStrip + Friend WithEvents ToolStripMenuItem2 As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents btRun As System.Windows.Forms.Button + Friend WithEvents ToolStripMenuItem3 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents bt_makebat As System.Windows.Forms.ToolStripMenuItem +End Class diff --git a/DriveInfo/입력폼/Form_Status.resx b/DriveInfo/입력폼/Form_Status.resx new file mode 100644 index 0000000..3f71d93 --- /dev/null +++ b/DriveInfo/입력폼/Form_Status.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 611, 14 + + + 33, 14 + + + 495, 14 + + + 771, 14 + + + 187, 14 + + + 931, 14 + + + 341, 14 + + + 56 + + \ No newline at end of file diff --git a/DriveInfo/입력폼/Form_Status.vb b/DriveInfo/입력폼/Form_Status.vb new file mode 100644 index 0000000..702a4d0 --- /dev/null +++ b/DriveInfo/입력폼/Form_Status.vb @@ -0,0 +1,195 @@ +Public Class Form_Status + + Enum E_SaveType + WorkList = 0 + FileList = 1 + SrcList = 2 + End Enum + + Public AutoRun As Boolean = False + Public Winhide As Boolean = False + + '//뷰의 내용을 파일로 저장한다. + Public Sub SaveList(ByVal Div As E_SaveType, ByVal UseOD As Boolean) + Dim NowString As String = Format(Now, "yyMMddHHmm") + Dim Filename As String = "" + Select Case Div + Case E_SaveType.FileList + Filename = "전체파일목록" + Case E_SaveType.SrcList + Filename = "원본목록" + Case E_SaveType.WorkList + Filename = "작업파일목록" + End Select + Filename = Filename & NowString & ".xls" + + If UseOD Then + Dim OD As New SaveFileDialog + OD.InitialDirectory = My.Application.Info.DirectoryPath + OD.FileName = Filename + OD.Filter = "엑셀워크시트(*xls)|*.xls" + If OD.ShowDialog() = Windows.Forms.DialogResult.OK Then + Select Case Div + Case E_SaveType.WorkList + PLog.Add("Save Work List : " + OD.FileName) + Me.FpSpread3.SaveExcel(OD.FileName, FarPoint.Excel.ExcelSaveFlags.SaveBothCustomRowAndColumnHeaders) + Case E_SaveType.FileList + PLog.Add("Save File List : " + OD.FileName) + Me.FpSpread1.SaveExcel(OD.FileName, FarPoint.Excel.ExcelSaveFlags.SaveBothCustomRowAndColumnHeaders) + Case E_SaveType.SrcList + PLog.Add("Save Source List : " + OD.FileName) + Me.FpSpread2.SaveExcel(OD.FileName, FarPoint.Excel.ExcelSaveFlags.SaveBothCustomRowAndColumnHeaders) + End Select + MsgBox("목록이 저장되었습니다" & vbCrLf & OD.FileName, MsgBoxStyle.Critical, "화인") + End If + Else + Filename = PathList & "\" & Filename + Select Case Div + Case E_SaveType.WorkList + PLog.Add("Save Work List : " + Filename) + Me.FpSpread3.SaveExcel(Filename, FarPoint.Excel.ExcelSaveFlags.SaveBothCustomRowAndColumnHeaders) + Case E_SaveType.FileList + PLog.Add("Save File List : " + Filename) + Me.FpSpread1.SaveExcel(Filename, FarPoint.Excel.ExcelSaveFlags.SaveBothCustomRowAndColumnHeaders) + Case E_SaveType.SrcList + PLog.Add("Save Source List : " + Filename) + Me.FpSpread2.SaveExcel(Filename, FarPoint.Excel.ExcelSaveFlags.SaveBothCustomRowAndColumnHeaders) + End Select + 'MsgBox("목록이 저장되었습니다" & vbCrLf & Filename, MsgBoxStyle.Critical, "화인") + End If + End Sub + + Private Sub bt_out_worklist_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_out_worklist.Click + Me.SaveList(E_SaveType.WorkList, True) + End Sub + + Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click + Me.SaveList(E_SaveType.FileList, True) + End Sub + + Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click + Me.SaveList(E_SaveType.SrcList, True) + End Sub + + Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btRun.Click + + If Me.FpSpread3_Sheet1.RowCount <= 0 Then + If Winhide Then + MDiMain.Noti("작업목록이 없으므로 실행할 수 없습니다") + Else + MsgBox("작업목록이 존재하지 않습니다", MsgBoxStyle.Critical, "확인") + End If + Return + End If + + ' MsgBox("1") + If Not AutoRun Then + If MsgBox("[복사/이동/삭제] 실행하시겠습니까?" + vbCrLf + "FTP의경우 백업정책이 적용되지 않습니다", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "실행확인") <> MsgBoxResult.Ok Then Return + End If + + Me.btRun.Enabled = False + MDiMain.Timer1.Enabled = False + ' MsgBox("2") + If GetrunType() = E_Runtype.Copy Then + Try + MoveFileRCopy(Winhide) + Catch ex As Exception + Errlog("MoveFileRCopy" & ex.Message.ToString) + End Try + + ElseIf GetrunType() = E_Runtype.Move Then + Try + MoveFileRMove(Winhide) + Catch ex As Exception + Errlog("MoveFileRMove" & ex.Message.ToString) + End Try + + Else + Try + DeleteFileR(Winhide) + Catch ex As Exception + Errlog("DeleteFileR" & ex.Message.ToString) + End Try + + End If + Try + MakeBakLog1() + Catch ex As Exception + Errlog("MakeBakLog1" & ex.Message.ToString) + End Try + Application.DoEvents() + + MDiMain.Timer1.Enabled = True + If Winhide Then + MDiMain.Noti("완료되었습니다") + ' Me.Close() + Else + MsgBox("완료되었습니다", MsgBoxStyle.Information, "확인") + End If + + End Sub + + Private Sub bt_makebat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_makebat.Click + Dim FN As String = "" + Dim Scr As String = "" + Select Case GetrunType() + Case E_Runtype.Copy + FN = "복사(" + Scr = "copy /y " + Case E_Runtype.Move + FN = "이동(" + Scr = "move /y " + Case E_Runtype.Delete + FN = "삭제(" + Scr = "del /f /q " + End Select + FN = "c:\" & FN & Format(Now, "yyyyMMdd") & ").bat" + Dim Fs As New FileStream(FN, FileMode.Create) + Dim Sw As New StreamWriter(Fs, System.Text.Encoding.Default) + + MDiMain.MSG("스크립트생성중") + Dim index As Integer = 0 + Dim endcnt As Integer = MDiMain.DataSet1.WorkList.Rows.Count - 1 + + Sw.WriteLine("@echo off") + For Each Dr As ireaDataSet.WorkListRow In MDiMain.DataSet1.WorkList.Rows + index += 1 + MDiMain.ShowCnt1(index, endcnt, "스크립트생성") + Sw.WriteLine("echo " & index & "/" & MDiMain.DataSet1.WorkList.Rows.Count) + Select Case GetrunType() + Case E_Runtype.Delete + Sw.WriteLine("del /f /q " & Chr(&H22) & Dr.원본경로 & "\" & Dr.원본파일명 & Chr(&H22)) + Case E_Runtype.Copy + Sw.WriteLine("copy /y " & Dr.원본경로 & "\" & Dr.원본파일명 & Space(1) & Dr.대상경로 & "\" & Dr.대상파일명) + Case E_Runtype.Move + Sw.WriteLine("move /y " & Dr.원본경로 & "\" & Dr.원본파일명 & Space(1) & Dr.대상경로 & "\" & Dr.대상파일명) + End Select + Next + Sw.Flush() + Sw.Close() + Fs.Close() + Sw = Nothing + Fs = Nothing + MDiMain.MSG("스크립트생성완료") + MsgBox("배치파일이 생성되엇습니다" & vbCrLf & "파일명 : " & FN, MsgBoxStyle.Information, "확인") + End Sub + + Private Sub Form_Status_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated + RefreshCount + End Sub + + Private Sub RefreshCount() + Me.TabPage1.Text = "작업대상목록(" & Me.FpSpread3_Sheet1.RowCount & ")" + Me.TabPage2.Text = "파일목록(" & Me.FpSpread1_Sheet1.RowCount & ")" + Me.TabPage3.Text = "원본목록(" & Me.FpSpread2_Sheet1.RowCount & ")" + End Sub + + Private Sub Form_Status_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load + Me.FpSpread1.DataSource = MDiMain.DataSet1.FileList + Me.FpSpread2.DataSource = MDiMain.DataSet1.SrcList + Me.FpSpread3.DataSource = MDiMain.DataSet1.WorkList + RefreshCount() + + If Winhide AndAlso WindowState <> FormWindowState.Minimized Then Me.WindowState = FormWindowState.Minimized + End Sub +End Class \ No newline at end of file diff --git a/DriveInfo/입력폼/Frm_DeleteFile.Designer.vb b/DriveInfo/입력폼/Frm_DeleteFile.Designer.vb new file mode 100644 index 0000000..17a9993 --- /dev/null +++ b/DriveInfo/입력폼/Frm_DeleteFile.Designer.vb @@ -0,0 +1,264 @@ + _ +Partial Class Frm_DeleteFile + Inherits System.Windows.Forms.Form + + 'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. + _ + 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 + + 'Windows Form 디자이너에 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. + '수정하려면 Windows Form 디자이너를 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container + Dim TipAppearance4 As FarPoint.Win.Spread.TipAppearance = New FarPoint.Win.Spread.TipAppearance + Me.FB = New System.Windows.Forms.FolderBrowserDialog + Me.StatusStrip1 = New System.Windows.Forms.StatusStrip + Me.ToolStrip1 = New System.Windows.Forms.ToolStrip + Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton + Me.ToolStripLabel1 = New System.Windows.Forms.ToolStripLabel + Me.FpSpread1 = New FarPoint.Win.Spread.FpSpread + Me.FpSpread1_Sheet1 = New FarPoint.Win.Spread.SheetView + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel + Me.tb_deldesc = New System.Windows.Forms.TextBox + Me.TabControl1 = New System.Windows.Forms.TabControl + Me.TabPage1 = New System.Windows.Forms.TabPage + Me.tb_deltext1 = New System.Windows.Forms.TextBox + Me.tb_deltext2 = New System.Windows.Forms.TextBox + Me.RadioButton2 = New System.Windows.Forms.RadioButton + Me.RadioButton1 = New System.Windows.Forms.RadioButton + Me.TabPage2 = New System.Windows.Forms.TabPage + Me.desc_timer = New System.Windows.Forms.Timer(Me.components) + Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components) + Me.ToolStrip1.SuspendLayout() + CType(Me.FpSpread1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.FpSpread1_Sheet1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.TableLayoutPanel1.SuspendLayout() + Me.TabControl1.SuspendLayout() + Me.TabPage1.SuspendLayout() + Me.SuspendLayout() + ' + 'StatusStrip1 + ' + Me.StatusStrip1.Location = New System.Drawing.Point(0, 544) + Me.StatusStrip1.Name = "StatusStrip1" + Me.StatusStrip1.Size = New System.Drawing.Size(982, 22) + Me.StatusStrip1.TabIndex = 2 + Me.StatusStrip1.Text = "StatusStrip1" + ' + 'ToolStrip1 + ' + Me.ToolStrip1.ImageScalingSize = New System.Drawing.Size(32, 32) + Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripButton1, Me.ToolStripLabel1}) + Me.ToolStrip1.Location = New System.Drawing.Point(0, 0) + Me.ToolStrip1.Name = "ToolStrip1" + Me.ToolStrip1.Size = New System.Drawing.Size(982, 39) + Me.ToolStrip1.TabIndex = 3 + Me.ToolStrip1.Text = "ToolStrip1" + ' + 'ToolStripButton1 + ' + Me.ToolStripButton1.Font = New System.Drawing.Font("맑은 고딕", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.ToolStripButton1.Image = Global.FileManager.My.Resources.Resources.play_32 + Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton1.Name = "ToolStripButton1" + Me.ToolStripButton1.Size = New System.Drawing.Size(67, 36) + Me.ToolStripButton1.Text = "실행" + Me.ToolStripButton1.TextAlign = System.Drawing.ContentAlignment.MiddleRight + ' + 'ToolStripLabel1 + ' + Me.ToolStripLabel1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right + Me.ToolStripLabel1.Name = "ToolStripLabel1" + Me.ToolStripLabel1.Size = New System.Drawing.Size(205, 36) + Me.ToolStripLabel1.Text = "→ 파일을 삭제할 방법을 선택하세요." + ' + 'FpSpread1 + ' + Me.FpSpread1.About = "3.0.2003.2005" + Me.FpSpread1.AccessibleDescription = "" + Me.FpSpread1.Dock = System.Windows.Forms.DockStyle.Fill + Me.FpSpread1.Font = New System.Drawing.Font("맑은 고딕", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.FpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded + Me.FpSpread1.Location = New System.Drawing.Point(3, 350) + Me.FpSpread1.Name = "FpSpread1" + Me.FpSpread1.Sheets.AddRange(New FarPoint.Win.Spread.SheetView() {Me.FpSpread1_Sheet1}) + Me.FpSpread1.Size = New System.Drawing.Size(976, 154) + Me.FpSpread1.TabIndex = 4 + TipAppearance4.BackColor = System.Drawing.SystemColors.Info + TipAppearance4.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + TipAppearance4.ForeColor = System.Drawing.SystemColors.InfoText + Me.FpSpread1.TextTipAppearance = TipAppearance4 + Me.FpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded + ' + 'FpSpread1_Sheet1 + ' + Me.FpSpread1_Sheet1.Reset() + Me.FpSpread1_Sheet1.SheetName = "Sheet1" + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.TableLayoutPanel1.ColumnCount = 1 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.Controls.Add(Me.tb_deldesc, 0, 1) + Me.TableLayoutPanel1.Controls.Add(Me.FpSpread1, 0, 2) + Me.TableLayoutPanel1.Controls.Add(Me.TabControl1, 0, 0) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 34) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 3 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 100.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 160.0!)) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(982, 507) + Me.TableLayoutPanel1.TabIndex = 5 + ' + 'tb_deldesc + ' + Me.tb_deldesc.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.tb_deldesc.Dock = System.Windows.Forms.DockStyle.Fill + Me.tb_deldesc.Font = New System.Drawing.Font("맑은 고딕", 11.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.tb_deldesc.Location = New System.Drawing.Point(3, 250) + Me.tb_deldesc.Multiline = True + Me.tb_deldesc.Name = "tb_deldesc" + Me.tb_deldesc.Size = New System.Drawing.Size(976, 94) + Me.tb_deldesc.TabIndex = 5 + ' + 'TabControl1 + ' + Me.TabControl1.Controls.Add(Me.TabPage1) + Me.TabControl1.Controls.Add(Me.TabPage2) + Me.TabControl1.Dock = System.Windows.Forms.DockStyle.Fill + Me.TabControl1.Font = New System.Drawing.Font("맑은 고딕", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.TabControl1.Location = New System.Drawing.Point(3, 3) + Me.TabControl1.Name = "TabControl1" + Me.TabControl1.SelectedIndex = 0 + Me.TabControl1.Size = New System.Drawing.Size(976, 241) + Me.TabControl1.TabIndex = 5 + ' + 'TabPage1 + ' + Me.TabPage1.Controls.Add(Me.tb_deltext1) + Me.TabPage1.Controls.Add(Me.tb_deltext2) + Me.TabPage1.Controls.Add(Me.RadioButton2) + Me.TabPage1.Controls.Add(Me.RadioButton1) + Me.TabPage1.Location = New System.Drawing.Point(4, 24) + Me.TabPage1.Name = "TabPage1" + Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage1.Size = New System.Drawing.Size(968, 213) + Me.TabPage1.TabIndex = 0 + Me.TabPage1.Text = "직접입력" + Me.TabPage1.UseVisualStyleBackColor = True + ' + 'tb_deltext1 + ' + Me.tb_deltext1.Location = New System.Drawing.Point(33, 40) + Me.tb_deltext1.Name = "tb_deltext1" + Me.tb_deltext1.Size = New System.Drawing.Size(239, 23) + Me.tb_deltext1.TabIndex = 6 + ' + 'tb_deltext2 + ' + Me.tb_deltext2.Location = New System.Drawing.Point(33, 104) + Me.tb_deltext2.Name = "tb_deltext2" + Me.tb_deltext2.Size = New System.Drawing.Size(239, 23) + Me.tb_deltext2.TabIndex = 5 + ' + 'RadioButton2 + ' + Me.RadioButton2.AutoSize = True + Me.RadioButton2.Location = New System.Drawing.Point(15, 79) + Me.RadioButton2.Name = "RadioButton2" + Me.RadioButton2.Size = New System.Drawing.Size(257, 19) + Me.RadioButton2.TabIndex = 4 + Me.RadioButton2.TabStop = True + Me.RadioButton2.Text = "지정된 문자가 들어있는 파일을 삭제합니다" + Me.RadioButton2.UseVisualStyleBackColor = True + ' + 'RadioButton1 + ' + Me.RadioButton1.AutoSize = True + Me.RadioButton1.Location = New System.Drawing.Point(15, 15) + Me.RadioButton1.Name = "RadioButton1" + Me.RadioButton1.Size = New System.Drawing.Size(177, 19) + Me.RadioButton1.TabIndex = 3 + Me.RadioButton1.TabStop = True + Me.RadioButton1.Text = "삭제할 파일명을 지정합니다" + Me.RadioButton1.UseVisualStyleBackColor = True + ' + 'TabPage2 + ' + Me.TabPage2.Location = New System.Drawing.Point(4, 24) + Me.TabPage2.Name = "TabPage2" + Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage2.Size = New System.Drawing.Size(968, 213) + Me.TabPage2.TabIndex = 1 + Me.TabPage2.Text = "파일목록" + Me.TabPage2.UseVisualStyleBackColor = True + ' + 'desc_timer + ' + Me.desc_timer.Interval = 1000 + ' + 'ToolTip1 + ' + Me.ToolTip1.AutoPopDelay = 60000 + Me.ToolTip1.InitialDelay = 500 + Me.ToolTip1.ReshowDelay = 100 + ' + 'Frm_DeleteFile + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(982, 566) + Me.Controls.Add(Me.TableLayoutPanel1) + Me.Controls.Add(Me.ToolStrip1) + Me.Controls.Add(Me.StatusStrip1) + Me.Name = "Frm_DeleteFile" + Me.Text = "파일삭제" + Me.ToolStrip1.ResumeLayout(False) + Me.ToolStrip1.PerformLayout() + CType(Me.FpSpread1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.FpSpread1_Sheet1, System.ComponentModel.ISupportInitialize).EndInit() + Me.TableLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel1.PerformLayout() + Me.TabControl1.ResumeLayout(False) + Me.TabPage1.ResumeLayout(False) + Me.TabPage1.PerformLayout() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents FB As System.Windows.Forms.FolderBrowserDialog + Friend WithEvents StatusStrip1 As System.Windows.Forms.StatusStrip + Friend WithEvents ToolStrip1 As System.Windows.Forms.ToolStrip + Friend WithEvents ToolStripLabel1 As System.Windows.Forms.ToolStripLabel + Friend WithEvents FpSpread1 As FarPoint.Win.Spread.FpSpread + Friend WithEvents FpSpread1_Sheet1 As FarPoint.Win.Spread.SheetView + Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents TabControl1 As System.Windows.Forms.TabControl + Friend WithEvents TabPage1 As System.Windows.Forms.TabPage + Friend WithEvents TabPage2 As System.Windows.Forms.TabPage + Friend WithEvents ToolStripButton1 As System.Windows.Forms.ToolStripButton + Friend WithEvents RadioButton2 As System.Windows.Forms.RadioButton + Friend WithEvents RadioButton1 As System.Windows.Forms.RadioButton + Friend WithEvents tb_deldesc As System.Windows.Forms.TextBox + Friend WithEvents desc_timer As System.Windows.Forms.Timer + Friend WithEvents tb_deltext1 As System.Windows.Forms.TextBox + Friend WithEvents tb_deltext2 As System.Windows.Forms.TextBox + Friend WithEvents ToolTip1 As System.Windows.Forms.ToolTip +End Class diff --git a/DriveInfo/입력폼/Frm_DeleteFile.resx b/DriveInfo/입력폼/Frm_DeleteFile.resx new file mode 100644 index 0000000..1a31735 --- /dev/null +++ b/DriveInfo/입력폼/Frm_DeleteFile.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 82, 17 + + + 200, 17 + + + 309, 17 + + + 463, 17 + + + 574, 17 + + \ No newline at end of file diff --git a/DriveInfo/입력폼/Frm_DeleteFile.vb b/DriveInfo/입력폼/Frm_DeleteFile.vb new file mode 100644 index 0000000..c3e14db --- /dev/null +++ b/DriveInfo/입력폼/Frm_DeleteFile.vb @@ -0,0 +1,61 @@ +Public Class Frm_DeleteFile + Dim MsgBuff As New System.Text.StringBuilder + Dim Err As Boolean = False + + Private Sub desc_timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles desc_timer.Tick + MsgBuff.Remove(0, MsgBuff.Length) + Err = False + + If Me.TabControl1.SelectedIndex = 0 Then + If Me.RadioButton1.Checked Then + If Me.tb_deltext1.Text = "" Or Me.tb_deltext1.Text.Length = 0 Then + Err = True + MsgBuff.AppendLine("삭제할 파일명에 들어가는 문자를 입력하세요") + End If + If Err = False Then + MsgBuff.AppendLine("작업폴더 : " & Pub.GetWorkDIr & " 에서") + MsgBuff.AppendLine("파일명이 [ " & Me.tb_deltext1.Text & "." & Pub.GetExtendFromMdi & " ] 인 파일들을 삭제합니다") + MsgBuff.AppendLine("대상파일의 확장자구분은 [ " & IIf(Pub.GetExtendFromMdi = "*", "모든형식", Pub.GetExtendFromMdi) & " ] 이며 하위폴더는 " & IIf(Pub.GetSubDir, "[포함] 합니다", "[포함] 하지 않습니다")) + End If + ElseIf Me.RadioButton2.Checked Then + If Me.tb_deltext2.Text = "" Or Me.tb_deltext2.Text.Length = 0 Then + Err = True + MsgBuff.AppendLine("삭제할 파일명에 들어가는 문자를 입력하세요") + End If + If Err = False Then + MsgBuff.AppendLine("작업폴더 : " & Pub.GetWorkDIr & " 에서") + MsgBuff.AppendLine("파일명에 [ " & Me.tb_deltext2.Text & " ] 가 들어있는 파일들을 삭제합니다") + MsgBuff.AppendLine("대상파일의 확장자구분은 [ " & IIf(Pub.GetExtendFromMdi = "*", "모든형식", Pub.GetExtendFromMdi) & " ] 이며 하위폴더는 " & IIf(Pub.GetSubDir, "[포함] 합니다", "[포함] 하지 않습니다")) + End If + + Else + MsgBuff.AppendLine("파일을 삭제할 방법이 선택되지 않았습니다") + End If + Else + + End If + + + Me.tb_deldesc.Text = MsgBuff.ToString + End Sub + + + Private Sub Frm_DeleteFile_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load + ' Me.desc_timer.Enabled = True + + End Sub + + Private Sub tb_deltext2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tb_deltext2.TextChanged + Me.RadioButton2.Checked = True + + End Sub + + + Private Sub tb_deldesc_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tb_deldesc.TextChanged + Me.ToolTip1.SetToolTip(sender, Me.tb_deldesc.Text) + End Sub + + Private Sub tb_deltext1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tb_deltext1.TextChanged + Me.RadioButton1.Checked = True + End Sub +End Class \ No newline at end of file diff --git a/DriveInfo/입력폼/Frm_FileInfo.Designer.vb b/DriveInfo/입력폼/Frm_FileInfo.Designer.vb new file mode 100644 index 0000000..95a5c3e --- /dev/null +++ b/DriveInfo/입력폼/Frm_FileInfo.Designer.vb @@ -0,0 +1,255 @@ + _ +Partial Public Class Frm_FileInfo + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + _ + Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Me.label10 = New System.Windows.Forms.Label + Me.driveRootDirectory = New System.Windows.Forms.TextBox + Me.label6 = New System.Windows.Forms.Label + Me.driveType = New System.Windows.Forms.TextBox + Me.driveFormat = New System.Windows.Forms.TextBox + Me.driveVolumeLabel = New System.Windows.Forms.TextBox + Me.driveName = New System.Windows.Forms.TextBox + Me.driveReadyStatus = New System.Windows.Forms.Label + Me.label5 = New System.Windows.Forms.Label + Me.label4 = New System.Windows.Forms.Label + Me.label3 = New System.Windows.Forms.Label + Me.label2 = New System.Windows.Forms.Label + Me.drivesOnPc = New System.Windows.Forms.ComboBox + Me.StatusStrip1 = New System.Windows.Forms.StatusStrip + Me.TabControl1 = New System.Windows.Forms.TabControl + Me.TabPage1 = New System.Windows.Forms.TabPage + Me.TabPage2 = New System.Windows.Forms.TabPage + Me.TabPage3 = New System.Windows.Forms.TabPage + Me.TabControl1.SuspendLayout() + Me.SuspendLayout() + ' + 'label10 + ' + Me.label10.AutoSize = True + Me.label10.Location = New System.Drawing.Point(62, 434) + Me.label10.Name = "label10" + Me.label10.Size = New System.Drawing.Size(87, 12) + Me.label10.TabIndex = 35 + Me.label10.Text = "Select a Drive:" + ' + 'driveRootDirectory + ' + Me.driveRootDirectory.Enabled = False + Me.driveRootDirectory.Location = New System.Drawing.Point(649, 434) + Me.driveRootDirectory.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) + Me.driveRootDirectory.Name = "driveRootDirectory" + Me.driveRootDirectory.Size = New System.Drawing.Size(135, 21) + Me.driveRootDirectory.TabIndex = 34 + ' + 'label6 + ' + Me.label6.AutoSize = True + Me.label6.Location = New System.Drawing.Point(539, 436) + Me.label6.Name = "label6" + Me.label6.Size = New System.Drawing.Size(88, 12) + Me.label6.TabIndex = 33 + Me.label6.Text = "Root Directory:" + ' + 'driveType + ' + Me.driveType.Enabled = False + Me.driveType.Location = New System.Drawing.Point(636, 468) + Me.driveType.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) + Me.driveType.Name = "driveType" + Me.driveType.Size = New System.Drawing.Size(94, 21) + Me.driveType.TabIndex = 32 + ' + 'driveFormat + ' + Me.driveFormat.Enabled = False + Me.driveFormat.Location = New System.Drawing.Point(411, 465) + Me.driveFormat.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) + Me.driveFormat.Name = "driveFormat" + Me.driveFormat.Size = New System.Drawing.Size(135, 21) + Me.driveFormat.TabIndex = 31 + ' + 'driveVolumeLabel + ' + Me.driveVolumeLabel.Enabled = False + Me.driveVolumeLabel.Location = New System.Drawing.Point(172, 465) + Me.driveVolumeLabel.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) + Me.driveVolumeLabel.Name = "driveVolumeLabel" + Me.driveVolumeLabel.Size = New System.Drawing.Size(135, 21) + Me.driveVolumeLabel.TabIndex = 30 + ' + 'driveName + ' + Me.driveName.Enabled = False + Me.driveName.Location = New System.Drawing.Point(386, 432) + Me.driveName.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) + Me.driveName.Name = "driveName" + Me.driveName.Size = New System.Drawing.Size(135, 21) + Me.driveName.TabIndex = 29 + ' + 'driveReadyStatus + ' + Me.driveReadyStatus.AutoSize = True + Me.driveReadyStatus.Location = New System.Drawing.Point(233, 434) + Me.driveReadyStatus.Name = "driveReadyStatus" + Me.driveReadyStatus.Size = New System.Drawing.Size(64, 12) + Me.driveReadyStatus.TabIndex = 28 + Me.driveReadyStatus.Text = "Not Ready" + ' + 'label5 + ' + Me.label5.AutoSize = True + Me.label5.Location = New System.Drawing.Point(332, 435) + Me.label5.Name = "label5" + Me.label5.Size = New System.Drawing.Size(43, 12) + Me.label5.TabIndex = 27 + Me.label5.Text = "Name:" + ' + 'label4 + ' + Me.label4.AutoSize = True + Me.label4.Location = New System.Drawing.Point(64, 468) + Me.label4.Name = "label4" + Me.label4.Size = New System.Drawing.Size(87, 12) + Me.label4.TabIndex = 26 + Me.label4.Text = "Volume Label:" + ' + 'label3 + ' + Me.label3.AutoSize = True + Me.label3.Location = New System.Drawing.Point(585, 471) + Me.label3.Name = "label3" + Me.label3.Size = New System.Drawing.Size(38, 12) + Me.label3.TabIndex = 25 + Me.label3.Text = "Type:" + ' + 'label2 + ' + Me.label2.AutoSize = True + Me.label2.Location = New System.Drawing.Point(316, 468) + Me.label2.Name = "label2" + Me.label2.Size = New System.Drawing.Size(76, 12) + Me.label2.TabIndex = 24 + Me.label2.Text = "File System:" + ' + 'drivesOnPc + ' + Me.drivesOnPc.FormattingEnabled = True + Me.drivesOnPc.Location = New System.Drawing.Point(172, 432) + Me.drivesOnPc.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) + Me.drivesOnPc.Name = "drivesOnPc" + Me.drivesOnPc.Size = New System.Drawing.Size(54, 20) + Me.drivesOnPc.TabIndex = 23 + ' + 'StatusStrip1 + ' + Me.StatusStrip1.Location = New System.Drawing.Point(0, 592) + Me.StatusStrip1.Name = "StatusStrip1" + Me.StatusStrip1.Size = New System.Drawing.Size(914, 22) + Me.StatusStrip1.TabIndex = 36 + Me.StatusStrip1.Text = "StatusStrip1" + ' + 'TabControl1 + ' + Me.TabControl1.Controls.Add(Me.TabPage1) + Me.TabControl1.Controls.Add(Me.TabPage2) + Me.TabControl1.Controls.Add(Me.TabPage3) + Me.TabControl1.Location = New System.Drawing.Point(0, 1) + Me.TabControl1.Name = "TabControl1" + Me.TabControl1.SelectedIndex = 0 + Me.TabControl1.Size = New System.Drawing.Size(914, 252) + Me.TabControl1.TabIndex = 37 + ' + 'TabPage1 + ' + Me.TabPage1.Location = New System.Drawing.Point(4, 22) + Me.TabPage1.Name = "TabPage1" + Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage1.Size = New System.Drawing.Size(906, 226) + Me.TabPage1.TabIndex = 0 + Me.TabPage1.Text = "ϸ" + Me.TabPage1.UseVisualStyleBackColor = True + ' + 'TabPage2 + ' + Me.TabPage2.Location = New System.Drawing.Point(4, 22) + Me.TabPage2.Name = "TabPage2" + Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) + Me.TabPage2.Size = New System.Drawing.Size(906, 74) + Me.TabPage2.TabIndex = 1 + Me.TabPage2.Text = "ϸ" + Me.TabPage2.UseVisualStyleBackColor = True + ' + 'TabPage3 + ' + Me.TabPage3.Location = New System.Drawing.Point(4, 22) + Me.TabPage3.Name = "TabPage3" + Me.TabPage3.Size = New System.Drawing.Size(906, 74) + Me.TabPage3.TabIndex = 2 + Me.TabPage3.Text = "ϻ" + Me.TabPage3.UseVisualStyleBackColor = True + ' + 'Form1 + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(914, 614) + Me.Controls.Add(Me.TabControl1) + Me.Controls.Add(Me.StatusStrip1) + Me.Controls.Add(Me.label10) + Me.Controls.Add(Me.driveRootDirectory) + Me.Controls.Add(Me.label6) + Me.Controls.Add(Me.driveType) + Me.Controls.Add(Me.driveFormat) + Me.Controls.Add(Me.driveVolumeLabel) + Me.Controls.Add(Me.driveName) + Me.Controls.Add(Me.driveReadyStatus) + Me.Controls.Add(Me.label5) + Me.Controls.Add(Me.label4) + Me.Controls.Add(Me.label3) + Me.Controls.Add(Me.label2) + Me.Controls.Add(Me.drivesOnPc) + Me.Name = "Form1" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "DriveInfo Sample" + Me.TabControl1.ResumeLayout(False) + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents label10 As System.Windows.Forms.Label + Friend WithEvents driveRootDirectory As System.Windows.Forms.TextBox + Friend WithEvents label6 As System.Windows.Forms.Label + Friend WithEvents driveType As System.Windows.Forms.TextBox + Friend WithEvents driveFormat As System.Windows.Forms.TextBox + Friend WithEvents driveVolumeLabel As System.Windows.Forms.TextBox + Friend WithEvents driveName As System.Windows.Forms.TextBox + Friend WithEvents driveReadyStatus As System.Windows.Forms.Label + Friend WithEvents label5 As System.Windows.Forms.Label + Friend WithEvents label4 As System.Windows.Forms.Label + Friend WithEvents label3 As System.Windows.Forms.Label + Friend WithEvents label2 As System.Windows.Forms.Label + Friend WithEvents drivesOnPc As System.Windows.Forms.ComboBox + Friend WithEvents StatusStrip1 As System.Windows.Forms.StatusStrip + Friend WithEvents TabControl1 As System.Windows.Forms.TabControl + Friend WithEvents TabPage1 As System.Windows.Forms.TabPage + Friend WithEvents TabPage2 As System.Windows.Forms.TabPage + Friend WithEvents TabPage3 As System.Windows.Forms.TabPage + +End Class diff --git a/DriveInfo/입력폼/Frm_FileInfo.resx b/DriveInfo/입력폼/Frm_FileInfo.resx new file mode 100644 index 0000000..faac01d --- /dev/null +++ b/DriveInfo/입력폼/Frm_FileInfo.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/DriveInfo/입력폼/Frm_FileInfo.vb b/DriveInfo/입력폼/Frm_FileInfo.vb new file mode 100644 index 0000000..7a64f18 --- /dev/null +++ b/DriveInfo/입력폼/Frm_FileInfo.vb @@ -0,0 +1,131 @@ +Imports System.IO + +Public Class Frm_FileInfo + + Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + Me.driveReadyStatus.Text = "" + + 'Get a DriveInfo object for each drive on the system + Dim drives As System.IO.DriveInfo() = System.IO.DriveInfo.GetDrives + + 'Populate the drives combo box with all drives + drivesOnPc.Items.AddRange(drives) + End Sub + + Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint + + ' Rectangle to define size of Pie Chart + Dim rect As Rectangle = New Rectangle(370, 20, 200, 200) + + ' Rectangle to use as a border around Pie Chart + Dim rect2 As Rectangle = New Rectangle(310, 10, 320, 320) + + ' Rectangles for color legend + Dim freeLegend As Rectangle = New Rectangle(315, 275, 20, 20) + Dim usedLegend As Rectangle = New Rectangle(315, 300, 20, 20) + + e.Graphics.DrawRectangle(Pens.Black, rect2) + + If isSpaceInfoAvailable = True Then + + ' Draw Pie Chart + e.Graphics.FillPie(Brushes.Green, rect, 0, sweep) + e.Graphics.FillPie(Brushes.Red, rect, sweep, 360 - sweep) + + ' Draw Legend + e.Graphics.FillRectangle(Brushes.Green, freeLegend) + e.Graphics.FillRectangle(Brushes.Red, usedLegend) + + ' Add text + e.Graphics.DrawString("Capacity:", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(350, 230)) + e.Graphics.DrawString("Used Space:", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(335, 275)) + e.Graphics.DrawString("Free Space:", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(335, 300)) + e.Graphics.DrawString(totalSpace.ToString("N") + " bytes", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(420, 230)) + e.Graphics.DrawString(usedSpace.ToString("N") + " bytes", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(420, 275)) + e.Graphics.DrawString(freeSpace.ToString("N") + " bytes", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(420, 300)) + End If + End Sub + + Private Sub drivesOnPc_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles drivesOnPc.SelectedIndexChanged + + ' Determine drive info for selected drive letter + LoadDriveInfo(drivesOnPc.Items(drivesOnPc.SelectedIndex).ToString) + + ' Redraw the pie chart + Me.Invalidate() + + End Sub + + Private Sub LoadDriveInfo(ByVal driveLetter As String) + + ' Use the DriveInfo class to obtain information on drives. + ' Drive name must be either an upper or lower case letter from 'a' to 'z'. + ' You can not use this method to obtain information on drive names that are null or use UNC (\\server\share) paths. + + Dim driveInfo As System.IO.DriveInfo + + ' Check for valid drive names + Try + driveInfo = New System.IO.DriveInfo(driveLetter) + Catch ex1 As ArgumentNullException + MessageBox.Show("The drive letter can not be null./n/r" + ex1.Message, "Drive Letter error", MessageBoxButtons.OK, MessageBoxIcon.Error) + Return + Catch ex2 As ArgumentException + MessageBox.Show("The drive letter must be in the range of a-z./n/r" + ex2.Message, "Drive Letter error", MessageBoxButtons.OK, MessageBoxIcon.Error) + Return + End Try + + Me.driveName.Text = driveInfo.Name + + ' Some drives do not provide all of the info + ' have to trap for exceptions and just move on to the next drive + Try + If driveInfo.VolumeLabel.Length > 0 Then + Me.driveVolumeLabel.Text = driveInfo.VolumeLabel + Else + Me.driveVolumeLabel.Text = "None" + End If + Me.driveFormat.Text = driveInfo.DriveFormat + totalSpace = driveInfo.TotalSize + freeSpace = driveInfo.TotalFreeSpace + usedSpace = totalSpace - freeSpace + sweep = 360.0F * freeSpace / totalSpace + isSpaceInfoAvailable = True + Catch + Me.driveVolumeLabel.Text = "Not available" + Me.driveFormat.Text = "Not available" + isSpaceInfoAvailable = False + End Try + + Me.driveType.Text = driveInfo.DriveType.ToString + + Me.driveRootDirectory.Text = driveInfo.RootDirectory.ToString + dirInfo = driveInfo.RootDirectory + + If driveInfo.IsReady = True Then + Me.driveReadyStatus.Text = "Drive is Ready" + Else + Me.driveReadyStatus.Text = "Drive is NOT Ready" + End If + + End Sub + + Private Function ConvertBytesToMB(ByVal bytes As Int64) As String + Dim mb As Long = bytes / 1048576 + Return mb.ToString("N") + End Function + + Private Function ConvertBytesToGB(ByVal bytes As Int64) As String + Dim gb As Long = bytes / 1073741824 + Return gb.ToString("N") + End Function + + + Private dirInfo As DirectoryInfo + Private totalSpace As Long + Private freeSpace As Long + Private usedSpace As Long + Private sweep As Single + Private isSpaceInfoAvailable As Boolean + +End Class \ No newline at end of file diff --git a/DriveInfo/입력폼/Frm_RenameFile.Designer.vb b/DriveInfo/입력폼/Frm_RenameFile.Designer.vb new file mode 100644 index 0000000..b23c944 --- /dev/null +++ b/DriveInfo/입력폼/Frm_RenameFile.Designer.vb @@ -0,0 +1,29 @@ + _ +Partial Class Frm_RenameFile + Inherits System.Windows.Forms.Form + + 'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. + _ + 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 + + 'Windows Form 디자이너에 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. + '수정하려면 Windows Form 디자이너를 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + components = New System.ComponentModel.Container + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.Text = "Frm_RenameFile" + End Sub +End Class diff --git a/DriveInfo/입력폼/Frm_RenameFile.vb b/DriveInfo/입력폼/Frm_RenameFile.vb new file mode 100644 index 0000000..d770c84 --- /dev/null +++ b/DriveInfo/입력폼/Frm_RenameFile.vb @@ -0,0 +1,3 @@ +Public Class Frm_RenameFile + +End Class \ No newline at end of file diff --git a/DriveInfo/컨트롤/ImpCtl.Designer.vb b/DriveInfo/컨트롤/ImpCtl.Designer.vb new file mode 100644 index 0000000..6e447ee --- /dev/null +++ b/DriveInfo/컨트롤/ImpCtl.Designer.vb @@ -0,0 +1,127 @@ + _ +Partial Class impctl + Inherits System.Windows.Forms.UserControl + + 'UserControl은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. + _ + 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 + + 'Windows Form 디자이너에 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. + '수정하려면 Windows Form 디자이너를 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container + Me.TextBox3 = New System.Windows.Forms.TextBox + Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components) + Me.TextBox2 = New System.Windows.Forms.TextBox + Me.Label1 = New System.Windows.Forms.Label + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel + Me.ComboBox1 = New System.Windows.Forms.ComboBox + Me.TableLayoutPanel1.SuspendLayout() + Me.SuspendLayout() + ' + 'TextBox3 + ' + Me.TextBox3.BackColor = System.Drawing.Color.LightSlateGray + Me.TextBox3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.TextBox3.Dock = System.Windows.Forms.DockStyle.Fill + Me.TextBox3.Location = New System.Drawing.Point(0, 111) + Me.TextBox3.Margin = New System.Windows.Forms.Padding(0) + Me.TextBox3.Name = "TextBox3" + Me.TextBox3.Size = New System.Drawing.Size(74, 21) + Me.TextBox3.TabIndex = 17 + Me.TextBox3.TabStop = False + Me.TextBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'TextBox2 + ' + Me.TextBox2.BackColor = System.Drawing.Color.LightSlateGray + Me.TextBox2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.TextBox2.Dock = System.Windows.Forms.DockStyle.Fill + Me.TextBox2.Location = New System.Drawing.Point(0, 89) + Me.TextBox2.Margin = New System.Windows.Forms.Padding(0) + Me.TextBox2.Name = "TextBox2" + Me.TextBox2.Size = New System.Drawing.Size(74, 21) + Me.TextBox2.TabIndex = 15 + Me.TextBox2.TabStop = False + Me.TextBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'Label1 + ' + Me.Label1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.Label1.BackColor = System.Drawing.Color.White + Me.Label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.Label1.Font = New System.Drawing.Font("맑은 고딕", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.Label1.Location = New System.Drawing.Point(0, 0) + Me.Label1.Margin = New System.Windows.Forms.Padding(0) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(74, 67) + Me.Label1.TabIndex = 14 + Me.Label1.Text = "제목줄" + Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.ColumnCount = 1 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.Controls.Add(Me.Label1, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.TextBox3, 0, 3) + Me.TableLayoutPanel1.Controls.Add(Me.TextBox2, 0, 2) + Me.TableLayoutPanel1.Controls.Add(Me.ComboBox1, 0, 1) + Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill + Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(0) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 4 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22.0!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22.0!)) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(74, 133) + Me.TableLayoutPanel1.TabIndex = 18 + ' + 'ComboBox1 + ' + Me.ComboBox1.Dock = System.Windows.Forms.DockStyle.Fill + Me.ComboBox1.FormattingEnabled = True + Me.ComboBox1.Items.AddRange(New Object() {"#열번호", "?", "*", "파일명", "확장자"}) + Me.ComboBox1.Location = New System.Drawing.Point(0, 67) + Me.ComboBox1.Margin = New System.Windows.Forms.Padding(0) + Me.ComboBox1.Name = "ComboBox1" + Me.ComboBox1.Size = New System.Drawing.Size(74, 20) + Me.ComboBox1.TabIndex = 18 + ' + 'impctl + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.Controls.Add(Me.TableLayoutPanel1) + Me.Name = "impctl" + Me.Size = New System.Drawing.Size(74, 133) + Me.TableLayoutPanel1.ResumeLayout(False) + Me.TableLayoutPanel1.PerformLayout() + Me.ResumeLayout(False) + + End Sub + Friend WithEvents TextBox3 As System.Windows.Forms.TextBox + Friend WithEvents ToolTip1 As System.Windows.Forms.ToolTip + Friend WithEvents TextBox2 As System.Windows.Forms.TextBox + Friend WithEvents Label1 As System.Windows.Forms.Label + Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel + Friend WithEvents ComboBox1 As System.Windows.Forms.ComboBox + +End Class diff --git a/DriveInfo/컨트롤/ImpCtl.resx b/DriveInfo/컨트롤/ImpCtl.resx new file mode 100644 index 0000000..13795a7 --- /dev/null +++ b/DriveInfo/컨트롤/ImpCtl.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/DriveInfo/컨트롤/ImpCtl.vb b/DriveInfo/컨트롤/ImpCtl.vb new file mode 100644 index 0000000..89fe025 --- /dev/null +++ b/DriveInfo/컨트롤/ImpCtl.vb @@ -0,0 +1,240 @@ +Public Class impctl + Dim v필드명 As String + 'Dim v_nullvaluevisible As Boolean = True + + Public Event TimeExpired(ByVal sender As Object, ByVal Status As String) + ''' + ''' 사용여부 + ''' + ''' + ''' + ''' + Overloads Property enabled() As Boolean + Get + Return Me.ComboBox1.Enabled + End Get + Set(ByVal value As Boolean) + Me.ComboBox1.Enabled = value + Me.Label1.Enabled = value + End Set + End Property + + ''' + ''' 데이터가 표시된 포맷을 입력 + ''' + ''' + ''' + ''' + Public Property 포맷마스크() As String + Get + Return Me.TextBox3.Text + End Get + Set(ByVal value As String) + Me.TextBox3.Text = value + End Set + End Property + + ''' + ''' 연결할 필드명입니다. + ''' + ''' + ''' + ''' + Public Property 필드명() As String + Get + Return v필드명 + End Get + Set(ByVal value As String) + v필드명 = value + End Set + End Property + Public Property 제목() As String + Get + Return Me.Label1.Text + End Get + Set(ByVal value As String) + Me.Label1.Text = value.Replace("/", vbCrLf) + End Set + End Property + Public Property 문자열자르기() As String + Get + Return Me.TextBox2.Text + End Get + Set(ByVal value As String) + Me.TextBox2.Text = value + End Set + End Property + Public Property 열번호() As String + Get + Return Me.ComboBox1.Text + End Get + Set(ByVal value As String) + Me.ComboBox1.Text = value + End Set + End Property + + + Public Function getValue(ByVal Spread As FarPoint.Win.Spread.FpSpread, ByVal RowPos As Integer, Optional ByVal OrgFn As String = "원본파일명", Optional ByVal OrgExt As String = "원본확장자") As String + Dim SUbidx As Integer + Dim VALSTR As String + Dim 파일명 As String + + If Me.열번호 = "" Then '//즉 없다는뜻이다. + Return "" + Else '//있다. + '//원본파일명과 원본확장가 이 두가지를 처리해야한다. + + If Me.열번호.Length = 1 Then Return Me.열번호 '//길이 1개짜리는 뭔지모르겟지만 걍 반환 + If Me.열번호.Substring(0, 1) = "#" AndAlso IsNumeric(Me.열번호.Substring(1)) = False Then Return Me.열번호 '//#인데 그 다음이 숫자가 아닐경우는 바로 리턴 + + + If Me.열번호 = "파일명" Then + VALSTR = OrgFn + ElseIf Me.열번호 = "확장자" Then + VALSTR = OrgExt + ElseIf Me.열번호.Substring(0, 1) <> "#" Then '//열번호도 아니고 원본내용도아니라면 그냥 리턴 + Return Me.열번호 + Else '//이건 열번호를 지정한 경우에해당한다. + If RowPos > Spread.ActiveSheet.RowCount Then Return "[Err:줄초과]" '//줄번호가 전체 줄번호를 초과할경우 + SUbidx = Me.열번호.Substring(1) '//#을 제외한 컬럼번호만을 가져온다. + If SUbidx > Spread.ActiveSheet.ColumnCount Then Return "[Err:열초과]" '//지정된 컬럼번호가 전체 컬럼수를 초과할경우 + VALSTR = Spread.ActiveSheet.Cells(RowPos - 1, CInt(SUbidx - 1)).Text + If VALSTR.Trim = "" Then Return "" '//가져온문자가없으면 리턴 + End If + + 파일명 = VALSTR + '//이걸로 파일명은 추출했따 이제 자르기만 수행하면된다. + + If Me.문자열자르기 = "" OrElse Me.문자열자르기 = "0,0" Then '//문자열자르기확인 없다 그대로 리턴 + Return VALSTR + Else '//문자열자르기가 있으면 잘라서 보내준다. + Dim DIV(1) As String + If Me.문자열자르기.IndexOf(",") = -1 Then + DIV(0) = Me.문자열자르기 + DIV(1) = "0" + Else + DIV = Me.문자열자르기.Split(",") + End If + + If DIV(1) = "0" Then '//시작부터 끝까지 + Try + If 파일명.Length < DIV(0) Then + VALSTR = "" + Else + VALSTR = 파일명.Substring(DIV(0) - 1) + End If + Catch ex As Exception + VALSTR = 파일명 + End Try + Return VALSTR + + Else '/지정범위 + Try + VALSTR = 파일명.Substring(DIV(0) - 1, DIV(1)) + Catch ex As Exception + VALSTR = 파일명 + End Try + Return VALSTR + End If + End If + End If + + + + End Function + + + Public Sub New() + + ' 이 호출은 Windows Form 디자이너에 필요합니다. + InitializeComponent() + + ' AddHandler TextBox1.TextChanged, ADDRESS OF + 'AddHandler TextBox1.TextChanged, AddressOf ControlChanged + ' AddHandler Me.DoubleClick, Me.TextBox1.DoubleClick + 'AddHandler Me.TimeExpired, AddressOf timeExp + + + + End Sub + Private Sub timeExp(ByVal sender As Object, ByVal stri As String) + 'MsgBox(stri) + + End Sub + Private Sub ControlChanged(ByVal sender As Object, ByVal e As System.EventArgs) + Dim A As TextBox = CType(sender, TextBox) + If A.Text.Length <= 0 Then Exit Sub + + Select Case A.Text.Substring(0, 1) + Case ":" + If IsNumeric(A.Text.Substring(1)) Then + A.BackColor = Color.LawnGreen + Else + A.BackColor = Color.Tomato + End If + Case "?" + A.BackColor = Color.Gray + Case "#" + A.BackColor = Color.SteelBlue + Case Else + A.BackColor = Color.White + End Select + + End Sub + + Private Sub UserControl1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DoubleClick + RaiseEvent TimeExpired(Me, "sdf") + End Sub + + Private Sub TextBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) + + RaiseEvent TimeExpired(Me, "sdf") + End Sub + + + Private Sub TextBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Enter + Me.ComboBox1.SelectAll() + End Sub + + + Private Sub TextBox2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.Enter + Me.TextBox2.SelectAll() + End Sub + + Private Sub TextBox2_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.GotFocus + Me.TextBox2.SelectAll() + ' SendKeys.Send("{TAB}") + End Sub + + + Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.GotFocus + Me.ComboBox1.SelectAll() + End Sub + + Private Sub ComboBox1_STextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged + '이 컨트롤은 파일관리자용으로 특화된 컨트롤이다. + '기본적인 입력은 해당 문자열이다 + '#숫자 는 연결시킬 열번호이다. (이것은 푸른색으로한다) + + Dim A As ComboBox = CType(sender, ComboBox) + If A.Text.Length <= 0 Then Exit Sub '//입력된 길이가 없다면 리턴 + + + + Select Case A.Text.Substring(0, 1) '//앞자리문자로 구분한다. + Case "#" + If Not IsNumeric(A.Text.Substring(1)) Then + A.BackColor = Color.Tomato + Else + A.BackColor = Color.SteelBlue + End If + + Case Else + A.BackColor = Color.White + End Select + End Sub + + Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged + + End Sub +End Class diff --git a/FTP_Client/Client_0.cs b/FTP_Client/Client_0.cs new file mode 100644 index 0000000..50fd1c1 --- /dev/null +++ b/FTP_Client/Client_0.cs @@ -0,0 +1,405 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Net; +using System.IO; + +namespace FTPClients +{ + public class Client_0 + { + public string host = null; + public string user = null; + public string pass = null; + private FtpWebRequest ftpRequest = null; + private FtpWebResponse ftpResponse = null; + private Stream ftpStream = null; + private int bufferSize = 2048; + public Boolean Passive = false; + public Boolean utf8 = false; + + ////프로브센서의 제목이 클릭됨 + //public event MessageHandler Message; + public delegate void MessageHandler(int idx); + + /* Construct Object */ + public Client_0(string hostIP, string userName, string password, Boolean _passive) { host = hostIP; user = userName; pass = password; Passive = _passive; } + + /* Download File */ + public void download(string remoteFile, string localFile) + { + try + { + /* Create an FTP Request */ + String url = host + "/" + remoteFile; + url = url.Replace("//", "/"); + ftpRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://" + url); + /* Log in to the FTP Server with the User Name and Password Provided */ + ftpRequest.Credentials = new NetworkCredential(user, pass); + /* When in doubt, use these options */ + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = Passive; + ftpRequest.KeepAlive = true; + /* Specify the Type of FTP Request */ + ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; + /* Establish Return Communication with the FTP Server */ + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + /* Get the FTP Server's Response Stream */ + ftpStream = ftpResponse.GetResponseStream(); + /* Open a File Stream to Write the Downloaded File */ + FileStream localFileStream = new FileStream(localFile, FileMode.Create); + /* Buffer for the Downloaded Data */ + byte[] byteBuffer = new byte[bufferSize]; + int bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize); + /* Download the File by Writing the Buffered Data Until the Transfer is Complete */ + try + { + while (bytesRead > 0) + { + localFileStream.Write(byteBuffer, 0, bytesRead); + bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize); + } + } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + /* Resource Cleanup */ + localFileStream.Close(); + ftpStream.Close(); + ftpResponse.Close(); + ftpRequest = null; + } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + return; + } + + /* Upload File */ + public Boolean upload(string remoteFile, string localFile) + { + try + { + /* Create an FTP Request */ + String url = host + "/" + remoteFile; + url = url.Replace("//", "/"); + ftpRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://" + url); + /* Log in to the FTP Server with the User Name and Password Provided */ + ftpRequest.Credentials = new NetworkCredential(user, pass); + /* When in doubt, use these options */ + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = Passive; + ftpRequest.KeepAlive = true; + /* Specify the Type of FTP Request */ + ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; + /* Establish Return Communication with the FTP Server */ + ftpStream = ftpRequest.GetRequestStream(); + /* Open a File Stream to Read the File for Upload */ + FileStream localFileStream = new FileStream(localFile, FileMode.Open); + /* Buffer for the Downloaded Data */ + byte[] byteBuffer = new byte[bufferSize]; + int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); + /* Upload the File by Sending the Buffered Data Until the Transfer is Complete */ + + Boolean onerr = false; + try + { + while (bytesSent != 0) + { + ftpStream.Write(byteBuffer, 0, bytesSent); + bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); + } + onerr = true; + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + onerr = false; + } + /* Resource Cleanup */ + localFileStream.Close(); + ftpStream.Close(); + ftpRequest = null; + return onerr; + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + return false; + } + } + + /* Delete File */ + public void delete(string deleteFile) + { + try + { + /* Create an FTP Request */ + String url = host + "/" + deleteFile; + url = url.Replace("//", "/"); + ftpRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://" + url); + /* Log in to the FTP Server with the User Name and Password Provided */ + ftpRequest.Credentials = new NetworkCredential(user, pass); + /* When in doubt, use these options */ + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = Passive; + ftpRequest.KeepAlive = true; + /* Specify the Type of FTP Request */ + ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile; + /* Establish Return Communication with the FTP Server */ + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + /* Resource Cleanup */ + ftpResponse.Close(); + ftpRequest = null; + } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + return; + } + + /* Rename File */ + public void rename(string currentFileNameAndPath, string newFileName) + { + try + { + /* Create an FTP Request */ + String url = host + "/" + currentFileNameAndPath; + url = url.Replace("//", "/"); + ftpRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://" + url); + /* Log in to the FTP Server with the User Name and Password Provided */ + ftpRequest.Credentials = new NetworkCredential(user, pass); + /* When in doubt, use these options */ + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = Passive; + ftpRequest.KeepAlive = true; + /* Specify the Type of FTP Request */ + ftpRequest.Method = WebRequestMethods.Ftp.Rename; + /* Rename the File */ + ftpRequest.RenameTo = newFileName; + /* Establish Return Communication with the FTP Server */ + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + /* Resource Cleanup */ + ftpResponse.Close(); + ftpRequest = null; + } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + return; + } + + /* Create a New Directory on the FTP Server */ + public void createDirectory(string newDirectory) + { + try + { + /* Create an FTP Request */ + String url = host + "/" + newDirectory; + url = url.Replace("//", "/"); + ftpRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://" + url); + /* Log in to the FTP Server with the User Name and Password Provided */ + ftpRequest.Credentials = new NetworkCredential(user, pass); + /* When in doubt, use these options */ + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = Passive; + ftpRequest.KeepAlive = true; + /* Specify the Type of FTP Request */ + ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory; + /* Establish Return Communication with the FTP Server */ + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + /* Resource Cleanup */ + ftpResponse.Close(); + ftpRequest = null; + } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + return; + } + + /* Get the Date/Time a File was Created */ + public string getFileCreatedDateTime(string fileName) + { + try + { + /* Create an FTP Request */ + String url = host + "/" + fileName; + url = url.Replace("//", "/"); + ftpRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://" + url); + /* Log in to the FTP Server with the User Name and Password Provided */ + ftpRequest.Credentials = new NetworkCredential(user, pass); + /* When in doubt, use these options */ + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = Passive; + ftpRequest.KeepAlive = true; + /* Specify the Type of FTP Request */ + ftpRequest.Method = WebRequestMethods.Ftp.GetDateTimestamp; + /* Establish Return Communication with the FTP Server */ + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + /* Establish Return Communication with the FTP Server */ + ftpStream = ftpResponse.GetResponseStream(); + /* Get the FTP Server's Response Stream */ + StreamReader ftpReader = new StreamReader(ftpStream); + /* Store the Raw Response */ + string fileInfo = null; + /* Read the Full Response Stream */ + try { fileInfo = ftpReader.ReadToEnd(); } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + /* Resource Cleanup */ + ftpReader.Close(); + ftpStream.Close(); + ftpResponse.Close(); + ftpRequest = null; + /* Return File Created Date Time */ + return fileInfo; + } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + /* Return an Empty string Array if an Exception Occurs */ + return ""; + } + + /* Get the Size of a File */ + public string getFileSize(string fileName) + { + try + { + /* Create an FTP Request */ + String url = host + "/" + fileName; + url = url.Replace("//", "/"); + ftpRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://" + url); + /* Log in to the FTP Server with the User Name and Password Provided */ + ftpRequest.Credentials = new NetworkCredential(user, pass); + /* When in doubt, use these options */ + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = Passive; + ftpRequest.KeepAlive = true; + /* Specify the Type of FTP Request */ + ftpRequest.Method = WebRequestMethods.Ftp.GetFileSize; + /* Establish Return Communication with the FTP Server */ + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + /* Establish Return Communication with the FTP Server */ + ftpStream = ftpResponse.GetResponseStream(); + /* Get the FTP Server's Response Stream */ + StreamReader ftpReader = new StreamReader(ftpStream); + /* Store the Raw Response */ + string fileInfo = null; + /* Read the Full Response Stream */ + try { while (ftpReader.Peek() != -1) { fileInfo = ftpReader.ReadToEnd(); } } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + /* Resource Cleanup */ + ftpReader.Close(); + ftpStream.Close(); + ftpResponse.Close(); + ftpRequest = null; + /* Return File Size */ + return fileInfo; + } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + /* Return an Empty string Array if an Exception Occurs */ + return ""; + } + + /* List Directory Contents File/Folder Name Only */ + public string[] directoryListSimple(string directory) + { + try + { + /* Create an FTP Request */ + String url = host + "/" + directory; + url = url.Replace("//", "/"); + ftpRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://" + url); + /* Log in to the FTP Server with the User Name and Password Provided */ + ftpRequest.Credentials = new NetworkCredential(user, pass); + /* When in doubt, use these options */ + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = Passive; + ftpRequest.KeepAlive = true; + /* Specify the Type of FTP Request */ + ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory; + /* Establish Return Communication with the FTP Server */ + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + /* Establish Return Communication with the FTP Server */ + ftpStream = ftpResponse.GetResponseStream(); + /* Get the FTP Server's Response Stream */ + StreamReader ftpReader = new StreamReader(ftpStream); + /* Store the Raw Response */ + string directoryRaw = null; + /* Read Each Line of the Response and Append a Pipe to Each Line for Easy Parsing */ + try { while (ftpReader.Peek() != -1) { directoryRaw += ftpReader.ReadLine() + "|"; } } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + /* Resource Cleanup */ + ftpReader.Close(); + ftpStream.Close(); + ftpResponse.Close(); + ftpRequest = null; + /* Return the Directory Listing as a string Array by Parsing 'directoryRaw' with the Delimiter you Append (I use | in This Example) */ + + if (utf8) + { + directoryRaw = System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Default.GetBytes(directoryRaw)); + } + + try { string[] directoryList = directoryRaw.Split("|".ToCharArray()); return directoryList; } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + /* Return an Empty string Array if an Exception Occurs */ + return new string[] { "" }; + } + + /* List Directory Contents in Detail (Name, Size, Created, etc.) */ + public string[] directoryListDetailed(string directory,out Boolean isErr,out string ErrMsg) + { + isErr = false; + ErrMsg = ""; + try + { + /* Create an FTP Request */ + String url = host + "/" + directory; + url = url.Replace("//", "/"); + ftpRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://" + url); + /* Log in to the FTP Server with the User Name and Password Provided */ + ftpRequest.Credentials = new NetworkCredential(user, pass); + /* When in doubt, use these options */ + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = Passive; + ftpRequest.KeepAlive = false; + /* Specify the Type of FTP Request */ + ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails; + /* Establish Return Communication with the FTP Server */ + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + /* Establish Return Communication with the FTP Server */ + ftpStream = ftpResponse.GetResponseStream(); + /* Get the FTP Server's Response Stream */ + StreamReader ftpReader;// = new StreamReader(ftpStream,System.Text.Encoding.Default); + + if (utf8) + { + ftpReader = new StreamReader(ftpStream, System.Text.Encoding.UTF8); + } + else + { + ftpReader = new StreamReader(ftpStream, System.Text.Encoding.Default); + } + + /* Store the Raw Response */ + string directoryRaw = null; + /* Read Each Line of the Response and Append a Pipe to Each Line for Easy Parsing */ + try { while (ftpReader.Peek() != -1) { directoryRaw += ftpReader.ReadLine() + "|"; } } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + /* Resource Cleanup */ + ftpReader.Close(); + ftpStream.Close(); + ftpResponse.Close(); + ftpRequest = null; + /* Return the Directory Listing as a string Array by Parsing 'directoryRaw' with the Delimiter you Append (I use | in This Example) */ + //if (utf8) + //{ + // directoryRaw = System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Default.GetBytes(directoryRaw)); + //} + try { string[] directoryList = directoryRaw.Split("|".ToCharArray()); return directoryList; } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + } + catch (Exception ex) + { + isErr = true; + ErrMsg = ex.Message; + Console.WriteLine(ex.ToString()); + } + /* Return an Empty string Array if an Exception Occurs */ + + return new string[] { "" }; + } + } +} diff --git a/FTP_Client/Client_1.cs b/FTP_Client/Client_1.cs new file mode 100644 index 0000000..36b5a05 --- /dev/null +++ b/FTP_Client/Client_1.cs @@ -0,0 +1,1047 @@ +using System; +using System.Net; +using System.IO; +using System.Text; +using System.Net.Sockets; +using System.Diagnostics; +using System.Runtime.Remoting; +using System.Runtime.Remoting.Messaging; + +namespace FTPClients +{ + public class Client_1 + { + + public class FtpException : Exception + { + public FtpException(string message) : base(message) { } + public FtpException(string message, Exception innerException) : base(message, innerException) { } + } + + + + ////프로브센서의 제목이 클릭됨 + //public event MessageHandler Message; + public delegate void MessageHandler(int idx); + + private static int BUFFER_SIZE = 512; + private static Encoding ASCII = Encoding.ASCII; + + private bool verboseDebugging = false; + + public Boolean utf8 { get; set; } + public Boolean Passive { get; set; } + + // defaults + private string _server = "localhost"; + private string remotePath = "."; + private string _username = "anonymous"; + private string _password = "anonymous@anonymous.net"; + private string message = null; + private string result = null; + + private int port = 21; + private int bytes = 0; + private int resultCode = 0; + + private bool loggedin = false; + private bool binMode = false; + + private Byte[] buffer = new Byte[BUFFER_SIZE]; + private Socket clientSocket = null; + + private int timeoutSeconds = 10; + + /// + /// Default contructor + /// + public Client_1() + { + utf8 = false; + } + /// + /// + /// + /// + /// + /// + public Client_1(string server, string username, string password) + { + this._server = server; + this._username = username; + this._password = password; + utf8 = false; + } + /// + /// + /// + /// + /// + /// + /// + /// + public Client_1(string server, string username, string password, int timeoutSeconds, int port) + { + this._server = server; + this._username = username; + this._password = password; + this.timeoutSeconds = timeoutSeconds; + this.port = port; + utf8 = false; + } + + /// + /// Display all communications to the debug log + /// + public bool VerboseDebugging + { + get + { + return this.verboseDebugging; + } + set + { + this.verboseDebugging = value; + } + } + /// + /// Remote server port. Typically TCP 21 + /// + public int Port + { + get + { + return this.port; + } + set + { + this.port = value; + } + } + /// + /// Timeout waiting for a response from server, in seconds. + /// + public int Timeout + { + get + { + return this.timeoutSeconds; + } + set + { + this.timeoutSeconds = value; + } + } + /// + /// Gets and Sets the name of the FTP server. + /// + /// + public string host + { + get + { + return this._server; + } + set + { + this._server = value; + } + } + /// + /// Gets and Sets the port number. + /// + /// + public int RemotePort + { + get + { + return this.port; + } + set + { + this.port = value; + } + } + /// + /// GetS and Sets the remote directory. + /// + public string RemotePath + { + get + { + return this.remotePath; + } + set + { + this.remotePath = value; + } + + } + /// + /// Gets and Sets the username. + /// + public string user + { + get + { + return this._username; + } + set + { + this._username = value; + } + } + /// + /// Gets and Set the password. + /// + public string pass + { + get + { + return this._password; + } + set + { + this._password = value; + } + } + + /// + /// If the value of mode is true, set binary mode for downloads, else, Ascii mode. + /// + public bool BinaryMode + { + get + { + return this.binMode; + } + set + { + if (this.binMode == value) return; + + if (value) + sendCommand("TYPE I"); + + else + sendCommand("TYPE A"); + + if (this.resultCode != 200) throw new FtpException(result.Substring(4)); + } + } + /// + /// Login to the remote server. + /// + public void Login() + { + if (this.loggedin) this.Close(); + + Debug.WriteLine("Opening connection to " + this._server, "FtpClient"); + + IPAddress addr = null; + IPEndPoint ep = null; + + try + { + this.clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + addr = Dns.Resolve(this._server).AddressList[0]; + ep = new IPEndPoint(addr, this.port); + this.clientSocket.Connect(ep); + } + catch (Exception ex) + { + // doubtfull + if (this.clientSocket != null && this.clientSocket.Connected) this.clientSocket.Close(); + + throw new FtpException("Couldn't connect to remote server", ex); + } + + this.readResponse(); + + if (this.resultCode != 220) + { + this.Close(); + throw new FtpException(this.result.Substring(4)); + } + + this.sendCommand("USER " + _username); + + if (!(this.resultCode == 331 || this.resultCode == 230)) + { + this.cleanup(); + throw new FtpException(this.result.Substring(4)); + } + + if (this.resultCode != 230) + { + this.sendCommand("PASS " + _password); + + if (!(this.resultCode == 230 || this.resultCode == 202)) + { + this.cleanup(); + throw new FtpException(this.result.Substring(4)); + } + } + + this.loggedin = true; + + Debug.WriteLine("Connected to " + this._server, "FtpClient"); + + this.ChangeDir(this.remotePath); + } + + /// + /// Close the FTP connection. + /// + public void Close() + { + Debug.WriteLine("Closing connection to " + this._server, "FtpClient"); + + if (this.clientSocket != null) + { + this.sendCommand("QUIT"); + } + + this.cleanup(); + } + + /// + /// Return a string array containing the remote directory's file list. + /// + /// + public string[] GetFileList() + { + return this.GetFileList("*.*"); + } + + /// + /// Return a string array containing the remote directory's file list. + /// + /// + /// + public string[] GetFileList(string mask) + { + if (!this.loggedin) this.Login(); + + + Socket cSocket; + if(Passive) + { + cSocket = createDataSocket(); + } + else + { + cSocket = this.clientSocket; + } + + //this.sendCommand("NLST " + mask); + this.sendCommand("LIST"); + + if (!(this.resultCode == 150 || this.resultCode == 125)) throw new FtpException(this.result.Substring(4)); + + this.message = ""; + + DateTime timeout = DateTime.Now.AddSeconds(this.timeoutSeconds); + + while (timeout > DateTime.Now) + { + int bytes = cSocket.Receive(buffer, buffer.Length, 0); + this.message += ASCII.GetString(buffer, 0, bytes); + + if (bytes < this.buffer.Length) break; + } + + string[] msg = this.message.Replace("\r", "").Split('\n'); + + cSocket.Close(); + + if (this.message.IndexOf("No such file or directory") != -1) + msg = new string[] { }; + + this.readResponse(); + + if (this.resultCode != 226) + msg = new string[] { }; + // throw new FtpException(result.Substring(4)); + + return msg; + } + + /// + /// Return the size of a file. + /// + /// + /// + public long GetFileSize(string fileName) + { + if (!this.loggedin) this.Login(); + + this.sendCommand("SIZE " + fileName); + long size = 0; + + if (this.resultCode == 213) + size = long.Parse(this.result.Substring(4)); + + else + throw new FtpException(this.result.Substring(4)); + + return size; + } + + + /// + /// Download a file to the Assembly's local directory, + /// keeping the same file name. + /// + /// + public void Download(string remFileName) + { + this.Download(remFileName, "", false); + } + + /// + /// Download a remote file to the Assembly's local directory, + /// keeping the same file name, and set the resume flag. + /// + /// + /// + public void Download(string remFileName, Boolean resume) + { + this.Download(remFileName, "", resume); + } + + /// + /// Download a remote file to a local file name which can include + /// a path. The local file name will be created or overwritten, + /// but the path must exist. + /// + /// + /// + public void Download(string remFileName, string locFileName) + { + this.Download(remFileName, locFileName, false); + } + + /// + /// Download a remote file to a local file name which can include + /// a path, and set the resume flag. The local file name will be + /// created or overwritten, but the path must exist. + /// + /// + /// + /// + public void Download(string remFileName, string locFileName, Boolean resume) + { + if (!this.loggedin) this.Login(); + + this.BinaryMode = true; + + Debug.WriteLine("Downloading file " + remFileName + " from " + _server + "/" + remotePath, "FtpClient"); + + if (locFileName.Equals("")) + { + locFileName = remFileName; + } + + FileStream output = null; + + if (!File.Exists(locFileName)) + output = File.Create(locFileName); + + else + output = new FileStream(locFileName, FileMode.Open); + + Socket cSocket = createDataSocket(); + + long offset = 0; + + if (resume) + { + offset = output.Length; + + if (offset > 0) + { + this.sendCommand("REST " + offset); + if (this.resultCode != 350) + { + //Server dosnt support resuming + offset = 0; + Debug.WriteLine("Resuming not supported:" + result.Substring(4), "FtpClient"); + } + else + { + Debug.WriteLine("Resuming at offset " + offset, "FtpClient"); + output.Seek(offset, SeekOrigin.Begin); + } + } + } + + this.sendCommand("RETR " + remFileName); + + if (this.resultCode != 150 && this.resultCode != 125) + { + throw new FtpException(this.result.Substring(4)); + } + + DateTime timeout = DateTime.Now.AddSeconds(this.timeoutSeconds); + + while (timeout > DateTime.Now) + { + this.bytes = cSocket.Receive(buffer, buffer.Length, 0); + output.Write(this.buffer, 0, this.bytes); + + if (this.bytes <= 0) + { + break; + } + } + + output.Close(); + + if (cSocket.Connected) cSocket.Close(); + + this.readResponse(); + + if (this.resultCode != 226 && this.resultCode != 250) + throw new FtpException(this.result.Substring(4)); + } + + + /// + /// Upload a file. + /// + /// + public void Upload(string fileName) + { + this.Upload(fileName, false); + } + + + /// + /// Upload a file and set the resume flag. + /// + /// + /// + public void Upload(string fileName, bool resume) + { + if (!this.loggedin) this.Login(); + + Socket cSocket = null; + long offset = 0; + + if (resume) + { + try + { + this.BinaryMode = true; + + offset = GetFileSize(Path.GetFileName(fileName)); + } + catch (Exception) + { + // file not exist + offset = 0; + } + } + + // open stream to read file + FileStream input = new FileStream(fileName, FileMode.Open); + + if (resume && input.Length < offset) + { + // different file size + Debug.WriteLine("Overwriting " + fileName, "FtpClient"); + offset = 0; + } + else if (resume && input.Length == offset) + { + // file done + input.Close(); + Debug.WriteLine("Skipping completed " + fileName + " - turn resume off to not detect.", "FtpClient"); + return; + } + + // dont create untill we know that we need it + cSocket = this.createDataSocket(); + + if (offset > 0) + { + this.sendCommand("REST " + offset); + if (this.resultCode != 350) + { + Debug.WriteLine("Resuming not supported", "FtpClient"); + offset = 0; + } + } + + this.sendCommand("STOR " + Path.GetFileName(fileName)); + + if (this.resultCode != 125 && this.resultCode != 150) throw new FtpException(result.Substring(4)); + + if (offset != 0) + { + Debug.WriteLine("Resuming at offset " + offset, "FtpClient"); + + input.Seek(offset, SeekOrigin.Begin); + } + + Debug.WriteLine("Uploading file " + fileName + " to " + remotePath, "FtpClient"); + + while ((bytes = input.Read(buffer, 0, buffer.Length)) > 0) + { + cSocket.Send(buffer, bytes, 0); + } + + input.Close(); + + if (cSocket.Connected) + { + cSocket.Close(); + } + + this.readResponse(); + + if (this.resultCode != 226 && this.resultCode != 250) throw new FtpException(this.result.Substring(4)); + } + + /// + /// Upload a directory and its file contents + /// + /// + /// Whether to recurse sub directories + public void UploadDirectory(string path, bool recurse) + { + this.UploadDirectory(path, recurse, "*.*"); + } + + /// + /// Upload a directory and its file contents + /// + /// + /// Whether to recurse sub directories + /// Only upload files of the given mask - everything is '*.*' + public void UploadDirectory(string path, bool recurse, string mask) + { + string[] dirs = path.Replace("/", @"\").Split('\\'); + string rootDir = dirs[dirs.Length - 1]; + + // make the root dir if it doed not exist + if (this.GetFileList(rootDir).Length < 1) this.MakeDir(rootDir); + + this.ChangeDir(rootDir); + + foreach (string file in Directory.GetFiles(path, mask)) + { + this.Upload(file, true); + } + if (recurse) + { + foreach (string directory in Directory.GetDirectories(path)) + { + this.UploadDirectory(directory, recurse, mask); + } + } + + this.ChangeDir(".."); + } + + /// + /// Delete a file from the remote FTP server. + /// + /// + public void DeleteFile(string fileName) + { + if (!this.loggedin) this.Login(); + + this.sendCommand("DELE " + fileName); + + if (this.resultCode != 250) throw new FtpException(this.result.Substring(4)); + + Debug.WriteLine("Deleted file " + fileName, "FtpClient"); + } + + /// + /// Rename a file on the remote FTP server. + /// + /// + /// + /// setting to false will throw exception if it exists + public void RenameFile(string oldFileName, string newFileName, bool overwrite) + { + if (!this.loggedin) this.Login(); + + this.sendCommand("RNFR " + oldFileName); + + if (this.resultCode != 350) throw new FtpException(this.result.Substring(4)); + + if (!overwrite && this.GetFileList(newFileName).Length > 0) throw new FtpException("File already exists"); + + this.sendCommand("RNTO " + newFileName); + + if (this.resultCode != 250) throw new FtpException(this.result.Substring(4)); + + Debug.WriteLine("Renamed file " + oldFileName + " to " + newFileName, "FtpClient"); + } + + /// + /// Create a directory on the remote FTP server. + /// + /// + public void MakeDir(string dirName) + { + if (!this.loggedin) this.Login(); + + this.sendCommand("MKD " + dirName); + + if (this.resultCode != 250 && this.resultCode != 257) throw new FtpException(this.result.Substring(4)); + + Debug.WriteLine("Created directory " + dirName, "FtpClient"); + } + + /// + /// Delete a directory on the remote FTP server. + /// + /// + public void RemoveDir(string dirName) + { + if (!this.loggedin) this.Login(); + + this.sendCommand("RMD " + dirName); + + if (this.resultCode != 250) throw new FtpException(this.result.Substring(4)); + + Debug.WriteLine("Removed directory " + dirName, "FtpClient"); + } + + /// + /// Change the current working directory on the remote FTP server. + /// + /// + public void ChangeDir(string dirName) + { + if (dirName == null || dirName.Equals(".") || dirName.Length == 0) + { + return; + } + + if (!this.loggedin) this.Login(); + + this.sendCommand("CWD " + dirName); + + //명령이 실패했다면 진행하지 않는다 + if (this.resultCode != 250) throw new FtpException(result.Substring(4)); + + this.sendCommand("PWD"); + + if (this.resultCode != 257) throw new FtpException(result.Substring(4)); + + // gonna have to do better than this.... + this.remotePath = this.message.Split('"')[1]; + + Debug.WriteLine("Current directory is " + this.remotePath, "FtpClient"); + } + + /// + /// + /// + private void readResponse() + { + this.message = ""; + this.result = this.readLine(); + + if (this.result.Length > 3) + this.resultCode = int.Parse(this.result.Substring(0, 3)); + else + this.result = null; + } + + /// + /// + /// + /// + private string readLine() + { + while (true) + { + this.bytes = clientSocket.Receive(this.buffer, this.buffer.Length, 0); + this.message += ASCII.GetString(this.buffer, 0, this.bytes); + + if (this.bytes < this.buffer.Length) + { + break; + } + } + + string[] msg = this.message.Split('\n'); + + if (this.message.Length > 2) + this.message = msg[msg.Length - 2]; + + else + this.message = msg[0]; + + + if (this.message.Length > 4 && !this.message.Substring(3, 1).Equals(" ")) return this.readLine(); + + if (this.verboseDebugging) + { + for (int i = 0; i < msg.Length - 1; i++) + { + Debug.Write(msg[i], "FtpClient"); + } + } + + return message; + } + + /// + /// + /// + /// + private void sendCommand(String command) + { + if (this.verboseDebugging) Debug.WriteLine(command, "FtpClient"); + + Byte[] cmdBytes = Encoding.ASCII.GetBytes((command + "\r\n").ToCharArray()); + clientSocket.Send(cmdBytes, cmdBytes.Length, 0); + this.readResponse(); + } + + /// + /// when doing data transfers, we need to open another socket for it. + /// + /// Connected socket + private Socket createDataSocket() + { + this.sendCommand("PASV"); + + if (this.resultCode != 227) throw new FtpException(this.result.Substring(4)); + + int index1 = this.result.IndexOf('('); + int index2 = this.result.IndexOf(')'); + + string ipData = this.result.Substring(index1 + 1, index2 - index1 - 1); + + int[] parts = new int[6]; + + int len = ipData.Length; + int partCount = 0; + string buf = ""; + + for (int i = 0; i < len && partCount <= 6; i++) + { + char ch = char.Parse(ipData.Substring(i, 1)); + + if (char.IsDigit(ch)) + buf += ch; + + else if (ch != ',') + throw new FtpException("Malformed PASV result: " + result); + + if (ch == ',' || i + 1 == len) + { + try + { + parts[partCount++] = int.Parse(buf); + buf = ""; + } + catch (Exception ex) + { + throw new FtpException("Malformed PASV result (not supported?): " + this.result, ex); + } + } + } + + string ipAddress = parts[0] + "." + parts[1] + "." + parts[2] + "." + parts[3]; + + int port = (parts[4] << 8) + parts[5]; + + Socket socket = null; + IPEndPoint ep = null; + + try + { + socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + ep = new IPEndPoint(Dns.Resolve(ipAddress).AddressList[0], port); + socket.Connect(ep); + } + catch (Exception ex) + { + // doubtfull.... + if (socket != null && socket.Connected) socket.Close(); + + throw new FtpException("Can't connect to remote server", ex); + } + + return socket; + } + + /// + /// Always release those sockets. + /// + private void cleanup() + { + if (this.clientSocket != null) + { + this.clientSocket.Close(); + this.clientSocket = null; + } + this.loggedin = false; + } + + /// + /// Destuctor + /// + ~Client_1() + { + this.cleanup(); + } + + + /**************************************************************************************************************/ + #region Async methods (auto generated) + + /* + WinInetApi.FtpClient ftp = new WinInetApi.FtpClient(); + + MethodInfo[] methods = ftp.GetType().GetMethods(BindingFlags.DeclaredOnly|BindingFlags.Instance|BindingFlags.Public); + + foreach ( MethodInfo method in methods ) + { + string param = ""; + string values = ""; + foreach ( ParameterInfo i in method.GetParameters() ) + { + param += i.ParameterType.Name + " " + i.Name + ","; + values += i.Name + ","; + } + + + Debug.WriteLine("private delegate " + method.ReturnType.Name + " " + method.Name + "Callback(" + param.TrimEnd(',') + ");"); + + Debug.WriteLine("public System.IAsyncResult Begin" + method.Name + "( " + param + " System.AsyncCallback callback )"); + Debug.WriteLine("{"); + Debug.WriteLine("" + method.Name + "Callback ftpCallback = new " + method.Name + "Callback(" + values + " this." + method.Name + ");"); + Debug.WriteLine("return ftpCallback.BeginInvoke(callback, null);"); + Debug.WriteLine("}"); + Debug.WriteLine("public void End" + method.Name + "(System.IAsyncResult asyncResult)"); + Debug.WriteLine("{"); + Debug.WriteLine(method.Name + "Callback fc = (" + method.Name + "Callback) ((AsyncResult)asyncResult).AsyncDelegate;"); + Debug.WriteLine("fc.EndInvoke(asyncResult);"); + Debug.WriteLine("}"); + //Debug.WriteLine(method); + } +*/ + + + private delegate void LoginCallback(); + public System.IAsyncResult BeginLogin(System.AsyncCallback callback) + { + LoginCallback ftpCallback = new LoginCallback(this.Login); + return ftpCallback.BeginInvoke(callback, null); + } + private delegate void CloseCallback(); + public System.IAsyncResult BeginClose(System.AsyncCallback callback) + { + CloseCallback ftpCallback = new CloseCallback(this.Close); + return ftpCallback.BeginInvoke(callback, null); + } + private delegate String[] GetFileListCallback(); + public System.IAsyncResult BeginGetFileList(System.AsyncCallback callback) + { + GetFileListCallback ftpCallback = new GetFileListCallback(this.GetFileList); + return ftpCallback.BeginInvoke(callback, null); + } + private delegate String[] GetFileListMaskCallback(String mask); + public System.IAsyncResult BeginGetFileList(String mask, System.AsyncCallback callback) + { + GetFileListMaskCallback ftpCallback = new GetFileListMaskCallback(this.GetFileList); + return ftpCallback.BeginInvoke(mask, callback, null); + } + private delegate Int64 GetFileSizeCallback(String fileName); + public System.IAsyncResult BeginGetFileSize(String fileName, System.AsyncCallback callback) + { + GetFileSizeCallback ftpCallback = new GetFileSizeCallback(this.GetFileSize); + return ftpCallback.BeginInvoke(fileName, callback, null); + } + private delegate void DownloadCallback(String remFileName); + public System.IAsyncResult BeginDownload(String remFileName, System.AsyncCallback callback) + { + DownloadCallback ftpCallback = new DownloadCallback(this.Download); + return ftpCallback.BeginInvoke(remFileName, callback, null); + } + private delegate void DownloadFileNameResumeCallback(String remFileName, Boolean resume); + public System.IAsyncResult BeginDownload(String remFileName, Boolean resume, System.AsyncCallback callback) + { + DownloadFileNameResumeCallback ftpCallback = new DownloadFileNameResumeCallback(this.Download); + return ftpCallback.BeginInvoke(remFileName, resume, callback, null); + } + private delegate void DownloadFileNameFileNameCallback(String remFileName, String locFileName); + public System.IAsyncResult BeginDownload(String remFileName, String locFileName, System.AsyncCallback callback) + { + DownloadFileNameFileNameCallback ftpCallback = new DownloadFileNameFileNameCallback(this.Download); + return ftpCallback.BeginInvoke(remFileName, locFileName, callback, null); + } + private delegate void DownloadFileNameFileNameResumeCallback(String remFileName, String locFileName, Boolean resume); + public System.IAsyncResult BeginDownload(String remFileName, String locFileName, Boolean resume, System.AsyncCallback callback) + { + DownloadFileNameFileNameResumeCallback ftpCallback = new DownloadFileNameFileNameResumeCallback(this.Download); + return ftpCallback.BeginInvoke(remFileName, locFileName, resume, callback, null); + } + private delegate void UploadCallback(String fileName); + public System.IAsyncResult BeginUpload(String fileName, System.AsyncCallback callback) + { + UploadCallback ftpCallback = new UploadCallback(this.Upload); + return ftpCallback.BeginInvoke(fileName, callback, null); + } + private delegate void UploadFileNameResumeCallback(String fileName, Boolean resume); + public System.IAsyncResult BeginUpload(String fileName, Boolean resume, System.AsyncCallback callback) + { + UploadFileNameResumeCallback ftpCallback = new UploadFileNameResumeCallback(this.Upload); + return ftpCallback.BeginInvoke(fileName, resume, callback, null); + } + private delegate void UploadDirectoryCallback(String path, Boolean recurse); + public System.IAsyncResult BeginUploadDirectory(String path, Boolean recurse, System.AsyncCallback callback) + { + UploadDirectoryCallback ftpCallback = new UploadDirectoryCallback(this.UploadDirectory); + return ftpCallback.BeginInvoke(path, recurse, callback, null); + } + private delegate void UploadDirectoryPathRecurseMaskCallback(String path, Boolean recurse, String mask); + public System.IAsyncResult BeginUploadDirectory(String path, Boolean recurse, String mask, System.AsyncCallback callback) + { + UploadDirectoryPathRecurseMaskCallback ftpCallback = new UploadDirectoryPathRecurseMaskCallback(this.UploadDirectory); + return ftpCallback.BeginInvoke(path, recurse, mask, callback, null); + } + private delegate void DeleteFileCallback(String fileName); + public System.IAsyncResult BeginDeleteFile(String fileName, System.AsyncCallback callback) + { + DeleteFileCallback ftpCallback = new DeleteFileCallback(this.DeleteFile); + return ftpCallback.BeginInvoke(fileName, callback, null); + } + private delegate void RenameFileCallback(String oldFileName, String newFileName, Boolean overwrite); + public System.IAsyncResult BeginRenameFile(String oldFileName, String newFileName, Boolean overwrite, System.AsyncCallback callback) + { + RenameFileCallback ftpCallback = new RenameFileCallback(this.RenameFile); + return ftpCallback.BeginInvoke(oldFileName, newFileName, overwrite, callback, null); + } + private delegate void MakeDirCallback(String dirName); + public System.IAsyncResult BeginMakeDir(String dirName, System.AsyncCallback callback) + { + MakeDirCallback ftpCallback = new MakeDirCallback(this.MakeDir); + return ftpCallback.BeginInvoke(dirName, callback, null); + } + private delegate void RemoveDirCallback(String dirName); + public System.IAsyncResult BeginRemoveDir(String dirName, System.AsyncCallback callback) + { + RemoveDirCallback ftpCallback = new RemoveDirCallback(this.RemoveDir); + return ftpCallback.BeginInvoke(dirName, callback, null); + } + private delegate void ChangeDirCallback(String dirName); + public System.IAsyncResult BeginChangeDir(String dirName, System.AsyncCallback callback) + { + ChangeDirCallback ftpCallback = new ChangeDirCallback(this.ChangeDir); + return ftpCallback.BeginInvoke(dirName, callback, null); + } + + #endregion + } +} diff --git a/FTP_Client/Client_2.cs b/FTP_Client/Client_2.cs new file mode 100644 index 0000000..349d320 --- /dev/null +++ b/FTP_Client/Client_2.cs @@ -0,0 +1,1058 @@ +using System.Diagnostics; +using System.Data; +using System.Collections; +using Microsoft.VisualBasic; +using System.Collections.Generic; +using System; +using System.Net; +using System.IO; +using System.Text.RegularExpressions; +using System.Globalization; + +namespace FTPClients +{ + #region "FTP client class" + /// + /// A wrapper class for .NET 2.0 FTP + /// + /// + /// This class does not hold open an FTP connection but + /// instead is stateless: for each FTP request it + /// connects, performs the request and disconnects. + /// + public class Client_2 + { + + + ////프로브센서의 제목이 클릭됨 + // public event MessageHandler Message; + public delegate void MessageHandler(int idx); + + #region "CONSTRUCTORS" + /// + /// Blank constructor + /// + /// Hostname, username and password must be set manually + public Client_2() + { + utf8 = false; + Passive = true; + } + + /// + /// Constructor just taking the hostname + /// + /// in either ftp://ftp.host.com or ftp.host.com form + /// + public Client_2(string Hostname) + { + _hostname = Hostname; + utf8 = false; + Passive = true; + } + + /// + /// Constructor taking hostname, username and password + /// + /// in either ftp://ftp.host.com or ftp.host.com form + /// Leave blank to use 'anonymous' but set password to your email + /// + /// + public Client_2(string Hostname, string Username, string Password) + { + _hostname = Hostname; + _username = Username; + _password = Password; + utf8 = false; + Passive = true; + } + #endregion + + #region "Directory functions" + /// + /// Return a simple directory listing + /// + /// Directory to list, e.g. /pub + /// A list of filenames and directories as a List(of String) + /// For a detailed directory listing, use ListDirectoryDetail + public List ListDirectory(string directory) + { + //return a simple list of filenames in directory + System.Net.FtpWebRequest ftp = GetRequest(GetDirectory(directory)); + //Set request to do simple list + ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectory; + + string str = GetStringResponse(ftp); + //replace CRLF to CR, remove last instance + str = str.Replace("\r\n", "\r").TrimEnd('\r'); + //split the string into a list + List result = new List(); + result.AddRange(str.Split('\r')); + return result; + } + + /// + /// Return a detailed directory listing + /// + /// Directory to list, e.g. /pub/etc + /// An FTPDirectory object + public FTPdirectory ListDirectoryDetail(string directory) + { + System.Net.FtpWebRequest ftp = GetRequest(GetDirectory(directory)); + //Set request to do simple list + ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails; + + string str = GetStringResponse(ftp); + //replace CRLF to CR, remove last instance + str = str.Replace("\r\n", "\r").TrimEnd('\r'); + //split the string into a list + return new FTPdirectory(str, _lastDirectory); + } + + public void Close() + { + System.Net.FtpWebRequest ftp = GetRequest(GetDirectory("/")); + ftp.Abort(); + } + + #endregion + + #region "Upload: File transfer TO ftp server" + /// + /// Copy a local file to the FTP server + /// + /// Full path of the local file + /// Target filename, if required + /// + /// If the target filename is blank, the source filename is used + /// (assumes current directory). Otherwise use a filename to specify a name + /// or a full path and filename if required. + public bool Upload(string localFilename, string targetFilename) + { + //1. check source + if (!File.Exists(localFilename)) + { + throw (new ApplicationException("File " + localFilename + " not found")); + } + //copy to FI + FileInfo fi = new FileInfo(localFilename); + return Upload(fi, targetFilename); + } + + /// + /// Upload a local file to the FTP server + /// + /// Source file + /// Target filename (optional) + /// + public bool Upload(FileInfo fi, string targetFilename) + { + //copy the file specified to target file: target file can be full path or just filename (uses current dir) + + //1. check target + string target; + if (targetFilename.Trim() == "") + { + //Blank target: use source filename & current dir + target = this.CurrentDirectory + fi.Name; + } + else if (targetFilename.Contains("/")) + { + //If contains / treat as a full path + target = AdjustDir(targetFilename); + } + else + { + //otherwise treat as filename only, use current directory + target = CurrentDirectory + targetFilename; + } + + string URI = host + target; + //perform copy + System.Net.FtpWebRequest ftp = GetRequest(URI); + + //Set request to upload a file in binary + ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile; + ftp.UseBinary = true; + + //Notify FTP of the expected size + ftp.ContentLength = fi.Length; + + //create byte array to store: ensure at least 1 byte! + const int BufferSize = 2048; + byte[] content = new byte[BufferSize - 1 + 1]; + int dataRead; + + //open file for reading + using (FileStream fs = fi.OpenRead()) + { + try + { + //open request to send + using (Stream rs = ftp.GetRequestStream()) + { + do + { + dataRead = fs.Read(content, 0, BufferSize); + rs.Write(content, 0, dataRead); + } while (!(dataRead < BufferSize)); + rs.Close(); + } + + } + catch (Exception) + { + + } + finally + { + //ensure file closed + fs.Close(); + } + + } + + + ftp = null; + return true; + + } + #endregion + + #region "Download: File transfer FROM ftp server" + /// + /// Copy a file from FTP server to local + /// + /// Target filename, if required + /// Full path of the local file + /// + /// Target can be blank (use same filename), or just a filename + /// (assumes current directory) or a full path and filename + public bool Download(string sourceFilename, string localFilename, bool PermitOverwrite) + { + //2. determine target file + FileInfo fi = new FileInfo(localFilename); + return this.Download(sourceFilename, fi, PermitOverwrite); + } + + //Version taking an FtpFileInfo + public bool Download(FTPfileInfo file, string localFilename, bool PermitOverwrite) + { + return this.Download(file.FullName, localFilename, PermitOverwrite); + } + + //Another version taking FtpFileInfo and FileInfo + public bool Download(FTPfileInfo file, FileInfo localFI, bool PermitOverwrite) + { + return this.Download(file.FullName, localFI, PermitOverwrite); + } + + //Version taking string/FileInfo + public bool Download(string sourceFilename, FileInfo targetFI, bool PermitOverwrite) + { + //1. check target + if (targetFI.Exists && !(PermitOverwrite)) + { + throw (new ApplicationException("Target file already exists")); + } + + //2. check source + string target; + if (sourceFilename.Trim() == "") + { + throw (new ApplicationException("File not specified")); + } + else if (sourceFilename.Contains("/")) + { + //treat as a full path + target = AdjustDir(sourceFilename); + } + else + { + //treat as filename only, use current directory + target = CurrentDirectory + sourceFilename; + } + + string URI = host + target; + + //3. perform copy + System.Net.FtpWebRequest ftp = GetRequest(URI); + + //Set request to download a file in binary mode + ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile; + ftp.UseBinary = true; + + //open request and get response stream + using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse()) + { + using (Stream responseStream = response.GetResponseStream()) + { + //loop to read & write to file + using (FileStream fs = targetFI.OpenWrite()) + { + try + { + byte[] buffer = new byte[2048]; + int read = 0; + do + { + read = responseStream.Read(buffer, 0, buffer.Length); + fs.Write(buffer, 0, read); + } while (!(read == 0)); + responseStream.Close(); + fs.Flush(); + fs.Close(); + } + catch (Exception) + { + //catch error and delete file only partially downloaded + fs.Close(); + //delete target file as it's incomplete + targetFI.Delete(); + throw; + } + } + + responseStream.Close(); + } + + response.Close(); + } + + + return true; + } + #endregion + + #region "Other functions: Delete rename etc." + /// + /// Delete remote file + /// + /// filename or full path + /// + /// + public bool FtpDelete(string filename) + { + //Determine if file or full path + string URI = this.host + GetFullPath(filename); + + System.Net.FtpWebRequest ftp = GetRequest(URI); + //Set request to delete + ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile; + try + { + //get response but ignore it + string str = GetStringResponse(ftp); + } + catch (Exception) + { + return false; + } + return true; + } + + /// + /// Determine if file exists on remote FTP site + /// + /// Filename (for current dir) or full path + /// + /// Note this only works for files + public bool FtpFileExists(string filename) + { + //Try to obtain filesize: if we get error msg containing "550" + //the file does not exist + try + { + long size = GetFileSize(filename); + return true; + + } + catch (Exception ex) + { + //only handle expected not-found exception + if (ex is System.Net.WebException) + { + //file does not exist/no rights error = 550 + if (ex.Message.Contains("550")) + { + //clear + return false; + } + else + { + throw; + } + } + else + { + throw; + } + } + } + + /// + /// Determine size of remote file + /// + /// + /// + /// Throws an exception if file does not exist + public long GetFileSize(string filename) + { + string path; + if (filename.Contains("/")) + { + path = AdjustDir(filename); + } + else + { + path = this.CurrentDirectory + filename; + } + string URI = this.host + path; + System.Net.FtpWebRequest ftp = GetRequest(URI); + //Try to get info on file/dir? + ftp.Method = System.Net.WebRequestMethods.Ftp.GetFileSize; + string tmp = this.GetStringResponse(ftp); + return GetSize(ftp); + } + + public bool FtpRename(string sourceFilename, string newName) + { + //Does file exist? + string source = GetFullPath(sourceFilename); + if (!FtpFileExists(source)) + { + throw (new FileNotFoundException("File " + source + " not found")); + } + + //build target name, ensure it does not exist + string target = GetFullPath(newName); + if (target == source) + { + throw (new ApplicationException("Source and target are the same")); + } + else if (FtpFileExists(target)) + { + throw (new ApplicationException("Target file " + target + " already exists")); + } + + //perform rename + string URI = this.host + source; + + System.Net.FtpWebRequest ftp = GetRequest(URI); + //Set request to delete + ftp.Method = System.Net.WebRequestMethods.Ftp.Rename; + ftp.RenameTo = target; + try + { + //get response but ignore it + string str = GetStringResponse(ftp); + } + catch (Exception) + { + return false; + } + return true; + } + + public bool FtpCreateDirectory(string dirpath) + { + //perform create + string URI = this.host + AdjustDir(dirpath); + System.Net.FtpWebRequest ftp = GetRequest(URI); + //Set request to MkDir + ftp.Method = System.Net.WebRequestMethods.Ftp.MakeDirectory; + try + { + //get response but ignore it + string str = GetStringResponse(ftp); + } + catch (Exception) + { + return false; + } + return true; + } + + public bool FtpDeleteDirectory(string dirpath) + { + //perform remove + string URI = this.host + AdjustDir(dirpath); + System.Net.FtpWebRequest ftp = GetRequest(URI); + //Set request to RmDir + ftp.Method = System.Net.WebRequestMethods.Ftp.RemoveDirectory; + try + { + //get response but ignore it + string str = GetStringResponse(ftp); + } + catch (Exception) + { + return false; + } + return true; + } + #endregion + + #region "private supporting fns" + //Get the basic FtpWebRequest object with the + //common settings and security + private FtpWebRequest GetRequest(string URI) + { + //create request + FtpWebRequest result = (FtpWebRequest)FtpWebRequest.Create(URI); + //Set the login details + result.Credentials = GetCredentials(); + //Do not keep alive (stateless mode) + result.KeepAlive = true; + result.UsePassive = this.Passive; + return result; + } + + + /// + /// Get the credentials from username/password + /// + private System.Net.ICredentials GetCredentials() + { + return new System.Net.NetworkCredential(user, pass); + } + + /// + /// returns a full path using CurrentDirectory for a relative file reference + /// + private string GetFullPath(string file) + { + if (file.Contains("/")) + { + return AdjustDir(file); + } + else + { + return this.CurrentDirectory + file; + } + } + + /// + /// Amend an FTP path so that it always starts with / + /// + /// Path to adjust + /// + /// + private string AdjustDir(string path) + { + return ((path.StartsWith("/")) ? "" : "/").ToString() + path; + } + + private string GetDirectory(string directory) + { + string URI; + if (directory == "") + { + //build from current + URI = host + this.CurrentDirectory; + _lastDirectory = this.CurrentDirectory; + } + else + { + if (!directory.StartsWith("/")) + { + throw (new ApplicationException("Directory should start with /")); + } + URI = this.host + directory; + _lastDirectory = directory; + } + return URI; + } + + //stores last retrieved/set directory + private string _lastDirectory = ""; + + /// + /// Obtains a response stream as a string + /// + /// current FTP request + /// String containing response + /// FTP servers typically return strings with CR and + /// not CRLF. Use respons.Replace(vbCR, vbCRLF) to convert + /// to an MSDOS string + private string GetStringResponse(FtpWebRequest ftp) + { + //Get the result, streaming to a string + string result = ""; + using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse()) + { + long size = response.ContentLength; + using (Stream datastream = response.GetResponseStream()) + { + if(utf8) + { + using (StreamReader sr = new StreamReader(datastream,System.Text.Encoding.UTF8)) + { + result = sr.ReadToEnd(); + sr.Close(); + } + } + else + { + using (StreamReader sr = new StreamReader(datastream,System.Text.Encoding.Default)) + { + result = sr.ReadToEnd(); + sr.Close(); + } + } + + + datastream.Close(); + } + + response.Close(); + } + + return result; + } + + /// + /// Gets the size of an FTP request + /// + /// + /// + /// + private long GetSize(FtpWebRequest ftp) + { + long size; + using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse()) + { + size = response.ContentLength; + response.Close(); + } + + return size; + } + #endregion + + #region "Properties" + + private string _hostname; + + public Boolean Passive { get; set; } + public Boolean utf8 { get; set; } + + + /// + /// Hostname + /// + /// + /// Hostname can be in either the full URL format + /// ftp://ftp.myhost.com or just ftp.myhost.com + /// + public string host + { + get + { + if (_hostname.StartsWith("ftp://")) + { + return _hostname; + } + else + { + return "ftp://" + _hostname; + } + } + set + { + _hostname = value; + } + } + private string _username; + /// + /// Username property + /// + /// + /// Can be left blank, in which case 'anonymous' is returned + public string user + { + get + { + return (_username == "" ? "anonymous" : _username); + } + set + { + _username = value; + } + } + private string _password; + public string pass + { + get + { + return _password; + } + set + { + _password = value; + } + } + + /// + /// The CurrentDirectory value + /// + /// Defaults to the root '/' + private string _currentDirectory = "/"; + public string CurrentDirectory + { + get + { + //return directory, ensure it ends with / + return _currentDirectory + ((_currentDirectory.EndsWith("/")) ? "" : "/").ToString(); + } + set + { + if (!value.StartsWith("/")) + { + throw (new ApplicationException("Directory should start with /")); + } + _currentDirectory = value; + } + } + + + #endregion + + } + #endregion + + + #region "FTP file info class" + /// + /// Represents a file or directory entry from an FTP listing + /// + /// + /// This class is used to parse the results from a detailed + /// directory list from FTP. It supports most formats of + /// + public class FTPfileInfo + { + + //Stores extended info about FTP file + + #region "Properties" + public string FullName + { + get + { + return Path + Filename; + } + } + public string Filename + { + get + { + return _filename; + } + } + public string Path + { + get + { + return _path; + } + } + public DirectoryEntryTypes FileType + { + get + { + return _fileType; + } + } + public long Size + { + get + { + return _size; + } + } + public DateTime FileDateTime + { + get + { + return _fileDateTime; + } + } + public string Permission + { + get + { + return _permission; + } + } + public string Extension + { + get + { + int i = this.Filename.LastIndexOf("."); + if (i >= 0 && i < (this.Filename.Length - 1)) + { + return this.Filename.Substring(i + 1); + } + else + { + return ""; + } + } + } + public string NameOnly + { + get + { + int i = this.Filename.LastIndexOf("."); + if (i > 0) + { + return this.Filename.Substring(0, i); + } + else + { + return this.Filename; + } + } + } + private string _filename; + private string _path; + private DirectoryEntryTypes _fileType; + private long _size; + private DateTime _fileDateTime; + private string _permission; + + #endregion + + /// + /// Identifies entry as either File or Directory + /// + public enum DirectoryEntryTypes + { + File, + Directory + } + + /// + /// Constructor taking a directory listing line and path + /// + /// The line returned from the detailed directory list + /// Path of the directory + /// + public FTPfileInfo(string line, string path) + { + //parse line + Match m = GetMatchingRegex(line); + if (m == null) + { + //failed + throw (new ApplicationException("Unable to parse line: " + line)); + } + else + { + _filename = m.Groups["name"].Value; + _path = path; + + Int64.TryParse(m.Groups["size"].Value, out _size); + //_size = System.Convert.ToInt32(m.Groups["size"].Value); + + _permission = m.Groups["permission"].Value; + string _dir = m.Groups["dir"].Value; + if (_dir != "" && _dir != "-") + { + _fileType = DirectoryEntryTypes.Directory; + } + else + { + _fileType = DirectoryEntryTypes.File; + } + + string sdatetime = m.Groups["timestamp"].Value; + DateTime dt = Convert.ToDateTime(null); + if (!DateTime.TryParse(sdatetime, out dt)) + { + if (!DateTime.TryParse(sdatetime, CultureInfo.CreateSpecificCulture("en-US"), DateTimeStyles.None, out dt)) + { + if (!DateTime.TryParse(sdatetime, CultureInfo.CreateSpecificCulture("fr-FR"), DateTimeStyles.None, out dt)) + { + if (!DateTime.TryParse(sdatetime, CultureInfo.CreateSpecificCulture("de-DE"), DateTimeStyles.None, out dt)) + { + + } + } + } + } + + _fileDateTime = dt; + + ////날짜해석부분 추가 160715 + //CultureInfo[] cultures = {CultureInfo.CreateSpecificCulture("en-US"), + // CultureInfo.CreateSpecificCulture("fr-FR"), + // CultureInfo.CreateSpecificCulture("de-DE")}; + //foreach (CultureInfo culture in cultures) + //{ + + // string dt = "07-13-16 10:39PM"; + // try + // { + // DateTime dtv = DateTime.Parse(dt, culture); + // MessageBox.Show(dtv.ToString()); + // } + // catch (Exception ex) + // { + // MessageBox.Show(ex.Message); + // } + //} + + //try + //{ + // _fileDateTime = DateTime.Parse(m.Groups["timestamp"].Value); + //} + //catch (Exception) + //{ + // _fileDateTime = Convert.ToDateTime(null); + //} + + } + } + + private Match GetMatchingRegex(string line) + { + Regex rx; + Match m; + for (int i = 0; i <= _ParseFormats.Length - 1; i++) + { + rx = new Regex(_ParseFormats[i]); + m = rx.Match(line); + if (m.Success) + { + return m; + } + } + return null; + } + + #region "Regular expressions for parsing LIST results" + /// + /// List of REGEX formats for different FTP server listing formats + /// + /// + /// The first three are various UNIX/LINUX formats, fourth is for MS FTP + /// in detailed mode and the last for MS FTP in 'DOS' mode. + /// I wish VB.NET had support for Const arrays like C# but there you go + /// + private static string[] _ParseFormats = new string[] { + "(?[\\-d])(?([\\-r][\\-w][\\-xs]){3})\\s+\\d+\\s+\\w+\\s+\\w+\\s+(?\\d+)\\s+(?\\w+\\s+\\d+\\s+\\d{4})\\s+(?.+)", + "(?[\\-d])(?([\\-r][\\-w][\\-xs]){3})\\s+\\d+\\s+\\d+\\s+(?\\d+)\\s+(?\\w+\\s+\\d+\\s+\\d{4})\\s+(?.+)", + "(?[\\-d])(?([\\-r][\\-w][\\-xs]){3})\\s+\\d+\\s+\\d+\\s+(?\\d+)\\s+(?\\w+\\s+\\d+\\s+\\d{1,2}:\\d{2})\\s+(?.+)", + "(?[\\-d])(?([\\-r][\\-w][\\-xs]){3})\\s+\\d+\\s+\\w+\\s+\\w+\\s+(?\\d+)\\s+(?\\w+\\s+\\d+\\s+\\d{1,2}:\\d{2})\\s+(?.+)", + "(?[\\-d])(?([\\-r][\\-w][\\-xs]){3})(\\s+)(?(\\d+))(\\s+)(?(\\w+\\s\\w+))(\\s+)(?(\\d+))\\s+(?\\w+\\s+\\d+\\s+\\d{2}:\\d{2})\\s+(?.+)", + "(?\\d{2}\\-\\d{2}\\-\\d{2}\\s+\\d{2}:\\d{2}[Aa|Pp][mM])\\s+(?\\<\\w+\\>){0,1}(?\\d+){0,1}\\s+(?.+)" }; + #endregion + } + #endregion + + #region "FTP Directory class" + /// + /// Stores a list of files and directories from an FTP result + /// + /// + public class FTPdirectory : List + { + + + public FTPdirectory() + { + //creates a blank directory listing + } + + /// + /// Constructor: create list from a (detailed) directory string + /// + /// directory listing string + /// + /// + public FTPdirectory(string dir, string path) + { + foreach (string line in dir.Replace("\n", "").Split(System.Convert.ToChar('\r'))) + { + //parse + if (line != "") + { + this.Add(new FTPfileInfo(line, path)); + } + } + } + + /// + /// Filter out only files from directory listing + /// + /// optional file extension filter + /// FTPdirectory listing + public FTPdirectory GetFiles(string ext) + { + return this.GetFileOrDir(FTPfileInfo.DirectoryEntryTypes.File, ext); + } + + /// + /// Returns a list of only subdirectories + /// + /// FTPDirectory list + /// + public FTPdirectory GetDirectories() + { + return this.GetFileOrDir(FTPfileInfo.DirectoryEntryTypes.Directory, ""); + } + + //internal: share use function for GetDirectories/Files + private FTPdirectory GetFileOrDir(FTPfileInfo.DirectoryEntryTypes type, string ext) + { + FTPdirectory result = new FTPdirectory(); + foreach (FTPfileInfo fi in this) + { + if (fi.FileType == type) + { + if (string.IsNullOrEmpty(ext)) + { + result.Add(fi); + } + else if (ext.ToLower() == fi.Extension.ToLower()) + { + result.Add(fi); + } + } + } + return result; + + } + + public bool FileExists(string filename) + { + foreach (FTPfileInfo ftpfile in this) + { + if (ftpfile.Filename == filename) + { + return true; + } + } + return false; + } + + private const char slash = '/'; + + public static string GetParentDirectory(string dir) + { + string tmp = dir.TrimEnd(slash); + int i = tmp.LastIndexOf(slash); + if (i > 0) + { + return tmp.Substring(0, i - 1); + } + else + { + throw (new ApplicationException("No parent for root")); + } + } + } + #endregion +} diff --git a/FTP_Client/FTP_Client.csproj b/FTP_Client/FTP_Client.csproj new file mode 100644 index 0000000..f4b52c6 --- /dev/null +++ b/FTP_Client/FTP_Client.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {9A2A1B46-799E-4D8E-8682-1F82963836A3} + Library + Properties + FTPClients + FTP_Client + v4.0 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + x86 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FTP_Client/Properties/AssemblyInfo.cs b/FTP_Client/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b49a108 --- /dev/null +++ b/FTP_Client/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다. +// 어셈블리와 관련된 정보를 수정하려면 +// 이 특성 값을 변경하십시오. +[assembly: AssemblyTitle("FTP_Client")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("FTP_Client")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("0159399e-a5a2-4699-b491-00a507ff5381")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로 +// 지정되도록 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/FileManager.suo b/FileManager.suo new file mode 100644 index 0000000..df3bc57 Binary files /dev/null and b/FileManager.suo differ diff --git a/Folder.ico b/Folder.ico new file mode 100644 index 0000000..afe26d2 Binary files /dev/null and b/Folder.ico differ diff --git a/Setup1/Setup1.vdproj b/Setup1/Setup1.vdproj new file mode 100644 index 0000000..fe8f222 --- /dev/null +++ b/Setup1/Setup1.vdproj @@ -0,0 +1,1455 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:Setup1" +"LanguageId" = "3:1042" +"CodePage" = "3:949" +"UILanguageId" = "3:1042" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_0C4A78087D164A02B2A4BF00FA492007" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_262462FC5B84BEFFA82BBD3EF7131527" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_3A106870C462568A709C3089E6CDD6E8" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_65AD5F1E308A9FA5EDC00012E1E3AEBC" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7EA85755B6FFACCE8C105F5C1CA14A26" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7EA85755B6FFACCE8C105F5C1CA14A26" + "OwnerKey" = "8:_F431995862C0F5BD09455462CE7F8A93" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_81E96CCB7FD1AF8758DBC3D3372C2D4C" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9C275A1AAC44E629F403214C48871DA8" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A351B04DC14A1147A0AB026F84023CA7" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A351B04DC14A1147A0AB026F84023CA7" + "OwnerKey" = "8:_DA4DC68F42EC38EDABA7C3392E0126C7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_AFAC776AE119E0BFC9E6DB5359F92516" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_AFAC776AE119E0BFC9E6DB5359F92516" + "OwnerKey" = "8:_F431995862C0F5BD09455462CE7F8A93" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B80A4082DD862DD053BDB7F317DC29B6" + "OwnerKey" = "8:_C853E0C84DEF9EA84A03A3A34D1D8D3D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B80A4082DD862DD053BDB7F317DC29B6" + "OwnerKey" = "8:_F431995862C0F5BD09455462CE7F8A93" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B80A4082DD862DD053BDB7F317DC29B6" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B80A4082DD862DD053BDB7F317DC29B6" + "OwnerKey" = "8:_AFAC776AE119E0BFC9E6DB5359F92516" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C853E0C84DEF9EA84A03A3A34D1D8D3D" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C853E0C84DEF9EA84A03A3A34D1D8D3D" + "OwnerKey" = "8:_F431995862C0F5BD09455462CE7F8A93" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_D5BDAE8971A72652E5D87B7F0505ED8E" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_D5BDAE8971A72652E5D87B7F0505ED8E" + "OwnerKey" = "8:_F431995862C0F5BD09455462CE7F8A93" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_DA4DC68F42EC38EDABA7C3392E0126C7" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_DDF65948A7E7D9A59EE23F029F5676CF" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_DDF65948A7E7D9A59EE23F029F5676CF" + "OwnerKey" = "8:_F431995862C0F5BD09455462CE7F8A93" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F431995862C0F5BD09455462CE7F8A93" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_A351B04DC14A1147A0AB026F84023CA7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_F348CEA4150043899391F5791D5F1B19" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_3A106870C462568A709C3089E6CDD6E8" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_81E96CCB7FD1AF8758DBC3D3372C2D4C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_262462FC5B84BEFFA82BBD3EF7131527" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_9C275A1AAC44E629F403214C48871DA8" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_65AD5F1E308A9FA5EDC00012E1E3AEBC" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_F431995862C0F5BD09455462CE7F8A93" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_AFAC776AE119E0BFC9E6DB5359F92516" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_C853E0C84DEF9EA84A03A3A34D1D8D3D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_B80A4082DD862DD053BDB7F317DC29B6" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_D5BDAE8971A72652E5D87B7F0505ED8E" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_DDF65948A7E7D9A59EE23F029F5676CF" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_7EA85755B6FFACCE8C105F5C1CA14A26" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_DA4DC68F42EC38EDABA7C3392E0126C7" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\Setup1.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:3" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:2" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.0" + { + "Name" = "8:Microsoft .NET Framework 4(x86 및 x64)" + "ProductCode" = "8:.NETFramework,Version=v4.0" + } + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.4.5" + { + "Name" = "8:Windows Installer 4.5" + "ProductCode" = "8:Microsoft.Windows.Installer.4.5" + } + } + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\Setup1.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.5" + { + "Name" = "8:Microsoft .NET Framework 4.5 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.5" + } + } + } + } + } + "Deployable" + { + "CustomAction" + { + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_ECA0BB5660AD4CFD8CA1ABD6DB3E2562" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "FrameworkVersion" = "8:.NETFramework,Version=v4.0" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=671728" + } + } + } + "File" + { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0C4A78087D164A02B2A4BF00FA492007" + { + "SourcePath" = "8:..\\Folder.ico" + "TargetName" = "8:Folder.ico" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_262462FC5B84BEFFA82BBD3EF7131527" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:FTP_Client, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86" + "ScatterAssemblies" + { + "_262462FC5B84BEFFA82BBD3EF7131527" + { + "Name" = "8:FTP_Client.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:FTP_Client.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3A106870C462568A709C3089E6CDD6E8" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:ArinSetting, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86" + "ScatterAssemblies" + { + "_3A106870C462568A709C3089E6CDD6E8" + { + "Name" = "8:ArinSetting.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:ArinSetting.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_65AD5F1E308A9FA5EDC00012E1E3AEBC" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + "ScatterAssemblies" + { + "_65AD5F1E308A9FA5EDC00012E1E3AEBC" + { + "Name" = "8:stdole.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:stdole.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7EA85755B6FFACCE8C105F5C1CA14A26" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:FarPoint.CalcEngine, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_7EA85755B6FFACCE8C105F5C1CA14A26" + { + "Name" = "8:FarPoint.CalcEngine.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:FarPoint.CalcEngine.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_81E96CCB7FD1AF8758DBC3D3372C2D4C" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:ArinLog, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86" + "ScatterAssemblies" + { + "_81E96CCB7FD1AF8758DBC3D3372C2D4C" + { + "Name" = "8:ArinLog.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:ArinLog.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_9C275A1AAC44E629F403214C48871DA8" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:CommonClassv2, Version=1.2.1.0, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_9C275A1AAC44E629F403214C48871DA8" + { + "Name" = "8:CommonClassv2.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:CommonClassv2.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_A351B04DC14A1147A0AB026F84023CA7" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:C1.Win.4, Version=4.0.20171.248, Culture=neutral, PublicKeyToken=944ae1ea0e47ca04, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_A351B04DC14A1147A0AB026F84023CA7" + { + "Name" = "8:C1.Win.4.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:C1.Win.4.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_AFAC776AE119E0BFC9E6DB5359F92516" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:FarPoint.Win.Chart, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_AFAC776AE119E0BFC9E6DB5359F92516" + { + "Name" = "8:FarPoint.Win.Chart.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:FarPoint.Win.Chart.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_B80A4082DD862DD053BDB7F317DC29B6" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:FarPoint.Win, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_B80A4082DD862DD053BDB7F317DC29B6" + { + "Name" = "8:FarPoint.Win.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:FarPoint.Win.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_C853E0C84DEF9EA84A03A3A34D1D8D3D" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:FarPoint.PluginCalendar.WinForms, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_C853E0C84DEF9EA84A03A3A34D1D8D3D" + { + "Name" = "8:FarPoint.PluginCalendar.WinForms.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:FarPoint.PluginCalendar.WinForms.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_D5BDAE8971A72652E5D87B7F0505ED8E" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:FarPoint.PDF, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_D5BDAE8971A72652E5D87B7F0505ED8E" + { + "Name" = "8:FarPoint.PDF.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:FarPoint.PDF.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_DA4DC68F42EC38EDABA7C3392E0126C7" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:C1.Win.C1Ribbon.4, Version=4.0.20171.248, Culture=neutral, PublicKeyToken=79882d576c6336da, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_DA4DC68F42EC38EDABA7C3392E0126C7" + { + "Name" = "8:C1.Win.C1Ribbon.4.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:C1.Win.C1Ribbon.4.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_DDF65948A7E7D9A59EE23F029F5676CF" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:FarPoint.Excel, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_DDF65948A7E7D9A59EE23F029F5676CF" + { + "Name" = "8:FarPoint.Excel.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:FarPoint.Excel.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F431995862C0F5BD09455462CE7F8A93" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:FarPoint.Win.Spread, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_F431995862C0F5BD09455462CE7F8A93" + { + "Name" = "8:FarPoint.Win.Spread.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:FarPoint.Win.Spread.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_3875127D6845408C93CA58333C249BA4" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_46FAE1C92F6240E883F8B7983F82AEF2" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_39304E02ABBC47708B42B0A0B2964B01" + { + "Name" = "8:해광기획" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_C89C5408EFD44750A7A0F55A433E1720" + "Folders" + { + } + } + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_EECE35A66DEC41D387A998BBDBDC7978" + { + "DefaultLocation" = "8:c:\\해광기획\\파일명관리자" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1042" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:파일명 관리자" + "ProductCode" = "8:{BA47AF81-2610-4194-87E6-340E86B522F1}" + "PackageCode" = "8:{E2690027-67D2-4298-A645-90161E8563EB}" + "UpgradeCode" = "8:{94790222-C9E4-404E-8F83-4554D5B6F6C0}" + "AspNetVersion" = "8:4.0.30319.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:FALSE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:TRUE" + "ProductVersion" = "8:1.0.0" + "Manufacturer" = "8:해광기획" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:파일명관리자" + "Subject" = "8:파일명관리자" + "ARPCONTACT" = "8:해광기획" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:파일명관리자" + "ARPURLINFOABOUT" = "8:http://haegwang.co.kr" + "ARPPRODUCTICON" = "8:_0C4A78087D164A02B2A4BF00FA492007" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_F0DCF8508B7E466E9891B931ABCA998C" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_81925F90AE434729BAA3A48313741D0B" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_F99918962632490F88041DCC2EF79124" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_2B0E5600D3804A05BF1598F0B58A1DB9" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_3BE754BB321249C9B408402ACFB196B0" + { + "Name" = "8:파일명 관리자" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_F348CEA4150043899391F5791D5F1B19" + "Folder" = "8:_3875127D6845408C93CA58333C249BA4" + "WorkingFolder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Icon" = "8:_0C4A78087D164A02B2A4BF00FA492007" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_D4775F9BBB5549DFA79743B4A8FA2ACB" + { + "Name" = "8:파일명 관리자" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_F348CEA4150043899391F5791D5F1B19" + "Folder" = "8:_39304E02ABBC47708B42B0A0B2964B01" + "WorkingFolder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Icon" = "8:_0C4A78087D164A02B2A4BF00FA492007" + "Feature" = "8:" + } + } + "UserInterface" + { + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_0DC5CE3112C2463B9624A7F2CD84D02B" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C20AF715F7CE4841B33C5EE6D9C8B1C9" + { + "Sequence" = "3:100" + "DisplayName" = "8:마침" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_340C7028FE1B440184EE1692BC805BBF" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_7B722F04D32844BBBFD498327D53F061" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_41F086CF62E047A5AEE19CB5BC7F8627" + { + "Sequence" = "3:100" + "DisplayName" = "8:진행률" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8107B5C0B383430E857F039EB955CB19" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2C26EB0655D74530941E2C6A32C15687" + { + "Sequence" = "3:100" + "DisplayName" = "8:진행률" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8F361B79335946D89F6C7EB5F6748296" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_84D2F934026D4230B25B459A79A1C69E" + { + "Sequence" = "3:100" + "DisplayName" = "8:마침" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_9EE927C4DC2648D59B86E06E50818508" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_B5C91B369E98401DA5C769A46ADC7F52" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_7714D217B7FA4570B065C8C667EAD8C8" + { + "Sequence" = "3:100" + "DisplayName" = "8:환영" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8F7079E688F7451EB0B9F4BD27886C0D" + { + "Sequence" = "3:200" + "DisplayName" = "8:설치 폴더" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_AAF90B4ED75A44D488C1E3B821849BE9" + { + "Sequence" = "3:300" + "DisplayName" = "8:설치 확인" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_FEF674F1DACE4833871A5E78418D2109" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8F3F497A27AD4D72874DA3CFE571175E" + { + "Sequence" = "3:100" + "DisplayName" = "8:환영" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_96EE36585BC541548FA7D6ACA3D0876F" + { + "Sequence" = "3:300" + "DisplayName" = "8:설치 확인" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_B35E444FBC6547689DF9788B0031C53B" + { + "Sequence" = "3:200" + "DisplayName" = "8:설치 폴더" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_F348CEA4150043899391F5791D5F1B19" + { + "SourcePath" = "8:..\\DriveInfo\\obj\\Debug\\FileManager.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_EECE35A66DEC41D387A998BBDBDC7978" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{FEDED234-344B-4151-BBC5-67F1F5467C18}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} diff --git a/[NET2]ArinLog/ArinLog.sln b/[NET2]ArinLog/ArinLog.sln new file mode 100644 index 0000000..7f00f72 --- /dev/null +++ b/[NET2]ArinLog/ArinLog.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ArinLog", "ArinLog.vbproj", "{E9E16A98-8F8D-4848-A27E-4571C184FB1A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/[NET2]ArinLog/ArinLog.suo b/[NET2]ArinLog/ArinLog.suo new file mode 100644 index 0000000..75382ab Binary files /dev/null and b/[NET2]ArinLog/ArinLog.suo differ diff --git a/[NET2]ArinLog/ArinLog.vbproj b/[NET2]ArinLog/ArinLog.vbproj new file mode 100644 index 0000000..ce5365d --- /dev/null +++ b/[NET2]ArinLog/ArinLog.vbproj @@ -0,0 +1,107 @@ + + + + Debug + AnyCPU + + + + + {E9E16A98-8F8D-4848-A27E-4571C184FB1A} + Library + ArinLog + ArinLog + 512 + Windows + v4.0 + + + + true + full + true + true + bin\Debug\ + ArinLog.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + x86 + + + pdbonly + false + true + true + bin\Release\ + ArinLog.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + + + + + + + + + + + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + \ No newline at end of file diff --git a/[NET2]ArinLog/Class1.vb b/[NET2]ArinLog/Class1.vb new file mode 100644 index 0000000..569ea20 --- /dev/null +++ b/[NET2]ArinLog/Class1.vb @@ -0,0 +1,91 @@ +Public Class ArinLog + + Dim file As System.IO.FileInfo + Dim buffer As System.Text.StringBuilder + Dim Datatable As DataTable + Public Event RaiseMsg(time As String, gubun As String, msg As String) + + Public Enum ETYPE + STARTUP + SHUTDOWN + [ERROR] + NORMAL + TCP + KEYBOARD + MOUSE + PROCESS + USERCONTROL + BARCODE + VISION + PRINTER + OCR + OCRERROR + MOTION + SQL + RS232 + End Enum + + Dim setdate As String = "" + Public FlushTime As Date = Now '//실기록완료한시간 + + Public Function GetBuffer() As String + Return buffer.ToString + End Function + + Public Sub New() + setdate = Now.ToString("yyMMdd") + Me.file = New System.IO.FileInfo(My.Application.Info.DirectoryPath & "\LOG\" & setdate & ".txt") + If file.Directory.Exists = False Then file.Directory.Create() + buffer = New System.Text.StringBuilder + + Datatable = New DataTable + Datatable.Columns.Add("시간") + Datatable.Columns.Add("형태") + Datatable.Columns.Add("메세지") + End Sub + Public Sub Add(bodymsg As String, Optional autof As Boolean = False) + Add(ETYPE.NORMAL, bodymsg, autof) + End Sub + Public Sub Add(TYPE As ETYPE, bodymsg As String, Optional autof As Boolean = False) + Add(TYPE.ToString(), bodymsg, autof) + End Sub + + Public Sub Add(TYPE As String, bodymsg As String, Optional autof As Boolean = False) + If setdate <> Now.ToString("yyMMdd") Then '//날짜가 달라지면 파일을 변경한다. + Flush() + setdate = Now.ToString("yyMMdd") + Me.file = New System.IO.FileInfo(My.Application.Info.DirectoryPath & "\LOG\" & setdate & ".txt") + End If + + Dim nowdate As Date = Now + Dim m As String = nowdate.ToString("yy-MM-dd HH:mm:ss") & "." & nowdate.Millisecond.ToString("000") & vbTab & TYPE.ToString.PadRight(20) & vbTab & bodymsg + buffer.AppendLine(m) + If autof OrElse buffer.Length > 100 OrElse TYPE = "ERROR Then '//에러발생시에는 바로 플러싱" Then + Flush() + End If + + '//메세지발생함 + RaiseEvent RaiseMsg(nowdate.ToString("yy-MM-dd HH:mm:ss") & "." & nowdate.Millisecond.ToString("000"), TYPE, bodymsg) + End Sub + + + Public Function Flush() As Boolean + Try + My.Computer.FileSystem.WriteAllText(file.ToString, buffer.ToString, True) + buffer = New System.Text.StringBuilder + FlushTime = Now + Return True + Catch ex As Exception + Return False + End Try + + End Function + + Public Overrides Function toString() As String + Try + Return My.Computer.FileSystem.ReadAllText(file.FullName) + Catch ex As Exception + Return "" + End Try + End Function +End Class \ No newline at end of file diff --git a/[NET2]ArinLog/My Project/Application.Designer.vb b/[NET2]ArinLog/My Project/Application.Designer.vb new file mode 100644 index 0000000..c33da88 --- /dev/null +++ b/[NET2]ArinLog/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' 이 코드는 도구를 사용하여 생성되었습니다. +' 런타임 버전:4.0.30319.42000 +' +' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +' 이러한 변경 내용이 손실됩니다. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/[NET2]ArinLog/My Project/Application.myapp b/[NET2]ArinLog/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/[NET2]ArinLog/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/[NET2]ArinLog/My Project/AssemblyInfo.vb b/[NET2]ArinLog/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..de57f35 --- /dev/null +++ b/[NET2]ArinLog/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다. +' 어셈블리와 관련된 정보를 수정하려면 +' 이 특성 값을 변경하십시오. + +' 어셈블리 특성 값을 검토합니다. + + + + + + + + + + +'이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. + + +' 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +' +' 주 버전 +' 부 버전 +' 빌드 번호 +' 수정 버전 +' +' 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로 +' 지정되도록 할 수 있습니다. +' + + + diff --git a/[NET2]ArinLog/My Project/Resources.Designer.vb b/[NET2]ArinLog/My Project/Resources.Designer.vb new file mode 100644 index 0000000..ba07045 --- /dev/null +++ b/[NET2]ArinLog/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' 이 코드는 도구를 사용하여 생성되었습니다. +' 런타임 버전:4.0.30319.42000 +' +' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +' 이러한 변경 내용이 손실됩니다. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + '이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + '클래스에서 자동으로 생성되었습니다. + '멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을 + '다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + ''' + ''' 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. + ''' + _ + 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("ArinLog.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대한 현재 스레드의 CurrentUICulture + ''' 속성을 재정의합니다. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/[NET2]ArinLog/My Project/Resources.resx b/[NET2]ArinLog/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/[NET2]ArinLog/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/[NET2]ArinLog/My Project/Settings.Designer.vb b/[NET2]ArinLog/My Project/Settings.Designer.vb new file mode 100644 index 0000000..fe10e34 --- /dev/null +++ b/[NET2]ArinLog/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' 이 코드는 도구를 사용하여 생성되었습니다. +' 런타임 버전:4.0.30319.42000 +' +' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +' 이러한 변경 내용이 손실됩니다. +' +'------------------------------------------------------------------------------ + +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 자동 저장 기능" +#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.ArinLog.My.MySettings + Get + Return Global.ArinLog.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/[NET2]ArinLog/My Project/Settings.settings b/[NET2]ArinLog/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/[NET2]ArinLog/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/[NET2]ArinSetting/ArinSetting.sln b/[NET2]ArinSetting/ArinSetting.sln new file mode 100644 index 0000000..a3407ff --- /dev/null +++ b/[NET2]ArinSetting/ArinSetting.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ArinSetting", "ArinSetting.vbproj", "{631388D0-FADF-4C02-9536-A33E1C40F91D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {631388D0-FADF-4C02-9536-A33E1C40F91D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {631388D0-FADF-4C02-9536-A33E1C40F91D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/[NET2]ArinSetting/ArinSetting.suo b/[NET2]ArinSetting/ArinSetting.suo new file mode 100644 index 0000000..00a46c5 Binary files /dev/null and b/[NET2]ArinSetting/ArinSetting.suo differ diff --git a/[NET2]ArinSetting/ArinSetting.vbproj b/[NET2]ArinSetting/ArinSetting.vbproj new file mode 100644 index 0000000..d48deb4 --- /dev/null +++ b/[NET2]ArinSetting/ArinSetting.vbproj @@ -0,0 +1,107 @@ + + + + Debug + AnyCPU + + + + + {631388D0-FADF-4C02-9536-A33E1C40F91D} + Library + ArinSetting + ArinSetting + 512 + Windows + v4.0 + + + + true + full + true + true + bin\Debug\ + ArinSetting.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + x86 + + + pdbonly + false + true + true + bin\Release\ + ArinSetting.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + + + + + + + + + + + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + \ No newline at end of file diff --git a/[NET2]ArinSetting/Class1.vb b/[NET2]ArinSetting/Class1.vb new file mode 100644 index 0000000..020a2ad --- /dev/null +++ b/[NET2]ArinSetting/Class1.vb @@ -0,0 +1,175 @@ +Imports System.Xml + +Public Class ArinSetting + + Private File As String + Private vDocu As XmlDocument = Nothing + Private nsmgr As XmlNamespaceManager + Public Root As XmlElement + + Public ReadOnly Property Docu() As XmlDocument + Get + Return Me.vDocu + End Get + End Property + + Public Sub New(ByVal Filename As String) + Me.File = Filename + If Exist() Then '//파일이 존재하면 도큐먼트반환 + Me.vDocu = New XmlDocument + nsmgr = New XmlNamespaceManager(New Xml.NameTable) + nsmgr.AddNamespace("x", "http://tindevil.com") + Try + Me.vDocu.Load(Filename) + Root = vDocu.DocumentElement + Catch ex As Exception + Me.vDocu = Nothing + Me.Root = Nothing + End Try + Autoflush = False + Else + 'Dim m As String = "지정된 설정파일(" + Filename + ") 이 없으므로 새로 생성합니다" + 'MsgBox(m, MsgBoxStyle.Information, "확인") + CreateFile() + End If + End Sub + + ''' + ''' '파일명이 없는경우 현재 실행폴더에 Setting.xml 이 작성됩니다" + ''' + ''' + Public Sub New() + Me.New(My.Application.Info.DirectoryPath & "\Setting.xml") + End Sub + + Public Sub New(ByVal docu As Xml.XmlDocument) + Me.vDocu = docu + Me.File = My.Application.Info.DirectoryPath & "\temp.xml" + nsmgr = New XmlNamespaceManager(New Xml.NameTable) + nsmgr.AddNamespace("x", "http://tindevil.com") + Root = vDocu.DocumentElement + Autoflush = False + End Sub + + ''' + ''' 파일존재여부 + ''' + ''' + ''' + Public Function Exist() As Boolean + If Not vDocu Is Nothing Then Return True + Return System.IO.File.Exists(Me.File) + End Function + + Public Sub CreateFile() + '//주어진파일명으로 기본파일을 생성한다. + Dim NewXml As New System.Text.StringBuilder + NewXml.AppendLine("") + NewXml.AppendLine(" ") + NewXml.AppendLine("") + If System.IO.File.Exists(Me.File) Then System.IO.File.Delete(Me.File) + My.Computer.FileSystem.WriteAllText(Me.File, NewXml.ToString.Replace("'", Chr(&H22)), False) + Me.vDocu = New XmlDocument + Me.vDocu.Load(Me.File) + nsmgr = New XmlNamespaceManager(New Xml.NameTable) + nsmgr.AddNamespace("x", "http://tindevil.com") + Root = vDocu.DocumentElement + End Sub + + Public Function Read(ByVal appkey As String, ByVal subkey As String, Optional ByVal defaltvalue As String = "", Optional ByVal Nullvalue As String = "") As String '//변수초기화 + '//파일이없을경우 빈값을 반환합니다. + If Exist() = False Then Return "" + Dim L As XmlElement = Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다. + If L Is Nothing Then Return "" + Dim C As XmlElement = L.SelectSingleNode(subkey, nsmgr) + If C Is Nothing Then Return "" + Return C.InnerText + End Function + + Public Function Get_NameSpace() As XmlNamespaceManager + Return Me.nsmgr + End Function + Public Function NS() As XmlNamespaceManager + Return Me.nsmgr + End Function + + Public Function CreateElement(ByVal name As String) As XmlElement + Return Me.Docu.CreateElement(name, Me.NS.DefaultNamespace) + End Function + Public Function GetNode(ByVal appkey As String) As XmlElement + '//파일이없을경우 빈값을 반환합니다. + If Docu Is Nothing Then Return Nothing + Return Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다. + End Function + Public Function GetNodes(ByVal appkey As String) As Xml.XmlNodeList + '//파일이없을경우 빈값을 반환합니다. + If Docu Is Nothing Then Return Nothing + Dim L As XmlNodeList = Me.Root.SelectNodes(appkey, nsmgr) '//appkey를 먼저 조회한다. + Return L + End Function + + Private _autoflush As Boolean = True + Property Autoflush As Boolean + Get + Return _autoflush + End Get + Set(value As Boolean) + _autoflush = value + End Set + End Property + + Public WriteOnly Property [Set](subkey As String) As String + Set(value As String) + Data(subkey) = value + End Set + End Property + + + Public Property Data(ByVal appkey As String, ByVal subkey As String, Optional ByVal defaltvalue As Object = "") As String + Get + '//파일이없을경우 빈값을 반환합니다. + If Exist() = False Then Return defaltvalue + Dim L As XmlElement = Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다. + If L Is Nothing Then Return defaltvalue + Dim C As XmlElement = L.SelectSingleNode(subkey, nsmgr) + If C Is Nothing Then Return defaltvalue + Return C.InnerText + End Get + Set(ByVal value As String) + '//파일이없을경우 빈값을 반환합니다. + If Exist() = False Then Return + Dim L As XmlElement = Me.Root.SelectSingleNode(appkey, nsmgr) '//appkey를 먼저 조회한다. + If L Is Nothing Then '//만들어야한다. + L = Me.Docu.CreateElement(appkey) + Me.Root.AppendChild(L) + End If + Dim C As XmlElement = L.SelectSingleNode(subkey, nsmgr) + If C Is Nothing Then '//만들어야한다. + C = Me.Docu.CreateElement(subkey) + C.InnerText = value + L.AppendChild(C) + Else + C.InnerText = value + End If + If Autoflush Then Me.Docu.Save(Me.File) + 'MsgBox(value) + End Set + End Property + + Public Property Data(ByVal subkey As String) As String + Get + Return Data("userdata", subkey) + End Get + Set(ByVal value As String) + Data("userdata", subkey) = value + End Set + End Property + + Public Sub Save() + Me.Docu.Save(Me.File) + End Sub + + +End Class + + diff --git a/[NET2]ArinSetting/My Project/Application.Designer.vb b/[NET2]ArinSetting/My Project/Application.Designer.vb new file mode 100644 index 0000000..c33da88 --- /dev/null +++ b/[NET2]ArinSetting/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' 이 코드는 도구를 사용하여 생성되었습니다. +' 런타임 버전:4.0.30319.42000 +' +' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +' 이러한 변경 내용이 손실됩니다. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/[NET2]ArinSetting/My Project/Application.myapp b/[NET2]ArinSetting/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/[NET2]ArinSetting/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/[NET2]ArinSetting/My Project/AssemblyInfo.vb b/[NET2]ArinSetting/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..f72e9dc --- /dev/null +++ b/[NET2]ArinSetting/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다. +' 어셈블리와 관련된 정보를 수정하려면 +' 이 특성 값을 변경하십시오. + +' 어셈블리 특성 값을 검토합니다. + + + + + + + + + + +'이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. + + +' 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +' +' 주 버전 +' 부 버전 +' 빌드 번호 +' 수정 버전 +' +' 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로 +' 지정되도록 할 수 있습니다. +' + + + diff --git a/[NET2]ArinSetting/My Project/Resources.Designer.vb b/[NET2]ArinSetting/My Project/Resources.Designer.vb new file mode 100644 index 0000000..5c1df14 --- /dev/null +++ b/[NET2]ArinSetting/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' 이 코드는 도구를 사용하여 생성되었습니다. +' 런타임 버전:4.0.30319.42000 +' +' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +' 이러한 변경 내용이 손실됩니다. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + '이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + '클래스에서 자동으로 생성되었습니다. + '멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을 + '다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + ''' + ''' 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. + ''' + _ + 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("ArinSetting.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대한 현재 스레드의 CurrentUICulture + ''' 속성을 재정의합니다. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/[NET2]ArinSetting/My Project/Resources.resx b/[NET2]ArinSetting/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/[NET2]ArinSetting/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/[NET2]ArinSetting/My Project/Settings.Designer.vb b/[NET2]ArinSetting/My Project/Settings.Designer.vb new file mode 100644 index 0000000..4c82f37 --- /dev/null +++ b/[NET2]ArinSetting/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' 이 코드는 도구를 사용하여 생성되었습니다. +' 런타임 버전:4.0.30319.42000 +' +' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +' 이러한 변경 내용이 손실됩니다. +' +'------------------------------------------------------------------------------ + +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 자동 저장 기능" +#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.ArinSetting.My.MySettings + Get + Return Global.ArinSetting.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/[NET2]ArinSetting/My Project/Settings.settings b/[NET2]ArinSetting/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/[NET2]ArinSetting/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ribbonMenu_160717.xml b/ribbonMenu_160717.xml new file mode 100644 index 0000000..82dd9c9 --- /dev/null +++ b/ribbonMenu_160717.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + +