FileManager_Runtime_1704102200_Net4

This commit is contained in:
Chikyun
2019-08-04 20:13:56 +09:00
commit 6b10d3e460
100 changed files with 16893 additions and 0 deletions

BIN
CommonClassv2.dll Normal file

Binary file not shown.

89
DriveInfo.sln Normal file
View File

@@ -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

BIN
DriveInfo.suo Normal file

Binary file not shown.

1992
DriveInfo/DataSet/ireaDataSet.Designer.vb generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings>
</TableUISettings>
</DataSetUISetting>

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="ireaDataSet" targetNamespace="http://tempuri.org/ireaDataSet.xsd" xmlns:mstns="http://tempuri.org/ireaDataSet.xsd" xmlns="http://tempuri.org/ireaDataSet.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
<Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="ireaConnectionString" IsAppSettingsProperty="True" Modifier="Assembly" Name="ireaConnectionString (Settings)" PropertyReference="ApplicationSettings.FileManager.Settings.GlobalReference.Default.ireaConnectionString" Provider="System.Data.OleDb">
</Connection>
</Connections>
<Tables>
</Tables>
<Sources>
</Sources>
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="ireaDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="ireaDataSet" msprop:Generator_DataSetName="ireaDataSet">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="FileList" msprop:Generator_UserTableName="FileList" msprop:Generator_RowDeletedName="FileListRowDeleted" msprop:Generator_RowChangedName="FileListRowChanged" msprop:Generator_RowClassName="FileListRow" msprop:Generator_RowChangingName="FileListRowChanging" msprop:Generator_RowEvArgName="FileListRowChangeEvent" msprop:Generator_RowEvHandlerName="FileListRowChangeEventHandler" msprop:Generator_TableClassName="FileListDataTable" msprop:Generator_TableVarName="tableFileList" msprop:Generator_RowDeletingName="FileListRowDeleting" msprop:Generator_TablePropName="FileList">
<xs:complexType>
<xs:sequence>
<xs:element name="경로" msprop:Generator_UserColumnName="경로" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="경로" msprop:Generator_ColumnPropNameInTable="경로Column" msprop:Generator_ColumnVarNameInTable="column경로" type="xs:string" minOccurs="0" />
<xs:element name="파일명" msprop:Generator_UserColumnName="파일명" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="파일명" msprop:Generator_ColumnPropNameInTable="파일명Column" msprop:Generator_ColumnVarNameInTable="column파일명" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SrcList" msprop:Generator_UserTableName="SrcList" msprop:Generator_RowDeletedName="SrcListRowDeleted" msprop:Generator_RowChangedName="SrcListRowChanged" msprop:Generator_RowClassName="SrcListRow" msprop:Generator_RowChangingName="SrcListRowChanging" msprop:Generator_RowEvArgName="SrcListRowChangeEvent" msprop:Generator_RowEvHandlerName="SrcListRowChangeEventHandler" msprop:Generator_TableClassName="SrcListDataTable" msprop:Generator_TableVarName="tableSrcList" msprop:Generator_RowDeletingName="SrcListRowDeleting" msprop:Generator_TablePropName="SrcList">
<xs:complexType>
<xs:sequence>
<xs:element name="목록명" msprop:Generator_UserColumnName="목록명" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="목록명" msprop:Generator_ColumnPropNameInTable="목록명Column" msprop:Generator_ColumnVarNameInTable="column목록명" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="WorkList" msprop:Generator_UserTableName="WorkList" msprop:Generator_RowDeletedName="WorkListRowDeleted" msprop:Generator_RowChangedName="WorkListRowChanged" msprop:Generator_RowClassName="WorkListRow" msprop:Generator_RowChangingName="WorkListRowChanging" msprop:Generator_RowEvArgName="WorkListRowChangeEvent" msprop:Generator_RowEvHandlerName="WorkListRowChangeEventHandler" msprop:Generator_TableClassName="WorkListDataTable" msprop:Generator_TableVarName="tableWorkList" msprop:Generator_RowDeletingName="WorkListRowDeleting" msprop:Generator_TablePropName="WorkList">
<xs:complexType>
<xs:sequence>
<xs:element name="원본경로" msprop:Generator_UserColumnName="원본경로" msprop:nullValue="_empty" msprop:Generator_ColumnVarNameInTable="column원본경로" msprop:Generator_ColumnPropNameInTable="원본경로Column" msprop:Generator_ColumnPropNameInRow="원본경로" type="xs:string" default="" minOccurs="0" />
<xs:element name="원본파일명" msprop:Generator_UserColumnName="원본파일명" msprop:nullValue="_empty" msprop:Generator_ColumnVarNameInTable="column원본파일명" msprop:Generator_ColumnPropNameInTable="원본파일명Column" msprop:Generator_ColumnPropNameInRow="원본파일명" type="xs:string" default="" minOccurs="0" />
<xs:element name="대상경로" msprop:Generator_UserColumnName="대상경로" msprop:nullValue="_empty" msprop:Generator_ColumnVarNameInTable="column대상경로" msprop:Generator_ColumnPropNameInTable="대상경로Column" msprop:Generator_ColumnPropNameInRow="대상경로" type="xs:string" default="" />
<xs:element name="대상파일명" msprop:Generator_UserColumnName="대상파일명" msprop:nullValue="_empty" msprop:Generator_ColumnVarNameInTable="column대상파일명" msprop:Generator_ColumnPropNameInTable="대상파일명Column" msprop:Generator_ColumnPropNameInRow="대상파일명" type="xs:string" default="" />
<xs:element name="구분" msprop:Generator_UserColumnName="구분" msprop:nullValue="_empty" msprop:Generator_ColumnVarNameInTable="column구분" msprop:Generator_ColumnPropNameInTable="구분Column" msprop:Generator_ColumnPropNameInRow="구분" type="xs:string" default="" minOccurs="0" />
<xs:element name="성공" msprop:Generator_UserColumnName="성공" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="성공" msprop:Generator_ColumnPropNameInTable="성공Column" msprop:Generator_ColumnVarNameInTable="column성공" type="xs:string" default="" minOccurs="0" />
<xs:element name="오류" msprop:Generator_UserColumnName="오류" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="오류" msprop:Generator_ColumnPropNameInTable="오류Column" msprop:Generator_ColumnVarNameInTable="column오류" type="xs:string" default="" />
<xs:element name="seq" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_UserColumnName="seq" msprop:Generator_ColumnVarNameInTable="columnseq" msprop:Generator_ColumnPropNameInRow="seq" msprop:Generator_ColumnPropNameInTable="seqColumn" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="subdir" msprop:Generator_UserTableName="subdir" msprop:Generator_RowDeletedName="subdirRowDeleted" msprop:Generator_RowChangedName="subdirRowChanged" msprop:Generator_RowClassName="subdirRow" msprop:Generator_RowChangingName="subdirRowChanging" msprop:Generator_RowEvArgName="subdirRowChangeEvent" msprop:Generator_RowEvHandlerName="subdirRowChangeEventHandler" msprop:Generator_TableClassName="subdirDataTable" msprop:Generator_TableVarName="tablesubdir" msprop:Generator_RowDeletingName="subdirRowDeleting" msprop:Generator_TablePropName="subdir">
<xs:complexType>
<xs:sequence>
<xs:element name="경로명" msprop:Generator_UserColumnName="경로명" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="경로명" msprop:Generator_ColumnPropNameInTable="경로명Column" msprop:Generator_ColumnVarNameInTable="column경로명" default="">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:WorkList" />
<xs:field xpath="mstns:대상경로" />
<xs:field xpath="mstns:대상파일명" />
<xs:field xpath="mstns:오류" />
</xs:unique>
<xs:unique name="subdir_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:subdir" />
<xs:field xpath="mstns:경로명" />
</xs:unique>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="-10" ViewPortY="-10" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:subdir" ZOrder="1" X="535" Y="34" Height="48" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="92" />
<Shape ID="DesignTable:FileList" ZOrder="4" X="39" Y="26" Height="277" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="273" />
<Shape ID="DesignTable:SrcList" ZOrder="3" X="195" Y="26" Height="258" Width="149" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:WorkList" ZOrder="2" X="358" Y="28" Height="296" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="292" />
</Shapes>
<Connectors />
</DiagramLayout>

307
DriveInfo/DriveInfo.vbproj Normal file
View File

@@ -0,0 +1,307 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{FEDED234-344B-4151-BBC5-67F1F5467C18}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>FileManager.My.MyApplication</StartupObject>
<RootNamespace>FileManager</RootNamespace>
<AssemblyName>FileManager</AssemblyName>
<MyType>WindowsForms</MyType>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>3.5</OldToolsVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile />
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>D:\Tinsky\Visual Basic For IREA\Runtime\Setup_FileManager_170402_0100\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<SupportUrl>http://tindevil.com</SupportUrl>
<ProductName>파일명관리자</ProductName>
<PublisherName>SIMP</PublisherName>
<AutorunEnabled>true</AutorunEnabled>
<TrustUrlParameters>true</TrustUrlParameters>
<ApplicationRevision>2</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
<BootstrapperComponentsLocation>Relative</BootstrapperComponentsLocation>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>..\..\Runtime\FileManager\</OutputPath>
<DocumentationFile>
</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,42353,42354,42355</NoWarn>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>..\..\Runtime\FileManager\</OutputPath>
<DocumentationFile>
</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,42353,42354,42355</NoWarn>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Folder.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>true</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>My Project\app.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup>
<SignManifests>false</SignManifests>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>F2FEEBAFF25D2E024AFE5812C23EFE0EBB084EFC</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>DriveInfo_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="C1.Win.4, Version=4.0.20171.248, Culture=neutral, PublicKeyToken=944ae1ea0e47ca04" />
<Reference Include="C1.Win.C1Ribbon.4, Version=4.0.20171.248, Culture=neutral, PublicKeyToken=79882d576c6336da, processorArchitecture=MSIL" />
<Reference Include="CommonClassv2">
<HintPath>..\CommonClassv2.dll</HintPath>
</Reference>
<Reference Include="FarPoint.CalcEngine, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457" />
<Reference Include="FarPoint.Excel, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457" />
<Reference Include="FarPoint.PDF, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457" />
<Reference Include="FarPoint.PluginCalendar.WinForms, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457" />
<Reference Include="FarPoint.Win, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457" />
<Reference Include="FarPoint.Win.Chart, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457" />
<Reference Include="FarPoint.Win.Spread, Version=5.0.3518.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457, processorArchitecture=MSIL" />
<Reference Include="stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\Windows\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.IO" />
<Import Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="DataSet\ireaDataSet.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>ireaDataSet.xsd</DependentUpon>
</Compile>
<Compile Include="fFtpPath.Designer.vb">
<DependentUpon>fFtpPath.vb</DependentUpon>
</Compile>
<Compile Include="fFtpPath.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="모듈\Job.vb" />
<Compile Include="모듈\Mod_Backup.vb" />
<Compile Include="모듈\Pub.vb" />
<Compile Include="모듈\mod_Delete.vb" />
<Compile Include="모듈\Mod_Move.vb" />
<Compile Include="입력폼\Form_Status.Designer.vb">
<DependentUpon>Form_Status.vb</DependentUpon>
</Compile>
<Compile Include="입력폼\Form_Status.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="입력폼\Frm_FileInfo.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="입력폼\Frm_FileInfo.Designer.vb">
<DependentUpon>Frm_FileInfo.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="입력폼\Frm_DeleteFile.Designer.vb">
<DependentUpon>Frm_DeleteFile.vb</DependentUpon>
</Compile>
<Compile Include="입력폼\Frm_DeleteFile.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="입력폼\Frm_RenameFile.Designer.vb">
<DependentUpon>Frm_RenameFile.vb</DependentUpon>
</Compile>
<Compile Include="입력폼\Frm_RenameFile.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="컨트롤\ImpCtl.Designer.vb">
<DependentUpon>ImpCtl.vb</DependentUpon>
</Compile>
<Compile Include="컨트롤\ImpCtl.vb">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="MDiMain.Designer.vb">
<DependentUpon>MDiMain.vb</DependentUpon>
</Compile>
<Compile Include="MDiMain.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="My Project\ApplicationEvents.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="fFtpPath.resx">
<DependentUpon>fFtpPath.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="입력폼\Form_Status.resx">
<SubType>Designer</SubType>
<DependentUpon>Form_Status.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="입력폼\Frm_DeleteFile.resx">
<SubType>Designer</SubType>
<DependentUpon>Frm_DeleteFile.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="입력폼\Frm_FileInfo.resx">
<DependentUpon>Frm_FileInfo.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="컨트롤\ImpCtl.resx">
<SubType>Designer</SubType>
<DependentUpon>ImpCtl.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MDiMain.resx">
<SubType>Designer</SubType>
<DependentUpon>MDiMain.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\licenses.licx" />
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="DriveInfo_TemporaryKey.pfx" />
<None Include="My Project\app.manifest" />
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="Flag 2-64.png.ico" />
<Content Include="Folder.ico" />
<Content Include="irea.mdb">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="ReadMe.htm" />
<Content Include="ReadMe.txt" />
<None Include="Resources\opts_16.png" />
<None Include="Resources\foldr_16.png" />
<None Include="app.config" />
<None Include="DataSet\ireaDataSet.xsc">
<DependentUpon>ireaDataSet.xsd</DependentUpon>
</None>
<None Include="DataSet\ireaDataSet.xsd">
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>ireaDataSet.Designer.vb</LastGenOutput>
<SubType>Designer</SubType>
</None>
<None Include="DataSet\ireaDataSet.xss">
<DependentUpon>ireaDataSet.xsd</DependentUpon>
</None>
<None Include="Resources\srch_32.png" />
<None Include="Resources\splay_32.png" />
<None Include="Resources\Accessibility.png" />
<None Include="Resources\go_32.png" />
<None Include="Resources\save_24.png" />
<None Include="Resources\hd_24.png" />
<None Include="Resources\play_321.png" />
<None Include="Resources\stop_16.png" />
<None Include="Resources\impt_32.png" />
<None Include="Resources\play_32.png" />
<None Include="Resources\opts_24.png" />
<None Include="Resources\apps_16.png" />
<None Include="Resources\remov_16.png" />
</ItemGroup>
<ItemGroup>
<Folder Include="클래스\" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0.SP2">
<Visible>False</Visible>
<ProductName>.NET Framework 2.0 SP2</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FTP_Client\FTP_Client.csproj">
<Project>{9A2A1B46-799E-4D8E-8682-1F82963836A3}</Project>
<Name>FTP_Client</Name>
</ProjectReference>
<ProjectReference Include="..\[NET2]ArinLog\ArinLog.vbproj">
<Project>{E9E16A98-8F8D-4848-A27E-4571C184FB1A}</Project>
<Name>ArinLog</Name>
</ProjectReference>
<ProjectReference Include="..\[NET2]ArinSetting\ArinSetting.vbproj">
<Project>{631388D0-FADF-4C02-9536-A33E1C40F91D}</Project>
<Name>ArinSetting</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
</Project>

BIN
DriveInfo/Flag 2-64.png.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
DriveInfo/Folder.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

111
DriveInfo/Form1.Designer.vb generated Normal file
View File

@@ -0,0 +1,111 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
<System.Diagnostics.DebuggerNonUserCode()> _
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 디자이너를 사용하십시오.
'코드 편집기를 사용하여 수정하지 마십시오.
<System.Diagnostics.DebuggerStepThrough()> _
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

120
DriveInfo/Form1.resx Normal file
View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

3
DriveInfo/Form1.vb Normal file
View File

@@ -0,0 +1,3 @@
Public Class Form1
End Class

29
DriveInfo/Form2.Designer.vb generated Normal file
View File

@@ -0,0 +1,29 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form2
Inherits System.Windows.Forms.Form
'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
<System.Diagnostics.DebuggerNonUserCode()> _
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 디자이너를 사용하십시오.
'코드 편집기를 사용하여 수정하지 마십시오.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
components = New System.ComponentModel.Container
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.Text = "Form2"
End Sub
End Class

3
DriveInfo/Form2.vb Normal file
View File

@@ -0,0 +1,3 @@
Public Class Form2
End Class

1798
DriveInfo/MDiMain.Designer.vb generated Normal file

File diff suppressed because it is too large Load Diff

268
DriveInfo/MDiMain.resx Normal file
View File

@@ -0,0 +1,268 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>709, 17</value>
</metadata>
<metadata name="Timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>802, 17</value>
</metadata>
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>892, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btAddSubDir.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="btDeleteSubDir.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABb0lEQVQ4T7WQTSjDYRzHd1XeSu3iglo5
IJO8hGQypLHIhMjMJAcOi4R2cXAg5UIOuEgOJCXlROI0b/Pamlp/LVLaBf+4PB9jqLW/seJ7eep5vt/P
7/v8VH8iXCfQbQTHDh9XkYmVeURnFcKsh631sBC8HliaCfawtgC9JkS7HtFRAXMTipC3hsJcBiM9oe+c
OgKQumxEYwHYmoJMYsiKMOXCpD1sQxWL04jK1HcQw1Zwn8FYfwDqPz9s4YXHBc3FgS8ZsxD1edDX8rvw
p9jf9VfOQxjSoUYbYfhGgsZCyElA1sbzoI2F2uxf1r+5BlM+FCXisxjg4uh9uXdpfsjy7A8LvL+DVh2P
JUm4S9Px7W1/BRi14dTEIJ8cKEN4eYZBC+iSOU5T49tYDTHelmcgtVUje69DIexuIueqcaZEIXU1gPyk
OGlHE4fsdCgApkaQUqNx6zNBulKu6Zds74bzQwXApRPGB+Bw79vwP0ilegWKIwMchCbSyQAAAABJRU5E
rkJggg==
</value>
</data>
<metadata name="src_view1_Sheet1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="ToolStrip3.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>164, 17</value>
</metadata>
<metadata name="ToolStrip4.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>273, 17</value>
</metadata>
<metadata name="DataSet1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>382, 17</value>
</metadata>
<metadata name="ToolStrip5.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>484, 17</value>
</metadata>
<data name="bt_run.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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==
</value>
</data>
<data name="btOpenFile.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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==
</value>
</data>
<data name="btMakeNewList.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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=
</value>
</data>
<data name="RibbonButton1.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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==
</value>
</data>
<data name="RibbonButton10.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<metadata name="NotifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>593, 17</value>
</metadata>
</root>

1418
DriveInfo/MDiMain.vb Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 이 코드는 도구를 사용하여 생성되었습니다.
' 런타임 버전:4.0.30319.42000
'
' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
' 이러한 변경 내용이 손실됩니다.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
'참고: 자동으로 생성되므로 직접 이 파일을 수정하지 마십시오. 변경할 사항이 있거나
' 파일에서 빌드 오류가 발생하는 경우 프로젝트 디자이너로
' 이동([프로젝트 속성]으로 이동하거나 솔루션 탐색기에서 My Project 노드를
' 두 번 클릭)한 다음 [응용 프로그램] 탭에서 변경하십시오.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
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
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.FileManager.MDiMain
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>MDiMain</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<SaveMySettingsOnExit>false</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,15 @@
Namespace My
' MyApplication에 대해 다음 이벤트를 사용할 수 있습니다.
'
' Startup: 응용 프로그램이 시작되고 시작 폼이 만들어지기 전에 발생합니다.
' Shutdown: 모든 응용 프로그램 폼이 닫힌 후에 발생합니다. 이 이벤트는 응용 프로그램이 비정상적으로 종료되는 경우에는 발생하지 않습니다.
' UnhandledException: 응용 프로그램에서 처리되지 않은 예외가 발생하는 경우 이 이벤트가 발생합니다.
' StartupNextInstance: 단일 인스턴스 응용 프로그램을 시작할 때 해당 응용 프로그램이 이미 활성 상태인 경우 발생합니다.
' NetworkAvailabilityChanged: 네트워크가 연결되거나 연결이 끊어질 때 발생합니다.
Partial Friend Class MyApplication
End Class
End Namespace

View File

@@ -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
<Assembly: AssemblyTitle("FileManager")>
<Assembly: AssemblyDescription("파일을 일괄로 삭제/이름변경/이동등을 할 수 있습니다.")>
<Assembly: AssemblyCompany("SIMP")>
<Assembly: AssemblyProduct("번호찰 사진파일 관리프로그램")>
<Assembly: AssemblyCopyright("Copyright 2008 Arin")>
<Assembly: AssemblyTrademark("ArinWare")>
<Assembly: CLSCompliant(True)>
<Assembly: ComVisible(False)>
'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("a97662dd-673f-4bba-b12d-f349de90ea74")>
' 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:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.2017.0410.2200")>
<Assembly: AssemblyFileVersion("1.2017.0410.2200")>

213
DriveInfo/My Project/Resources.Designer.vb generated Normal file
View File

@@ -0,0 +1,213 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 이 코드는 도구를 사용하여 생성되었습니다.
' 런타임 버전:4.0.30319.42000
'
' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
' 이러한 변경 내용이 손실됩니다.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
'클래스에서 자동으로 생성되었습니다.
'멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
'다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
'''<summary>
''' 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
'''<summary>
''' 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대한 현재 스레드의 CurrentUICulture
''' 속성을 재정의합니다.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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
'''<summary>
''' System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
'''</summary>
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

View File

@@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="go_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\go_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="impt_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\impt_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="play_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\play_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="remov_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\remov_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="save_24" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\save_24.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="hd_24" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\hd_24.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="opts_24" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\opts_24.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="play_321" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\play_321.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="srch_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\srch_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="foldr_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\foldr_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="apps_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\apps_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Accessibility" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Accessibility.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="stop_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\stop_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="splay_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\splay_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="opts_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\opts_16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -0,0 +1,71 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 이 코드는 도구를 사용하여 생성되었습니다.
' 런타임 버전:4.0.30319.42000
'
' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
' 이러한 변경 내용이 손실됩니다.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.FileManager.Settings
Get
Return Global.FileManager.Settings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -0,0 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles />
<Settings />
</SettingsFile>

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 매니페스트 옵션
Windows 사용자 계정 컨트롤 수준을 변경하려면
requestedExecutionLevel 노드를 다음 중 하나로 바꿉니다.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
requestedExecutionLevel 요소를 지정하면 파일 및 레지스트리 가상화를 사용하지 않습니다.
이전 버전과의 호환성을 위해 응용 프로그램에 가상화가 필요한 경우
이 요소를 제거합니다.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
<defaultAssemblyRequest permissionSetReference="Custom" />
</applicationRequestMinimum>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- 이 응용 프로그램이 테스트되고 함께 작동하도록 설계된 Windows 버전
목록입니다. 적절한 요소의 주석 처리를 제거하면 Windows에서
호환 가능성이 가장 높은 환경을 자동으로 선택합니다. -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
</application>
</compatibility>
<!-- 응용 프로그램에서 DPI를 인식하며 높은 DPI에서는 Windows가 자동으로 크기를 조정하지
않습니다. WPF(Windows Presentation Foundation) 응용 프로그램은 자동으로 DPI를 인식하며
옵트인할 필요가 없습니다. 이 설정으로 옵트인하며 .NET Framework 4.6을 대상으로 하는
Windows Forms 응용 프로그램은 app.config에서 'EnableWindowsFormsHighDpiAutoResizing' 설정도 'true'로 지정합니다. -->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
-->
<!-- Windows 공용 컨트롤 및 대화 상자의 테마 사용(Windows XP 이상) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>

View File

@@ -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

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 849 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

26
DriveInfo/app.config Normal file
View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<connectionStrings/>
<system.diagnostics>
<sources>
<!-- 이 섹션은 My.Application.Log의 로깅 구성을 정의합니다. -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- 아래 섹션의 주석 처리를 제거하여 응용 프로그램 이벤트 로그에 씁니다. -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information"/>
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
<!-- 아래 섹션의 주석 처리를 제거하여 APPLICATION_NAME을 응용 프로그램 이름으로 바꾼 후 응용 프로그램 이벤트 로그에 씁니다. -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

301
DriveInfo/fFtpPath.Designer.vb generated Normal file
View File

@@ -0,0 +1,301 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class fFtpPath
Inherits System.Windows.Forms.Form
'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
<System.Diagnostics.DebuggerNonUserCode()> _
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 디자이너를 사용하십시오.
'코드 편집기를 사용하여 수정하지 마십시오.
<System.Diagnostics.DebuggerStepThrough()> _
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

120
DriveInfo/fFtpPath.resx Normal file
View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

184
DriveInfo/fFtpPath.vb Normal file
View File

@@ -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

BIN
DriveInfo/irea.mdb Normal file

Binary file not shown.

568
DriveInfo/모듈/Job.vb Normal file
View File

@@ -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
''' <summary>
''' 지정된 FTP로부터 파일목록을 수신한다
''' </summary>
''' <param name="Di"></param>
''' <remarks></remarks>
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
''' <summary>
''' 해당디렉토리로부터 파일정보를 수집한다
''' </summary>
''' <param name="Di"></param>
''' <remarks></remarks>
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

View File

@@ -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

View File

@@ -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

330
DriveInfo/모듈/Pub.vb Normal file
View File

@@ -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() = { _
' "(?<dir>[\-dl])(?<permission>([\-r][\-w][\-xs]){3})\s+\d+\s+\w+\s+\w+\s+(?<size>\d+)\s+(?<timestamp>\w+\s+\d+\s+\d{4})\s+(?<name>.+)", _
' "(?<dir>[\-dl])(?<permission>([\-r][\-w][\-xs]){3})\s+\d+\s+\d+\s+(?<size>\d+)\s+(?<timestamp>\w+\s+\d+\s+\d{4})\s+(?<name>.+)", _
' "(?<dir>[\-dl])(?<permission>([\-r][\-w][\-xs]){3})\s+\d+\s+\d+\s+(?<size>\d+)\s+(?<timestamp>\w+\s+\d+\s+\d{1,2}:\d{2})\s+(?<name>.+)", _
' "(?<dir>[\-dl])(?<permission>([\-r][\-w][\-xs]){3})\s+\d+\s+\w+\s+\w+\s+(?<size>\d+)\s+(?<timestamp>\w+\s+\d+\s+\d{1,2}:\d{2})\s+(?<name>.+)", _
' "(?<dir>[\-dl])(?<permission>([\-r][\-w][\-xs]){3})(\s+)(?<size>(\d+))(\s+)(?<ctbit>(\w+\s\w+))(\s+)(?<size2>(\d+))\s+(?<timestamp>\w+\s+\d+\s+\d{2}:\d{2})\s+(?<name>.+)", _
' "(?<timestamp>\d{2}\-\d{2}\-\d{2}\s+\d{2}:\d{2}[Aa|Pp][mM])\s+(?<dir>\<\w+\>){0,1}(?<size>\d+){0,1}\s+(?<name>.+)"}
'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 = "<dir>" 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

View File

@@ -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

View File

@@ -0,0 +1,495 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form_Status
Inherits System.Windows.Forms.Form
'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
<System.Diagnostics.DebuggerNonUserCode()> _
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 디자이너를 사용하십시오.
'코드 편집기를 사용하여 수정하지 마십시오.
<System.Diagnostics.DebuggerStepThrough()> _
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

View File

@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>611, 14</value>
</metadata>
<metadata name="FpSpread3_Sheet1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>33, 14</value>
</metadata>
<metadata name="IreaDataSet.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>495, 14</value>
</metadata>
<metadata name="ContextMenuStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>771, 14</value>
</metadata>
<metadata name="FpSpread1_Sheet1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>187, 14</value>
</metadata>
<metadata name="ContextMenuStrip3.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>931, 14</value>
</metadata>
<metadata name="FpSpread2_Sheet1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>341, 14</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>56</value>
</metadata>
</root>

View File

@@ -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

View File

@@ -0,0 +1,264 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Frm_DeleteFile
Inherits System.Windows.Forms.Form
'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
<System.Diagnostics.DebuggerNonUserCode()> _
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 디자이너를 사용하십시오.
'코드 편집기를 사용하여 수정하지 마십시오.
<System.Diagnostics.DebuggerStepThrough()> _
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

View File

@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="FB.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="StatusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>82, 17</value>
</metadata>
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>200, 17</value>
</metadata>
<metadata name="FpSpread1_Sheet1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>309, 17</value>
</metadata>
<metadata name="desc_timer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>463, 17</value>
</metadata>
<metadata name="ToolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>574, 17</value>
</metadata>
</root>

View File

@@ -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

View File

@@ -0,0 +1,255 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Public Class Frm_FileInfo
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
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.
<System.Diagnostics.DebuggerStepThrough()> _
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

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="StatusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -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

View File

@@ -0,0 +1,29 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Frm_RenameFile
Inherits System.Windows.Forms.Form
'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
<System.Diagnostics.DebuggerNonUserCode()> _
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 디자이너를 사용하십시오.
'코드 편집기를 사용하여 수정하지 마십시오.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
components = New System.ComponentModel.Container
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.Text = "Frm_RenameFile"
End Sub
End Class

View File

@@ -0,0 +1,3 @@
Public Class Frm_RenameFile
End Class

127
DriveInfo/컨트롤/ImpCtl.Designer.vb generated Normal file
View File

@@ -0,0 +1,127 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class impctl
Inherits System.Windows.Forms.UserControl
'UserControl은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
<System.Diagnostics.DebuggerNonUserCode()> _
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 디자이너를 사용하십시오.
'코드 편집기를 사용하여 수정하지 마십시오.
<System.Diagnostics.DebuggerStepThrough()> _
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

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ToolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -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)
''' <summary>
''' 사용여부
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
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
''' <summary>
''' 데이터가 표시된 포맷을 입력
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property 포맷마스크() As String
Get
Return Me.TextBox3.Text
End Get
Set(ByVal value As String)
Me.TextBox3.Text = value
End Set
End Property
''' <summary>
''' 연결할 필드명입니다.
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
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

405
FTP_Client/Client_0.cs Normal file
View File

@@ -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[] { "" };
}
}
}

1047
FTP_Client/Client_1.cs Normal file

File diff suppressed because it is too large Load Diff

1058
FTP_Client/Client_2.cs Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9A2A1B46-799E-4D8E-8682-1F82963836A3}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FTPClients</RootNamespace>
<AssemblyName>FTP_Client</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Client_0.cs" />
<Compile Include="Client_1.cs" />
<Compile Include="Client_2.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -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")]

BIN
FileManager.suo Normal file

Binary file not shown.

BIN
Folder.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

1455
Setup1/Setup1.vdproj Normal file

File diff suppressed because it is too large Load Diff

20
[NET2]ArinLog/ArinLog.sln Normal file
View File

@@ -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

BIN
[NET2]ArinLog/ArinLog.suo Normal file

Binary file not shown.

View File

@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>
</SchemaVersion>
<ProjectGuid>{E9E16A98-8F8D-4848-A27E-4571C184FB1A}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>ArinLog</RootNamespace>
<AssemblyName>ArinLog</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>ArinLog.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>ArinLog.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

91
[NET2]ArinLog/Class1.vb Normal file
View File

@@ -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

View File

@@ -0,0 +1,13 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 이 코드는 도구를 사용하여 생성되었습니다.
' 런타임 버전:4.0.30319.42000
'
' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
' 이러한 변경 내용이 손실됩니다.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>false</MySubMain>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>1</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
' 어셈블리와 관련된 정보를 수정하려면
' 이 특성 값을 변경하십시오.
' 어셈블리 특성 값을 검토합니다.
<Assembly: AssemblyTitle("ArinLog")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("ArinLog")>
<Assembly: AssemblyCopyright("Copyright © 2014")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
<Assembly: Guid("0fc3516b-c19a-4cf7-9544-587a2a680242")>
' 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
'
' 주 버전
' 부 버전
' 빌드 번호
' 수정 버전
'
' 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
' 지정되도록 할 수 있습니다.
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -0,0 +1,63 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 이 코드는 도구를 사용하여 생성되었습니다.
' 런타임 버전:4.0.30319.42000
'
' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
' 이러한 변경 내용이 손실됩니다.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
'클래스에서 자동으로 생성되었습니다.
'멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
'다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
'''<summary>
''' 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
'''<summary>
''' 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대한 현재 스레드의 CurrentUICulture
''' 속성을 재정의합니다.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 이 코드는 도구를 사용하여 생성되었습니다.
' 런타임 버전:4.0.30319.42000
'
' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
' 이러한 변경 내용이 손실됩니다.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.ArinLog.My.MySettings
Get
Return Global.ArinLog.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -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

Binary file not shown.

View File

@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>
</SchemaVersion>
<ProjectGuid>{631388D0-FADF-4C02-9536-A33E1C40F91D}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>ArinSetting</RootNamespace>
<AssemblyName>ArinSetting</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>ArinSetting.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>ArinSetting.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Diagnostics" />
<Import Include="System.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

175
[NET2]ArinSetting/Class1.vb Normal file
View File

@@ -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
''' <summary>
''' '파일명이 없는경우 현재 실행폴더에 Setting.xml 이 작성됩니다"
''' </summary>
''' <remarks></remarks>
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
''' <summary>
''' 파일존재여부
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
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("<?xml version='1.0' encoding='KSC5601'?>")
NewXml.AppendLine("<tindevil xmlns='http://tindevil.com'> ")
NewXml.AppendLine("</tindevil>")
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

View File

@@ -0,0 +1,13 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 이 코드는 도구를 사용하여 생성되었습니다.
' 런타임 버전:4.0.30319.42000
'
' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
' 이러한 변경 내용이 손실됩니다.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>false</MySubMain>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>1</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
' 어셈블리와 관련된 정보를 수정하려면
' 이 특성 값을 변경하십시오.
' 어셈블리 특성 값을 검토합니다.
<Assembly: AssemblyTitle("ArinSetting")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("ArinSetting")>
<Assembly: AssemblyCopyright("Copyright © 2014")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
<Assembly: Guid("519c93b9-baa3-4298-8b19-f2cbecbb79d1")>
' 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
'
' 주 버전
' 부 버전
' 빌드 번호
' 수정 버전
'
' 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
' 지정되도록 할 수 있습니다.
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -0,0 +1,63 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 이 코드는 도구를 사용하여 생성되었습니다.
' 런타임 버전:4.0.30319.42000
'
' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
' 이러한 변경 내용이 손실됩니다.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
'클래스에서 자동으로 생성되었습니다.
'멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
'다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
'''<summary>
''' 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
'''<summary>
''' 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대한 현재 스레드의 CurrentUICulture
''' 속성을 재정의합니다.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 이 코드는 도구를 사용하여 생성되었습니다.
' 런타임 버전:4.0.30319.42000
'
' 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
' 이러한 변경 내용이 손실됩니다.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.ArinSetting.My.MySettings
Get
Return Global.ArinSetting.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

69
ribbonMenu_160717.xml Normal file
View File

@@ -0,0 +1,69 @@
<ribbon>
<toolTipSettings />
<appMenu id="RibbonApplicationMenu1" largeImageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAdwQAAAKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAEGUlEQVRYR+2Ve2xTZRjGz5RLMGOwQXUoRhND1OBmmDEhgHSwEpcoCQFBN9mFoINgxmihE9bWzo3CZJqV28ZIlrENNledGmm8hAw0+9MYdSNDRp2ysKDLRN16vz2+79manJ7u4jz1DxLf5Nf2fOfr9z7P+37fOcJdGSq1LfGJnEt7ntzeeXF53uWhtIIrQ2mFX9nTcu0auj2LSBAn/hfxyFZ76lN5l1o3ma6iuHYQVrsPJz7zwtg0jBfLuvH0jsvNKpU6kaYmPPta1/J1+h9Av2cT9/D/FYbt3se22RsKq3/CYdsoys/fgaFpCIZzv8FiG0FDZxj6hl+RsbOzLWPHlarn9d8Pv1rZywKSibniEkpiSbZtTXp+J3T1t6De/QWWaGqxIrcjpK27iZJT/TC3DIsi9tYNel+vuYn6L/0YF/AgMU9cREmkaNqPbTL24Lldn9+ev+KATpizeFli+htbUtcd79bVDaDk9M8wNQ+JIlq+hvg9LmApoVxAsub9a1nab5CUUWamy4eJFGK+ICSl3L/+ZO/+swMhbe0vKL/wO2ou+kQ02m/jK2BlQRtmL8xIo8tFxBwiQVj60rzUTKuZ75WeHRDREywkPb8rfgJSstre5STC3AWP0qW403k8eVXNyzxuOjcIY+MtGCTEVUCyumGNKrvDJyx4nAXcNzYqCAtXW28vWnsSi9WnoMo8jQeyapGadQYPbagXoSnxESAIRXye2bn8WPE4j/Fu52RyVMTUx3DPiX7ssjqw8z0HCqtvYHtVH3Is17G14kdsNl/DRlMvXjD0IvvgVWwo7cH6Az3I1PVgrbabHbK7qeDkUz+I9tIRqvrEhyMf+XC4w4vKD72osHlQ3u7GW21umFrdMJ53oazFidLGERxsHkVpkxPP7P6OBUzvcLoosvbj6McswAsLC/jAgwpKbiZMJMDY6oLhgguHSADzZrQALjM7/fdRcMyB/HccyKtyUPlvIPcoteBIH16x9GFb5fVJkQrYWFCCfwrNj27L8cZPEQ4DIfoIhcIIMsEwAkS7vQv+QAg+fwhexheCxxeE2xtETnG5tAK8GZMIfkZMB8/j+WPBAjg5LyjFHxgTwMnl91yxAtgRO4tsvqmIrYDcuZ8h5yxA7pyTuzzRAiYq9WTQ/FgBnGimyCqgrAXsnp2L7rnn433nRBHnonty7vQEMOoOxLcFnJgXlMKlZwGRDSdFLmCiUk8GzZ9YgNQ5J/dQ3yMCxpwHxcTMiCumAspaEOnrTJAJUNYCqWvpbudETonrvxinH3+O+uPbAk7OC0rhkrOASL+l/CETQChrwUTnnJ2zgCjnBCe/MxIjQFkL9JYzKDpUjUKdBXn7KpFb/HaU48mgv0cEKApWxK9VXmymKH8dU8ykfHKiy/l/3D0hCH8DqK9Jd786aT4AAAAASUVORK5CYIIL" />
<qat id="RibbonQat1" />
<topToolBar id="RibbonTopToolBar1" />
<configToolBar id="RibbonConfigToolBar1" />
<bottomToolBar id="RibbonBottomToolBar1" />
<qatItems />
<contextMenuItems />
<tabs>
<tab id="RibbonTab1" text="메뉴">
<group id="RibbonGroup4" text="매크로">
<button id="RibbonButton8" supportedGroupSizing="TextAlwaysVisible" text="신규" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA4gEAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAABhElEQVQ4T6WSIW8DMQyF81P6Ew4OBhYGHgwsDCwMLAw8GHgwsDBwpFLgYOCkkcAx79mX6yLtNFJLT+qpfl+sZ6uXK9wK+V2+68rK5Fiu67LJdnW7UmxMK1G4Nfqv2jeRmWGek6jbfwHeV2lM9yzKeRC+W2ukTaZpsgCNAIzMAHfdAH8KL8NL9RMAGD36jIkHAFek33tPcU14xVCMUVRrFYCx+QCAoEbAXmzkyvdAKRqqH4VcD9rMA4CTZoC9DAAO7DxRCjAWR61uEM4mLhW9IwArYkBcmkBYHGxc8wZZDJVsBRK8RqiFQhjW+ARgYlYIjQJgaW3SfAjBJN0OAI5iB7DZWCeyzgMUMTYCPYB0u1J8VbvZ45jM7PhP0hqG2iT9PEDquwMUm3N2g1isJi5YH8x8TAyYtMZdBKxvA8TEU24Qf/NUbo5qAIghDJDXYT6dE50mPVxjofzOwToYGYLeN0wCY7la+a0ejy80IHFcGR/IU+dAepf2ZG3AI0kmYaOYXy+lfgBXaEhab2/C/gAAAABJRU5ErkJgggs=" />
<button id="RibbonButton12" text="저장" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAyQEAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAABa0lEQVQ4T62SoXLDMBBE8wn9hHyCYaBgoKChYIoqGCgYaBgoGCgYKFhWw0LBQsGw6+7ZSRQ3U9Dpzex4xvI+3e159S+VzlVUadapSozQscgwzDoUCQHaj+IpP8psBwCmnAUfyq9VLyK2z+L6pJrtDeBQ509/Fs21VjE2S9c5gBpARMsEsMVndTWXryqdTRijiLWxAWBeAjwOltWax08AtknnfwQgLAXgoK2lOY9F1iaK2y0ATJkAHlzrmTm/F3nZAOCy2O3QALCifBasEhAHOj9A2hoYZmbbvPlm5lkLYHgpAQDFyHVWCdjItPeio3l0dzVbQB8B+DHS6W62vX+U8xgvNGbIhDuAf1Z7M014LZ0xOv9Yqrh9mIxqjgsAWoxH/Adz2wTQ7PeDFJgZpA8D3tEYp+emBWA+vR3mNQPrDALNqpxHpM+1WTWqEKbZaJdTvb1+WLdjQEn3exOCYlgqtMxbJ6HDFvD3Wq2+AdBROwy2G7LMAAAAAElFTkSuQmCCCw==" />
<button id="RibbonButton13" text="삭제" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAUgIAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAB9ElEQVQ4T62TT0gUURzHX1nhrDp/3rirgrbu+ofaanF33tvZClzbwEPqQZYOXjzswegSnbt36hQeukTHLkHiJYIE70FY5hIkBBEE3STNw7yZ36/3Zp+HdRWD/MAc3u/7nd+8358hpwJyayLynDUouVUk5KwO/xt4l3SA59yDpRkMFm8L4HRexbTcAlbIOWRWVnoe6FAzCIzWI07fQH0ag3o1lOdHh5NgJd2pbhgsVkXE7Oc63ASKvQNQouU4SY0hLNzEiDurkO/rivXyoBFVMqtBbUJIzxPMJbvjFw+DOXJBfv1hMJ0RKpE0vwTfzstkyzrpMnqOpe1HI5t4Bnx6OSzSjbik2VwQ3Mnvyia/VjfRtpNBz50KagUBc9dQFOk3KJtUSyeDvjUccropOIX9go27BROF53zV8vGoHYCCnRae1RB+f/jzSs8acJep5v66aiJw+74qUdvbQZ7sD/3Uxt6tYWyMJrbf9XVMqUmoJ2L02ce0ITazBtP2VtSco3Lqlbju7n0YMn6/v2jUtKR3gJo/xhPbjWzn2xWHDLU1FEr2zL6fwk9ZAz9nEisHO3BAs7zk6Prg+T9bY0apZeXV/OWMH3+/1I1bI8YX4L3jLQaN2s6dvPkCmMvbdLmNxYg5T2WjJuGG23Ncs+L/wRtI6OP/QshfG+jStAAx2gYAAAAASUVORK5CYIIL" />
</group>
<group id="RibbonGroup1" text="작업">
<button id="bt_run" text="작업실행" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAYQIAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAACA0lEQVQ4T6WS60uTYRjG94+ElodKEUFRMQ+IKJ5A6YOIRmCsRulgaIJDGSoDzQhFSRQRnRhExL4MMjvQyRObMmcNzyJTxBPaYAQi2eV73TAfBMPIF25eeJ7n+t3XfdDhkp8AmocWz0TTwDzMPV6YOmZheOpGWdMUisyTyK4aQ1rFZ6QYRpCsd5wF/D7+89c4PDqGP3CE3Z+H8G3/wtJGADdzGv8N4Fn2S+ZM0ygcY1sitg37cCPbcjGAmSl2zR2g/dWy2Caw17GG61n1CsCazxPTNjNTnFczjqRyOya9++h4vaIB6hSADTtPzJppm5kppvWvM3viODKzVgHY7aCYFnMfj0s4NeusmWfMTPF71w4sfXOIyKhWAI6K4gVfQIRD79Zh/7KJ6IIWtGn22TDGc/sq3kxsoabrB8LTTQrAOVNc0uAS8cySH4Nvfajt9iK+1CbWX37cgE6nk/vKNg/CUo0KwCW5a53GC+2Sdvm32hZwv9UtTYy93YkWre6qzu8C0T9x41rKIwXgqJgxKOZjY7sHhRr41oNhAYQm6ZFu/IbUhx8EcjXZoABczxHntohZM2sstji180+IK+lHVJ5V67pZbMcUPpMdIPAUwN2mZQbrY0k8ozg6v1nEHFvwfyXuDkIS7ykA58zdZqdJ55LwIUfFbjMza6ZtZqY4JKFcAf7/A04A0AEgNTFacM8AAAAASUVORK5CYIIL" largeImageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAACwUAAAKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAErUlEQVRYR+2Ve0yVZRzH+Uvl4rUYOsPtHLkcD3AIEDiRualFN2Nqy3lBBUuYwEyaiBwuEsnhIhdJmEzMnLFczC60LFAkJSzTgqw/KueqNZFx63CTwznH9/32fV7PDFMGczvHrfXbvnvf845zPp/f73meF5f/60Hrypcq/HBWhbYzatgfObfam1Tov5YE09VEfPv5QudLfNeoxvANA5OJwT924quPfZ0rcZFdm/vyYenfD3PvPkXibJ2f8yQu1PtgtL8YtpEq2G4etEu8job3/J0j0fKRLyyDpZAshyHZDlOijBLZlNiO+hqt4yWaOW7rcDnh1YAsJN6mRD4ldlEiDnWVAY6VOP2+P2zmMsi3KgFUUULIGGEbzoS5JxmDv69DbUnQ5CXam1Vob1Lj+9NqXG5YiIunfPDNZz5orfdFC3f4uZN+aP7AD2dO+KOxVoMvjmsgWUshS+UUKGWKACmPzwycxA5OYgslXsLR/ODJSYgXijhW5j4jLAOl/8p+ppBrXsCxF3DjFRJUxO4FtIDwfZzAXsbAz2mcRAonEcdJrKHEChzKCZlY4lKDWoGLXS1Zj9jDtbUeYiq52Sr4w2LkJQpYlowEvsXkMpnMbmYnk0KJbfzOJkqsoUQ0JfSo2DOBhBi36FaAgWPMUaaG4SaDWOcDTAkBhbyO6VgBpzIEI4GJ530sJdbyt2IosQIjXXoMXAtESWrY+BKtnwiBYqVjyEJCgLm5xoKVjgkGwRgDlgmW7WB5LbOaWclJRUMaXQqLKQxDfy5C30/eMCaH31/i/Eme6wEjBSrsYF5l++YSHcPesQIWo07mvQDHMRuZf8CQn2WWUWAJBcIpEEgBNQXm4kbrLLyZEHGvRBN3uGUglwICKMBi1PaOlVGn8bMdLCcyouOx4Bc59mhelzNPAbciuW9CuARaLoGKSzAP3W2z0XHeAzlbI+8VaKz1V14itpEsfjGHyWB2USiV1xQmgfdbIds2M+vZ3SsErroNlgV42W2wHEl4KP8+ELYhP5i7F2DwNy/0XpmNzgvuyL4fXNSpYxoMd7zKk7Cd/2CSmG1MPBPLrGNe5oRWwTq0kpIvEPAcJZ6mBMESwRLBUhjhOopq2DlPVfdjhHsSPhOdX7shO34cuKhPj2hh+jWGR2Y110skhnmeeYZZzizF8PUluNkZhdG+JwmIokQUJexgSUe4ls982PkCwucSPofw6YS7IitOPz5c1IfVWnRdiuA6RaKnPYJZzDzO6JgARoPeHzUw/byI73otRnt1fOMFQ7YGEa4l3JdwFeHzCfckfCbh7oRPRebmCeCi6g4G4MSBQNSWBeF4cRDeLdThnXwdavKCUb03GFVZIag0hKAiPRTlaaEoeSMM1kEB9aWAildvwr0If4Tw6YS7Ej4Fhk2TgD9IFe1YzD3hDck8n/B5hHvyrTeLcA/CpynwDEfBRRmTwjH6lxf3wqOEz2HnMwh3uwPfE/uE4+Ci8hLDlY4tphmEe9wN3+hguKjc1yJ4Ktx5dN3vgqdvcAJclDjT/VfdYPrF9Q5893onwUUZtujR0zYNXZen8g3nZLioDG6yjpYpuH7uIcBFpW/QK+CHAv8PlYvL34gk5qqBDqaVAAAAAElFTkSuQmCCCw==" />
<separator id="RibbonSeparator5" />
<checkBox id="chkReplay" toolTip="동일한 기존내역이 존재할 경우 해당 정보를 이용합니다." text="이어하기" />
<checkBox id="chkAutoRun" toolTip="목록수집이 완료된 후 자동으로 실행합니다." text="자동실행" />
<separator id="RibbonSeparator3" />
<toggleButton id="btCopy" supportedGroupSizing="TextAlwaysVisible" text="복사" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAnAEAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAABPklEQVQ4T72RoXLDMBBE/Sn+g/gTDD1FZi2LWQsNCwXLIugywbAImlXQUNCsgoWCZdu7kxPH7iQGnenOLNHcvb07ZX+WdQHJPrn3MNbj8H6qp5L74ua1jHVolMHuYV9MZbfFqWvpo4MbPJpWb0N4ZJYbAZocPkRoY2GHSCslm57ebPL+8FlOrUk87kXfQIxA+KJGAqyljhHFi8Pu+WOGGBqXZQYanZKUDWhNgKHktdougYsni93jKUF4X1aU9CjpvIbp03G1TfZjRKODNLPz2iABaF9uPieLO0+HXP4O1zDceYLTsZYAmpZT/RiogDwEKAKxeO+2C5JeKy8WQHUFKKrml1s9f+85gNPlV+jweaUT4JaatwS4Tr5MQHfbBNSvTvbmcWc7aebD5+UGoGzd4uJiShVTc16q+4B/Upb9AFGm2tYvvAfhAAAAAElFTkSuQmCCCw==" />
<toggleButton id="btDel" text="삭제" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAUgIAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAB9ElEQVQ4T62TT0gUURzHX1nhrDp/3rirgrbu+ofaanF33tvZClzbwEPqQZYOXjzswegSnbt36hQeukTHLkHiJYIE70FY5hIkBBEE3STNw7yZ36/3Zp+HdRWD/MAc3u/7nd+8358hpwJyayLynDUouVUk5KwO/xt4l3SA59yDpRkMFm8L4HRexbTcAlbIOWRWVnoe6FAzCIzWI07fQH0ag3o1lOdHh5NgJd2pbhgsVkXE7Oc63ASKvQNQouU4SY0hLNzEiDurkO/rivXyoBFVMqtBbUJIzxPMJbvjFw+DOXJBfv1hMJ0RKpE0vwTfzstkyzrpMnqOpe1HI5t4Bnx6OSzSjbik2VwQ3Mnvyia/VjfRtpNBz50KagUBc9dQFOk3KJtUSyeDvjUccropOIX9go27BROF53zV8vGoHYCCnRae1RB+f/jzSs8acJep5v66aiJw+74qUdvbQZ7sD/3Uxt6tYWyMJrbf9XVMqUmoJ2L02ce0ITazBtP2VtSco3Lqlbju7n0YMn6/v2jUtKR3gJo/xhPbjWzn2xWHDLU1FEr2zL6fwk9ZAz9nEisHO3BAs7zk6Prg+T9bY0apZeXV/OWMH3+/1I1bI8YX4L3jLQaN2s6dvPkCmMvbdLmNxYg5T2WjJuGG23Ncs+L/wRtI6OP/QshfG+jStAAx2gYAAAAASUVORK5CYIIL" />
<toggleButton id="btMove" text="이동" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAkQEAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAABM0lEQVQ4T62SMW6DQBBFfYTcIFwAdi+Ady8QaU5gtohMCZ1TUqakdLmlS26QlC4pXW6ZkhtM5sNasRUQjpQvfSGx8x8zs2z+TfqY8JpNpXQs/y0UdINnH1pughMT12di11nWzRi2sXReAPiv+id8sUwn/VgYAqANAEg4WHa9ZTu1vR6GALh+eTQgF32FJLFsWQBgZrTtenEE4fkQBAB3mhaGgDv/EQJAXBip6jlBgD4nyGgBbousM+UCBIDbhd1BMJKY3jWbvapjyb3m2jOvSueHdHj5SAcCQPaz3WV9PF6XKdSTqTJPRwlLJ+Q15/s04H0sWZcUt9RIuJtGyKs0xKN1yVg1tVPr6CIv00GALh4vyxxUMrb+JsFafibxGF5a4K1MYVpcJ5zvZN7SeHQyf32bzTdUROdlC1YY6wAAAABJRU5ErkJgggs=" />
</group>
<group id="RibbonGroup7" text="원본목록">
<button id="btOpenFile" supportedGroupSizing="LargeImageOnly" text="불러오기" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA3QEAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAABf0lEQVQ4T72RIVPDMBTH+wmgEgVxoFglAlE5t0gMtzqmWOVQixxqccw1jjkiJysnI5GVyHyDP+8lGXQw7hAc7+53l0vz+7/XJPuXmj81pdIGakGsLObLRqVPv6tqpjG6W1a8ns6bnMOmj43k/exlvZR2rfEV2tfBPlDTh0bKiQaT8eHOGXhvA/AGeDOwhkKe5wdH3ckxgA56kvpy4LWGoW9mpSJaQTOLGiknVghgYU9WRHWQbwHcJQQkWqsDH/dhVKA/SZhmkabhTd/pIHdbOkwSOprgJ+jXGLeWmI5H5jOAYLnd0Doc6o3uGAlsJfymRGcK3N9eewooMh7H0z/vdXcpIIgEi20ZZG8LqInAeHgUnzkEuCi7NnXviWhjVxb9uoBb5KiGAoPzYxEC+DJc2++exF3XJHZGwOk8dL+8OLVB5uKb5Kd0li5GZx+0DHWzKmJmAroWsfvgTCY9BmhVQc2IWqKuJKqbEnJYorwqUBQChRAQJznyPIcgkvoXlWXvroTl2zJE2XcAAAAASUVORK5CYIIL" largeImageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAHAYAAAKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAFvklEQVRYR+2We1BUdRTH6UWFlBVqRdHk6NRMzuTY4y+nmnHyOSrOIvEwBQIbdjQhAWF5g0A8i8nIDBxEBEQFQx6SCQ4poiIYiCIIPmDxAcZLRFh299v3t3cXdwHHaYamfzwznzn3d+69v3N+53fO/V2zx/JYJlNWuYV8Zuce3rh6fQRkHmGXVqwNcKH5afKE7oH/UmTuIfOF0+Vr/DyWOnp7LnHwksvcQppsXQK/521zV++os9QimCfF85Mq79mHmcs8QvIW2cs/5PAlPVMX2nkulbmHa1au9Y+RMSu0vUDMyXi5Vb5tX3tpIiQS9MSh/XAslIe/IzG4nB+p4KMPS6mwW+h5hjxFzFe5Bf8igli2LkwE8Cp5nphKa55iQ0d5EtRdpUD/MVIB3CX9fwJ9HPeWQHXjAG5XJKMuKzCBrzxLxgYhUmuS4i/kEdW27uFYujYMnzvrAniDjA/galEMHRQCPQVA917qA3T6G6+pe3KAOxlA1y6o2rJw42ii9kSalytfE6l8VHGJgF4kYuXC+XQigjeVK4UxXG05nQnndNiTKznvpu7KIunA7VTgVhpG2jPRezIJHSUREsXhJEyHsigYyvwAXM/zR0eBH66W+lRzeksyhYiVC+fji7D1UDQDKKPjfVIG/tZzRzjn6m/voPNtwI0kkgh0bqctBbiZDO3NJGiUcVBdj8XIlWgMtWzF/aYIDDYE40S8o0i7FZm48AzSUhAlBWBw3C3Snk120VkaHf0EKOm4nZlqjwDaQqgDgGt+ULX4kG8x1LQRg42kQY6+Ojl6a77G8RTHPk4/8b4bS9PBrSy2o3QunGZBK1YrHDP1Q40/6DtDz+F4InVHOztDWRLNDomCsngriXywLdwKY67keONihifqtzn0NG9fNWhvby+2RtqOxgORLLrf6TyTqU6BpiMBPfXBuFXljTvHk6Fp20N7/qTQdkwxUBq1aGjx4sVv0/VzugAu7Gdae9mCXLGW+zrQFInOMz5oLfRi6jOgaf0RqvOKSeFItK0mNdThh7lz3xUBiG+Gmdn53HApA0y7lkXWeTYAbeWbMVAbx6LLxUhD0IST/Vva/vhmJCfE+eaSBfPenzlzhmhN8cEyM6vPCWMNMAOs9vuXI3CtwheXCn2Ajiyom+MxXB8AVb3/qJauDdpwz9RmuFbVSfahui3ID1mlDZIvd7C2ftmGbkVrSjVwLiuUlV/CAH5FZ/UWVO31Y6Wz7xnAMF8cqvMbZfgvYjwWmjbj+6N2I12z20WdEexUNdvGZhZdTiXiIyVJTWYwA8jH8NVEtJT5oDaPLcbUqy6E4f65zTqGjDDYDHbjsY5a03FP1UZttmKF2tXu008sLCxeo0tRfA++omczGEDXbnTV+HP1vtC2p0NzLRX3arwwqGOTXktIdmEztT+MkkSZekeoQ+bs2dPF6sWnWRxUD+R0ehC0ndloLfPFhcIgfnj2M3If3KvegIHqjcSgpWvJLmkJ42dMbcoyN3WG38o+u5XzPpoxY4oovPFnwamdgei/vBNnclh4yj1QNSfh7mlPDJyW6/RYBsbZjJ+T6+/L0X/KE/uDlmmSFXaBH8yxmWVlZSX+B8afBVU7FWivisLFolC24T7dRH1V69FvzKkxY2OM7une048vHXRS7/KxbZ7/8aw5lpaW0+hKaruxUpmqQMMhBdQ86QbrgtF38iv0VhLqPmoxNjBqM0bYddfuo7bu467Y7btEs95h4SK6eJ2I82Di47ti+yacTPeG+noaeird0HvCVY+LTvfoGWvvrTS1Sc9I92qzZJqffe3zOP1bRLSdaeEZS1miY05e7DroiHJBXrQLciO/RHaEE4rinVGc7EicUBzniEOJa2hzRAHJF8TymnZhK05wRnmKI44kr0acx4KEmdbT3uH0jz6OKWJvXiHi6HxzkrAmYk7R8+MLb4yIvRFBiH2aLIRjMeejftsey/8pZmb/APwMEeVH0P5eAAAAAElFTkSuQmCCCw==" />
<button id="btMakeNewList" text="직접작성" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA8QEAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAABk0lEQVQ4T5WRW0vCYBjH9zX6HH2MvobQRRdRkERdRAcKLzpQlNlVFmaZUIZZpCKhFqwo8tBgiyxcWFokzvMOT+/7btPAl1F/eG42fv/DxpjyRzNefBFWUAJJXg4msspJLKsexzLqYSSt+cIp7eDCuNBt2sC6Cl3yIlCkagCyokGzrUGtqUKlpsKSOwz9A0NgoLp2Q+yjwXSkapoBqzpcV+BbknsNQByFopeB2VUvAc8TTxCI8eA55cDlf4DFnTuY2WTBvpKEUrnda3A23wcuX5zAWN1kszZKrsjwWZah8EUxwFrbi+owGm3VQCy26BNKaMKEww1tWd9cN5MlhdTGyXkEvxSa9AkLW8FObasGgtigT5heP+puNr62ntwitXGy8NYA7rVOn/CBJgxPOQls1SD9XKNPsDs8RrK5WU/OvaNkVBsnY/iepxhgjcxto1+FYdmyActJ9AnFfQZsY8udr53Dm38nC1UCX2Ur9AmDk05SO1+iwHwVbrgqXGckiKcoBli28Q3y4q/XY4CFH/7nGIZhfgBVaKx2f726SwAAAABJRU5ErkJgggs=" largeImageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA3gcAAAKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAHgElEQVRYR72XeVCU5x3HmUxTxEStMSY2zRiiplMnsaaB0MZJip16gygkwSMoabUkGtAYQGs0HhgVEAgBCV4TDcq1uALLsQc37HLvIpcgBQFFBQRB5dxl+fb5PcsKC6+ZtH/4znznnV3Y9/P9fp/f88y8Zv/H9YzPftcLoce3guR32A1+h9wQ5OMKzx1bOg54OmsOejlrTuyzF/nvtTt71GvZ2W92rHV3ktjgwyQb0N1J8i7Yc8zpWfyJv/RaMW+eudWCOSfqVVv1fdfd0Vvugo78tWjLXYOWdDvcTLNHk3w1GqSrUSZ2hCrKCZEBDgj3Wat3TLCGd8Un2FO5EXPDLMjATCYy8cuuFTbzpjouXiA6ecy+tv/WYfRWfoIWuS3uKpagK88ebZn2aM1xwO0sMrMat9JWoVG6HI2yFaiMsYKj2Aq7yjbAk2lOKDfwKpMFf/jPXe7rbLyPfGaNyKNv4vtDH/W1FW4ebC9cj5hvZwPN/8bgf3ajR70BrdmOaMl04C00y1ehWbaSwVeiPNoamUEzsT5mIb4qWo8v2W8tA/8HA7YLX/vNNqfXbx3xsu/rrvPGI7ULIva9xIDLoK92RWOSLRpTFnMopb+pMCxFM7tXx72HvLDZkPlOh9PFBdiR/zHX7/wnjRrwPN2EXeFN2PlDIzzCbuCLk0yhN7D7XBPOpLRBpWlig/YliuM/he66F0QHZyE9/I8Yrt6IxuQPUJtgg+GWr9Gu/JjVbs/hNxWrOFwZ/jrSA2Ygeu9zWH5+IdxzPuJ69dg4A0HJOgQl6RAo0SFAokVIqhZReTqU1GkReHQPRKc/w/CN/Ujxt4Sn8zToqzaiRmyNsF3TMVS3Hf0aFzQkL+XpqfryKCuUnH8Lcr/pSPF5HmfcLbDk3Ftwy3TC9gxH/PbbMQZ2hDVyA4FkIEmL4BQtfszUIad6CBfOhSHkuAeHtxb+E/s3T0Vi8J/QmWMLv8+noSJ2EbqVDqiLt0Xl5UXQ1u9EXfJiqE7NRUbQy5AcnopLXpPh6zoJf/thPrZI1+BfqQ54+ZsxBtyCb4zADS2EybRILB5CQpIMxw+YwsWxP2G3yyuI2P8C4o6/gYeq5chiy3HK60UG98R9pT3UF+ZDGjALMex/gt0m49imSfBea4H3Q+bDVWLPNWOf+agBV/96bParxybfenx6op7NQyPOJl6Hn48B3lXixuGx4mRIC+4gwN8Xm5dOQ3qIJZfftunoq/kCrRnLUHDm9/DbOgVblpjD0+k5+P7DaGASFgW+AVexHTYxzfAeY+B0TDrGXy3NDQg66IyE797j8GuVauiHhzGkH4aeKUsmxk4Xa6z/qwU3USt6B6mBlti1xhwr334WFaUqHNr+Ppz+/CzsrF6C+NIZvHtkDtZdXIp1EcswxWOMgVPjDDAOh1RpcqAuymBmrhvgQ8PQcen5PVuRCOe/z8V3HjPx495Z+HrjC9yE3V9ewZ3btzGo1eNeZxf6BnQY1Onx9gFLTN72azy/3aBRA9GjBhjbYGDEREN9PU9tAA9Dyx5ED6N7Q0MDytVKfPCHX+Gd2VOw9cPF2PP5OrS1t6P86lX09A/hUd8QHvbp0MPUNzDElaDII/g8pllM5mbh0WkmcIMBQ9XVVVUT4JRsgOlqWdljM8a/DQwaIMrcXDzo1aG7R4vuR0z8rkMXu391JJQMvMY0lekZs1NRaaitrUVNTQ2uXbuG6upqVDFwZUUFKsrLcZWlKdNooFGrUVpSgpLiYhQVFnIVFxWhlH02fpevVCInOxsZ6elIk8shl0ohS02FNCUFqcnJSJZI4LLTZ7R+usKZgfHJjbUT/HHCkeT9g6Qh5KtU6GVpqWqq+BHTQ5aakhOckncx3X9IGkTng0F0MG3wODTegGIC3DhwZazmsfCBETjVrGJpewXgD1jNCplMEN7RLWQgUiEI1+qGee1CcEqex9a5p38Uzg3QWjNR7ULwe0IGwsjAeDg3oIe6tFQQTslzc3IE4ZSc1lwI3t41IGRAjsrKSlSwoaPtQ9OtYUNH8BI2dDRohQUFKMjP57XThBM8OysLWRkZfODSFQpeu4wNHcFTkpL4wEkSEpAYH494sRhXLl+GWCSaaODkJbngXqfqCW5MztPTmo/UnpWZOZLcsN0ouXHdCT4+OantvkADJy/KBeFUPW0tUzgdLgYDmSy5ELyTVZ/Ekhvh98bAn2BAJgin7Ua1C8EpOdVuOGBM4bTuVLsJfMRAq5CBUGZACP54rwvAKfn4vW6EU/UJV64wAxPhrZ1CBiJkUI875WjoCK7My+PbjU63bLbmVHt6WprJKUcnXApb86TEREhYcoLH08DFxeEyG7q4mBiIoqMRGxWFmMjIiQZCIqQTkvPamfheH5vcuN1YaqG9zmtnusLgxnU3Jr/b2c81wcD3P0kF4VR7LksuBKfaKbkQnMCUXAh+t+NJBgQOGkpOe90EPjLxlJz2utBBQ4qLjRWE3xEyEHwhdSLcuNfZQWMYOlM4JU9ma/6kvS5i624wYAoXNnA+lX/5NGVigF30gkgvivTl05LJiym9ItMHcvS0NPJqbmb2XyFVeQOkdAGwAAAAAElFTkSuQmCCCw==" />
</group>
<group id="RibbonGroup3" text="대상범위">
<textBox id="tb_sttrange" label="시작" textAreaWidth="30" maxLength="200" textAlign="Center" />
<textBox id="tb_endrange" supportedGroupSizing="TextAlwaysVisible" label="종료" textAreaWidth="30" maxLength="200" textAlign="Center" />
</group>
<group id="RibbonGroup6" text="기능">
<textBox id="tb_ext" supportedGroupSizing="TextAlwaysVisible" label="확장자" textAreaWidth="56" text="JPG" textAlign="Center" />
<button id="RibbonButton11" supportedGroupSizing="LargeImageOnly" text="상태창" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAABwIAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAABqUlEQVQ4T8WQSUtCURiG/UfRokWbaBXUomW0NiIQiYpoRMowpZEGK9P04hW7mVqaDZTNN8Ki0UUFFlZqZbhKNMvhjXs19JYVQdAH7+Icvud5OYf3J9Mz/YjMSCcf0ab1o0H1AKH8Hvz+O5TLfCgVe1HU6kVBgwf5dbdI4UkBuQ0Qmwko1+IYXY5hYCGKHssrJMYXiKgIGskwatUhCMZDqBwJIrfykCt4j0TvRwvhR/VYsrlM6kOJyIPCVOt7cviOtIBaPEAikfg2L9E4gs9xBJ5i8ASiyCuuSAt0cw52ibTsQGPagoJaY8/D5BL6VFZ0jphZuKlLhzoJgcWtU65AM0Nz2jLzsdl1//pZoDSss8v6uV2QszQmppPnAWIBXQoLxENGFq6XalEtVn8WjOpXOK1MsjU7byLYcz3DuHzCFTBvZaDMP2DgXpUNEvkMRP0GFq7pICAQTUA3f5xd8FPz9lkYq87w1wLCTEM5tQm5zs7CMoUV7YMmNHdTLCxsU6OqVZldwDRfXN7AeX6Nfacb9JEbdscVbPQlzBsuUPZ0sgqYi98mhf/r8HhvY0A4grlhOe4AAAAASUVORK5CYIIL" />
<separator id="RibbonSeparator4" />
<checkBox id="chk_autorow" text="줄번호자동계산" checked="True" />
<checkBox id="chk_subdir" text="하위폴더검색" />
<separator id="RibbonSeparator2" />
<button id="bT_netdrvconn" supportedGroupSizing="LargeImageOnly" text="NetDrive 연결" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAYQIAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAACA0lEQVQ4T6WS60uTYRjG94+ElodKEUFRMQ+IKJ5A6YOIRmCsRulgaIJDGSoDzQhFSRQRnRhExL4MMjvQyRObMmcNzyJTxBPaYAQi2eV73TAfBMPIF25eeJ7n+t3XfdDhkp8AmocWz0TTwDzMPV6YOmZheOpGWdMUisyTyK4aQ1rFZ6QYRpCsd5wF/D7+89c4PDqGP3CE3Z+H8G3/wtJGADdzGv8N4Fn2S+ZM0ygcY1sitg37cCPbcjGAmSl2zR2g/dWy2Caw17GG61n1CsCazxPTNjNTnFczjqRyOya9++h4vaIB6hSADTtPzJppm5kppvWvM3viODKzVgHY7aCYFnMfj0s4NeusmWfMTPF71w4sfXOIyKhWAI6K4gVfQIRD79Zh/7KJ6IIWtGn22TDGc/sq3kxsoabrB8LTTQrAOVNc0uAS8cySH4Nvfajt9iK+1CbWX37cgE6nk/vKNg/CUo0KwCW5a53GC+2Sdvm32hZwv9UtTYy93YkWre6qzu8C0T9x41rKIwXgqJgxKOZjY7sHhRr41oNhAYQm6ZFu/IbUhx8EcjXZoABczxHntohZM2sstji180+IK+lHVJ5V67pZbMcUPpMdIPAUwN2mZQbrY0k8ozg6v1nEHFvwfyXuDkIS7ykA58zdZqdJ55LwIUfFbjMza6ZtZqY4JKFcAf7/A04A0AEgNTFacM8AAAAASUVORK5CYIIL" largeImageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAawIAAAKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAACDUlEQVRYR2MYBaNgFIyCIQl6Zm/8DwI37j77v2zj8f+VnQv+Q6XoAyo750Md8BzsgNTyPvo6IL9hOsQBdyAOiM5to68DUsv6oA549n8p0AFBqXX0dUBMXhvUAcAQ2HT8v2dsGX0dAPIx2AHARLh047H/jmH5tHfAv3//OPevqbhxZFP9//1rqv7vWFLyf8Ps3P/LJqb+n9sa839ydfD/2iSHbyB1UC3Eg5YpKzY2T1p+pr5v2Zm63kVnqnoWnQFmrTOlHXPPlLTMOVPcPONMTv2MJ4c31v///mE1GH97Nef/14dt/79cz/n/8XTg/w8Hzf6XhJv/j8xp+R+e1fQ/NKPhf3Ba/f/AlNr//knV/30TKv97x5WDo8s9uhQ1xIqbp7wFhykBcHB9zf/v71f+//PjLtgB325V//94yuf/+/1G/99tlQY7gBhg5Z+J6oCEoi5wagZhULYCYRgfjDcdA+M9Kyv+f3sxDYJBlp/0/v9hn97/t5sl/r9awwF2wDJgmkDWD2PDzAXJG3skIxwAdBBPQnHnmfDMpjPAxHXGI6b0jFt48RnH0PwzdkHZZyx9s86Y+6YBcfr5rQuL/n+5W/3/8+UUoM99/7/fo/3/7SbR/69Wsf1/vowB7ACQ4cRgqPXEA6BDmddOT/42pzX6f0+R7/+6JAewhegYmAgVoVpGwSgYBaNgFAwFwMAAAMFN3fg8pWO7AAAAAElFTkSuQmCCCw==" />
<button id="bt_netdrvdel" supportedGroupSizing="LargeImageOnly" text="NetDrive 제거" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAYQIAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAACA0lEQVQ4T6WS60uTYRjG94+ElodKEUFRMQ+IKJ5A6YOIRmCsRulgaIJDGSoDzQhFSRQRnRhExL4MMjvQyRObMmcNzyJTxBPaYAQi2eV73TAfBMPIF25eeJ7n+t3XfdDhkp8AmocWz0TTwDzMPV6YOmZheOpGWdMUisyTyK4aQ1rFZ6QYRpCsd5wF/D7+89c4PDqGP3CE3Z+H8G3/wtJGADdzGv8N4Fn2S+ZM0ygcY1sitg37cCPbcjGAmSl2zR2g/dWy2Caw17GG61n1CsCazxPTNjNTnFczjqRyOya9++h4vaIB6hSADTtPzJppm5kppvWvM3viODKzVgHY7aCYFnMfj0s4NeusmWfMTPF71w4sfXOIyKhWAI6K4gVfQIRD79Zh/7KJ6IIWtGn22TDGc/sq3kxsoabrB8LTTQrAOVNc0uAS8cySH4Nvfajt9iK+1CbWX37cgE6nk/vKNg/CUo0KwCW5a53GC+2Sdvm32hZwv9UtTYy93YkWre6qzu8C0T9x41rKIwXgqJgxKOZjY7sHhRr41oNhAYQm6ZFu/IbUhx8EcjXZoABczxHntohZM2sstji180+IK+lHVJ5V67pZbMcUPpMdIPAUwN2mZQbrY0k8ozg6v1nEHFvwfyXuDkIS7ykA58zdZqdJ55LwIUfFbjMza6ZtZqY4JKFcAf7/A04A0AEgNTFacM8AAAAASUVORK5CYIIL" largeImageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAvAMAAAKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAADXklEQVRYR+1XbUhTURie+b0+/Cg1M00o2CYlaZhEUMZKMzIVp2kJFkqZomi4qUhpUJCQZJFgZf3QP0EE/uhHP5Io6U/+KulHiH36sfzYnNrc7nb39r53m82vzXs3iMgHHu49Z5z3ed5z3nPOnWgNjrj16DmsxBYXfTjcF7mOCyQUFIg1A7AmogXMDIAZ3+nZ1d0LDGPhaGRYMBotYDCyYDCwoLzRTgaCkWRCOKwGLMCiiJlIJtCACd87u9+gMIqjMCeOwnM2FlQ0kYEwpD8XSCjIAGVr4oQtnLA1a9ZqgMvYKm43oJ/zuAEUXiTOYMZdaIDE7VmT8K/JKWBePoN71TUgFYsjMYT7Bmg9KaPV8EqlEkCZCebqXBityr+ODsQYxssa7Q+gsSgYbl4IsjWdgoqIiomm0yUPR4Vunzi9rw0KkwBqFTBVW9iC/RRj3oRRpcg3VWf36S8rGrDpg1xi0BG0jSgATSXHE5ee0Pqud/YcTIksnj5/FECVCx2qFur3V1dmRLANRV1MWfrQSKk850xMTAj1I3lvVZ/Z2dkanU6n1Gq1quWo0Wjqpp4+eGiqyhw1151lZuqLHhtUeX2m8pODb/MOJWGMTUhaHpczsASUoU281hnJxMS73ubJsgIwnksDY2n6eMeRPRIMQWsfiPRG8hO3wQcFKNNlhe3UjAw1GFvre+ayEmcMchnoUiT6gYz4Chy/AUniwkAzgAJODegGPjaZrxZ/MOXsB4NcCoNyaf1wwpY29d4wizo7sQTDLChMvnA6A7pP/ddM5Vlf2FQZMElbYVqR/ALHRCCD1TtEd8cOxBo+H5OmUhwKxhvxp1qpqgNtz42Oz8aE6G3d2blgORgDjEQM47Kg7yWl9+n3zcgApN9PmfftYVlg/+udojRsC1oKck7BqJCokuf5ShqyW5sQ/sMQ6w8TsQHQExdWh/2UPRUeN+3HceuNxfk1Dki8mrFNcVbehnQSrsTlruP2O53wNXkXfIvyhb7ogPcXQ/3iMAyJO+53WnsyQwm4NuDGdUx3gf2wWVxw1Kbpd74VrQYEX8fhSFoa3ifdPMjAP3Udc9R72ABlypceNSCkCD1sYO2b8C8XIZ9vQkficPcNIOjuXvU34SK6/8cEQRfPgm9CHqRxwk/B/xQi0W+NLqe7ZDOdVwAAAABJRU5ErkJgggs=" />
</group>
<group id="RibbonGroup2" text="백업">
<comboBox id="cbBakType" label="방법" textAreaWidth="100" maxLength="300" textAlign="Center">
<items>
<button id="RibbonButton2" toolTip="백업기능사용하지않음" description="백업기능사용하지않음" text="백업안함" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAmgIAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAACPElEQVQ4T62SXUhTcRjGX8yBljEySq8qIu0DwfaRurSmtDpTC3EJi5orWHT6grKghUtcHxRedBNFg+WFmAWBWIG7MKRhWEKZjMiLg4V0URdtdNEhUtx5Ou/hnK2RXdULL4c//H//8z7P+9B/r8ljjfZJUQhPBHbHx/z1qec+Zyrub4iPHnKGR9qddv3a4jUlCmLipFv62NGCZLAV891e/Oz04LOvEm88FYi12KShthpRv55bDE+faJaT3T7g3iXg/g0gGgJ6AsCRCsBdhPeuEgy6N8r9TbbcR3jsxHFBSnUdBAZU8PFdoLcLuHwAONsAtG8CGs34sYPwqq4Y0foyKeKyZOWw5plTAhAJAv3XsaAsaK30XYUS7cyc5TrCbDXhYXUpehybwzpOxIYlgx7gpgjcOgNl6E4GMlq53YFvtYSZbYSYdRlClvVxHSdit+dC+4GwFwi1amOnx59k4PSzAcyr439xEKbVB15Y8nC6bE1Kx4l4VXPnm4CLzUCgUtOcfvk0+0CsF6nthA9VhCkbYWxrHo6uW5V9gPc86y4Fdpk0t5XIhQxs9Ncrh/HOTnhtJTzaYoJ3dXFWAodkfG+5ppGNMqDv5wQkxdrMmWHua2sLsG/F8qyJnLBhNSQTO1dqLn9Sm79sGGvmsQ24r3wJ2swFkquwMDeVnLDBPRvkUYcZCRVg6O1voAH7i0xyTX7+4mnkhHFIHlSVYNi6VHObDWPNPDb/+a+wUZwwDgnvmVfFbrNhrPmPsf+9iH4BnIuXbbtSdl4AAAAASUVORK5CYIIL" />
<button id="RibbonButton3" toolTip="사용자에의해 지정된 폴더" description="사용자에의해 지정된 폴더" text="사용자지정" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAxwEAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAABaUlEQVQ4T62SoY7DMBBE8wn5hHxCYGFgoWGgYaFhoWGgYaFhoWHhwkLDQsODhmVzu04cJVGl0+lupFEkJ/N2vdnmX+TuEbMJzhOs+MZ2AWZi2wBtPfTVQxn2ZfYSnwG/VXe2WwAtx0DOGfTgTpyDmxzsZBEeoZxv1Q1bALdcRU+CMQbWWnjvC0iNCiGE5YtZ7WkDkDtXSVBrXSwgPWoQ8Ty4k1XvI4AHVqWUgjpzRW47vmIJSyfmasr7zGG5TdubDYCnXTWcBvR9vwtLdX3Razh95T1AflWVzICPdmGZgb/5NZzSEcD/uSq/M2KMMFxRgjILf2YgX6mG4+sAkCWpihQQxhZBd0h8DWmbVAM3CIRKmOIRwBtWRRK8W6TbXDmZDoEB8vSqLWF6pj1A1rNKqsdrjzQp9rBCJGx67oLDgY4A3usiblfuH0auykEJS+v2NNvzxko4PD4AZLdlPWVBivmDn7zE/6Km+QbBzDZjsg+zpQAAAABJRU5ErkJgggs=" />
<button id="RibbonButton4" toolTip="대상폴더아래에 백업폴더가 생성됨" description="대상폴더아래에 백업폴더가 생성됨" text="원본폴더" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAHQEAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAAv0lEQVQ4T+2PMQ6CMBiFuQk9Qm9gNzUxgZGNjm52ZJPRjY5sMrLh6OgN5Ab2BvYGzxbaQCIE42j8kj9p2n6vr8GfaeRFQ1QKXCrEuQITCu7oM/Jao7qhG3kF6FJAWjyIKBX82Je9LGqAJC0Ib0H3qptw28ROHUiLJ+GnXhzLvARis8+ECdlIhNGE7DEhdHdUeizTTPcNrLw+M3d1HvMdxrL2XY6aZdnThdjKgzxfew4bQpPqO9mzOty5W/4uQfACo5CUy0GM/SwAAAAASUVORK5CYIIL" />
<button id="RibbonButton5" toolTip="대상폴더위에 백업폴더가 생성됨" description="대상폴더위에 백업폴더가 생성됨" text="상위폴더" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAFQEAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAAt0lEQVQ4T+WQMRLCIBREuUk4AjeQTq2ktAslnZSWlOlCaWduIEfIDcwN9AZ6g/WTgI3jJLS6MzvDwLz9+2E/rtXhKtOxXHV7k6q5o9pdVLpargx3PSBtYUiEdYJ9AHQHCDPEkPl16vYhMuwItgSr5glhyZpC1ufvIQTzDNtTBKm+o+kEczM5Nflch2rzuLNyA9RxcoZH7zsIFe3BNx7VduZPYsAbTgHpaZnGBraHNAFSh/KAvxJjL5VJj/JQWF2VAAAAAElFTkSuQmCCCw==" />
</items>
</comboBox>
<comboBox id="cbBakTarget" label="대상" textAreaWidth="100" textAlign="Center">
<items>
<button id="RibbonButton6" toolTip="대상파일이 속해있는 폴더를 백업합니다." description="대상파일이 속해있는 폴더를 백업합니다." text="폴더" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAQgMAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAC5ElEQVQ4T52Te0xNcQDHz9iMGcOMDTNjxrzfsjwqinARq6mZx7yWWWp5hBAR1dSEZL0ot3BvIZV5lFeRR5T3c6QVdbv3nHvvuZd1zcevm2Hmsflt3//O57vz/fzOkWqq7qPPjOPEkVi0Kbs5mhRJyoFtJMVtJiF6A9K/ji5zL5/t+c58+VTwPTgKUOp0HIgK/ntJdlq0gPP4ZPklsh6HRUtRfpKz5He5V6pHyjy8i4+KDnvDEWzVMahP12C564NyeRTGgm7oj8WDehqsuWDOBlMqGJM5nzyRBT5eSMfF9qaH/pRGORf11UZRvBrrg0WifB7mm14UJroyX+OBpE2NplEtwmG/gsNWjEO9KF69kEYlT8A5qC/XY32yCmvlAsx35qDc8EC5OoYzCS74Tp+ElHE4CrUunY+mLOyGNGwfDmKvjsX2JgL1RSjWxyuxVARgua3BXOrunGa62J+c+NHM9RqPlJ4YiVKdiL0+FXvtfmzv9qC+3oL6LATro2VY7s3HfGs6SskE5OIRyBf6CTc9OBE7kjmTxyElJ0RgeB6DrWafgKOwvdok9gaJvUuwlPtiLpuGct0VpXgopvN9MOV3w3C6I9o9w9C4j0U6FBdObUU46ttIISsMa5OsSiGr3EfI8kS55oJcNBjTud4Yz3YVcAcM+jZk7BzKTLcxSPtjwqguCxF714m9gWJvk6zZKKUeyEKWfGmAgHthzOuC4VR76nWtqTvekvTtg5sL4netpaokUOxdgfW+v5A1E3OJG7KQJV/oj7GwJw15nTHktKP+ZCsBt+B9lkTKtoHNBbE7gqm63iTLT8jybpZ1ebjY21fI6k7DmU4CbvsD1krUZEokbx3QXLAjbCUPz86m4pSGu/oZlGVP5VrGFIpS3ShMGu+8b93eUWRFj+DoziGkRQxywt8LtoQuIyxoEaGBAQQt9SNw4VyWB2hY7OctPlVP/DXu+HpPxMfTlVmTXZzQz/n2S/3vkaSvaQyAu2FP740AAAAASUVORK5CYIIL" />
<button id="RibbonButton7" toolTip="대상 파일을 백업합니다" description="대상 파일을 백업합니다" text="파일" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAPAEAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAA3klEQVQ4T8WTIRLDIBBFOVKOUFkZWRlZiaxEVnIEZCQyEhnJESIrkXU0y2ZhmUJFK8rMm2QY/vsbZiJ+XlJvkZiAOzIqwMfx5uMJkMhwrUkCs8SEToSoLaLmAxOibJAFuf2YgNo/NRPCLD72VngyArIBD2Q4T30BD8MZCMOTKAKLArfC2KbCriXImwG/ZYFLglFqvEAG7GXBHuIT+N1YCYaLShfHgT1oJgE1Q/hNYPdDEODA51Fzf4LZVRfWum0MlOZ6Ai5ohIsgtCfQJOiEW80ECoxLL99y/FJ/W0K8AOyVhkPEPv4fAAAAAElFTkSuQmCCCw==" />
</items>
</comboBox>
<separator id="RibbonSeparator1" />
<button id="RibbonButton1" supportedGroupSizing="TextAlwaysVisible" text="폴더선택" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAjAIAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAACLklEQVQ4T8WS60vTcRyFf/9AEhmRBEWWiAXDwJDqRYgRpSUUpYaSKeWlIBMKcaZtat4256VGOqxNt7a1Wc00RQsh0SRCSx0lpmZBUSmmhkpe9vRzG6Ld3nrgvPlynsPhw1dYfdUYiiNE87sbzHlF7sj/tRju79ExM251+ueYkbkRLZaqImyG7Cx37N+yVquYHjOtgBe+lDNnT8F0pwB9RS7am1loSjK5pZRyIz8VN+qSWadg+ptuCXaIMP1SsCf81X8U3K3M58dnzRLcVKNwutFSSJ0xn4f6XCzabIwaOVXqa9wuvUqFSopakeYq02tymfxQ5pw91CbDZlKxMCSH4ZyVfi++DaZD32V4c4Hue+Ekx4ZVC1p1NhMDBfBRSa25iI5mpSu0fPrrGOg8wXx7KDNPgnhXLSHxdPDEpbNHdwqVpTK+v5Uz3J6BzajEMSiD3kQX2B0ngpHMd4Qx03KQyYZ9jNbsQp7kQ2SwZ4nzBuWqDEZ70rhvUNDVKi7pSxELzkFXNI4Xx5h9dpippv2M2QL4avaj8/paokK9CfBd4+ssUBdK6W3J5IGhEAYy4ZU49+VJZtuOMPU0iPG6QEYsEj7ptmNXeiJL2Ib/Dq96J7yosrxUrFUF2B+d57k1iVZTPC36OJq1MTRWRvO4/BT1yxwVstUR6L8lxI0LQnHOFYpl8eSlnSH9YgTJcWHEhh/g+KE9BO+VsFvig5/3JjZ7rWfDOg82enqs/AerLEH4BRliwr/WwwpQAAAAAElFTkSuQmCCCw==" largeImageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAVQcAAAKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAG90lEQVRYR+3W21dT1xYGcB76eMb5E6TeesZRq5Zaj1RF6wWKUqVSEYuA3EUQ1IAgCAG5NjQIgUoQSeWieNRDvYCiaBXBogIqwlGEGhBCCEmAXJFLyNe5d7YgovbFR+cY6409futbc60ZrD7Wx6qvzferLBepzpUcwbvWb6WZKDuVicpLIlV9tdiP+/TDFIN3tRfjpebsO5eh/wyMA2fwoq0IV84dUXGffphikhnUp94Kv7mYvyvJTwH36Ycp5oiN/X+/gaGBUgypS2DokyA/Kw65GTHIEUQiM4UH4eG9EMSFICU6CHyeL+J5OxET6oGseC/z6WzP97eM2YBBVfJWdGKxeDGMKgmMfXkwyn+BsScTRpkQxu50GF6kwiCNh6E9Evpn+zHQHILBx8ForPBDctSW97eM2YBOUfR2mFksXkR4AYy9HNz1M6EpMHQmw9CRAP2fh6Br3QdtSxA0TQHQPNiJgcYdUNa5Y5/Ppve3jNmARl74DvwUhlQnYFSIKXU2DJRW35kIw5+xlPQA9K37oXu6F9rm3VDf3w7VHRcoalwgv+EI2bV16K5cgwhvh7/fwIBMMg1nj1yRD71MROhP0EkToG2LhraVBw2BmkfeGGxwx0C9G1S1Tqg/6waJwAcxYV6I2u0OXsA27PVxQYjnZgRtd4K/qyN8XOzh5bwOga5rzKl7VjVObED94vhUXFUEXXcO1E8ToWw6COXDcCgbQ6BqCITyvjeUd1zRd3sT+m46ovfaCsgv29DF80V7XRJGu4UY7RJglO6FiVpk6jgMk5SP8eeHMN4eRSsCugdh+HHDKoh5Nv9hN6CU5k3BtV3ZkD1MRtV5AT27VJzITcLx7HiImZv/UySOJPOQHh+GtEPBSIwKpJvvh1G5CCbq/Vj9Dozc246RP1zxsnYLhqo3wfD7RuivO0B3dT0GK1ZDfX4Zdm1dObkBRftRC95fDH1PLpRPElBdkY5n9SLL83u1+kvY1rxUF2JYKcFw3zGM0P0YoctpeuCFsYYdGJ3AXWCs3gzDTSfCv4XuGuGXv4Hqt2W4KfwS+7fZqtkWnCkSorf1FxY39uZioD0Z0rsxNIIFGOrNZ48TT0OBlsCpq5lZ/hhv8oHpISVncLqIw3Vc8tubYWTwGxZcS3j/+a8hL12EAx62EIXY+LMbOP1rOnqeUFJKou1Ig6KRh9oraXh4JxvDijy2f/h/8LQNmB8T/siXPXZTowfhP07HrzsSbg/NlTUYvLQSiv/aoPnoPPhtWGLi81d9wm7gZEEaultoHHelo78lEtKaUJw8ngydvACjsgyMP+MRGDQNNzcRziTn8JG7hNMzHLrtDOMtJjmDU/LKtdR3O6jKlkFWPB8Zu22QGvBFCYszVZSXjM6mDGjaDkF+Lxg15UlouJ1F/c3HGE03PAmZgoPDx1ncE6P1hNdt43BKfus7GCi5vsqew1ej/+JyNn2r+DPs2LjcnLVnzj853srq16OHIW1Mh/pRKNpvBqFQnEDpJRjpEcHMpt81gZvZnluSm1jc/TXcmS4c4Wxye+gI11SswsClFZR+KXoovYS3ELE7F9VxtKXyRXFou5eCrhpf1JbzcatCwKVPmNr75gDu2L3Z5GP3Cb/rhuE7PxD+vSU5h2uvWpIPEq6mW684vRjSgs/g4WSLrD3zZ3O0pcQZB/G0mo+2q74ozI2DujMfI7IjGKcxO5meS07Tz3Ls7vTcLPjLGsKrCf99A3RVDuyxay4z+Er21ivPfglZ0b9xNmYewt0XP+fYyToqiEBTVTRqL8bg4ul49m2bmN5PpGeS+1HPGdwLo/Tc2OR/bMVQzRZKvgl6wvUMfnUd4d9M4KpzSyAvmY/O47Ph77wUmYEL1nPsZOWkhqKhPAoF2dFQd+RR77Po5oez6c107OOPCX9Eb50GDdtzGjQMbknOTDlKzgwaFueSX7Al/Cv0nvwcLwrm4HrSXPh//7mWI6dWZmIwqs/zUVYYw777sY5EmLmbb34NfzXl2OT01i34RhZnkzNvvdyO8OVQ/Y/wU4RL5uC52BqxnouQ5D0vnSOnVgZ/FySiCPS00I9I989c71/HLVPOMt+5Y2dwZtBUEU4/u9rXcHXZV1CULiR8LqR51mgUWsN97cLJwfNmCeMCUSqm6VfqhupjdriROR9Vwn/hWvpcVApm40raLFSkfIpLSda4cNgaZfwZOBM7A6UxM1B8cAZORFqjIMIax/Z/itx9M5ETNhNZoTORETwLgqBZCN22ALEeCy5w3PTKTjuAV0uYEIZU+r8uPtwX0SEeCA9wxZ6dzthFv+c+P9jD03kt3J1Ww22DHVy/XYmtDivgsn45Nq9dhu9WL4Wj3RI4rLDB+q+/wDrbxRMrZ/e8f3Dcx/pYb5SV1V8GhlREGzFabAAAAABJRU5ErkJgggs=" />
</group>
<group id="RibbonGroup8" text="메뉴">
<button id="RibbonButton10" supportedGroupSizing="LargeImageOnly" text="종료" textImageRelation="ImageAboveText" imageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAYQIAAAKJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAACA0lEQVQ4T6WS60uTYRjG94+ElodKEUFRMQ+IKJ5A6YOIRmCsRulgaIJDGSoDzQhFSRQRnRhExL4MMjvQyRObMmcNzyJTxBPaYAQi2eV73TAfBMPIF25eeJ7n+t3XfdDhkp8AmocWz0TTwDzMPV6YOmZheOpGWdMUisyTyK4aQ1rFZ6QYRpCsd5wF/D7+89c4PDqGP3CE3Z+H8G3/wtJGADdzGv8N4Fn2S+ZM0ygcY1sitg37cCPbcjGAmSl2zR2g/dWy2Caw17GG61n1CsCazxPTNjNTnFczjqRyOya9++h4vaIB6hSADTtPzJppm5kppvWvM3viODKzVgHY7aCYFnMfj0s4NeusmWfMTPF71w4sfXOIyKhWAI6K4gVfQIRD79Zh/7KJ6IIWtGn22TDGc/sq3kxsoabrB8LTTQrAOVNc0uAS8cySH4Nvfajt9iK+1CbWX37cgE6nk/vKNg/CUo0KwCW5a53GC+2Sdvm32hZwv9UtTYy93YkWre6qzu8C0T9x41rKIwXgqJgxKOZjY7sHhRr41oNhAYQm6ZFu/IbUhx8EcjXZoABczxHntohZM2sstji180+IK+lHVJ5V67pZbMcUPpMdIPAUwN2mZQbrY0k8ozg6v1nEHFvwfyXuDkIS7ykA58zdZqdJ55LwIUfFbjMza6ZtZqY4JKFcAf7/A04A0AEgNTFacM8AAAAASUVORK5CYIIL" largeImageBase64="AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAJwcAAAKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA68AAAOvAGVvHJJAAAGyUlEQVRYR+2Wa1CUVRjHmb4108emMlFkl0WiBIFlF1gWFESQ5SaEiGBqCuZdM8trYzeHsqzUaibNHE2dLh8qu4xdtJxGk4sIe2PZXXbZXVBAUGRhYd+Ff8953+OAYVpNH2qm/8yZ98zsu+f3PM95Lm/Q//rPyJ4eFW7Njltjy1XXu/NnDLgWaAOOIpXQmqP2O7Lj+4xJYb9YUhUVpuSIcP6Xf0aG1Mj7POWzTndvKgtg/1bg6G5p7aP9m88CuzdiYJkO7jlx0KvkuBg9wWdOUhyxJCgm8iP+vuyF6qLe1SUCDr4EfPwWcP5zwPATUP0N8P0J4Ph+4O1twI6lwOq58C/NRPfjSWhKiUB1XHCHJVlRyo/662qdl7LP+/T8EbyxEbhAYHcN4DiPkdpvMPLTxxg+eQDDR19DYO9mCK+shH/rE/BvKIZvdQGul2rhypqO8zEPDZk1ip38yD+v1nma3Bsb5o3gwE7Aeha40gCYTgN130rwL99H4MirEvzlFfBvLod/XRH6V+RhYFU+blRmo2fJbLTnKVGtmjhoTpJv5UffXa6E4Hs7lqYP4S26XwbvaoTvzHHYNhbCujYH1uUZ6Nj+BAJvE/zFSgjPlaG7YjbsBVGw5U+DLe8xXC7VoKs8DVfmp8CZHYPz0yd5LVqFjiPuLEdJ6pfYuYy8PQl01tOdn4bn0KsQrl/FgMsGr9UA06YF6KzIgH/94/CuyIV+0Qx4mw3i6tNXo2NdKTpLNGgvTkJbgRqW9Eg0qEL0tkTZAxxzezVnTQtuK87w4/N36c4viPCR2q/Rd3w3Am0tGCtDiQrdS9JhK1HD5x79TbjiRkeFDp5iDTwEbyuIh0sXi/roEMGkkW9BUNA9HDde7oKkCk95JtB4Cmih8Nd8PXrnn76D4f4bHAP0/Poj7BRy1yEqyTG6XvUMXUEK2kq0cBclkhHxaC1QwjwjQoyCVSufxHHjZZsTf+bai8uBS6cwUidl+wiDH94FoWoNZf5HHCOphZXgGPWfPIErZTPQNl8rRsBFBrgLVXDlxcGaFYXayEkDpjuVpnlW9GVhj1R2Iz8cw/AXUrYLVWshrC/GIGW6YLzIcbdqyG4ieKrouYfu3lWUAGeBCs68eDhz42DPni5WhDFBtp/jxsuQKPeKHe7UUQx/tg/DDL7nGfi3LRbhPmo2/c9XYrivl2NHdXVbhei5m+CtHN6Sr0QLwZ35ZEBuLOpUkwcvqWTfc9x4kXVeVK0DPtmPwIe7qM63QNi+BINrC+FbVYD+lXloL02C+/AbHCup87vPYM2NJrhmFE6e2wluzYlBK8FZBJgBjWrZWY4bL72KDHiunNrrFgnOmsymUgxQd/OuzKUQa9Ggi4DQ28PRo2p8SgfHXCUc3HPmsZWy36qLgSMnFjZ6cgN+5rjxMqgUnb6FGcD2JyG8UAk/GTP49Dyx1nsrdWjOiRSz/3ZiRtXNlpPnStgIbiPPGZw9W+jJInHXCJjVinPtOiXwVD6ETWVie/VSa+2l1tpemgzH3h0cJ6n32Ht8J4ldRePMUNFbBmfLTmAWDUtmFBo0k3sb1LJTHDdelpSpG41JCviXZYrwG8vJ8+U6gmugXzzzltD3n/sBLpp8147QRBwj68uroU8PGzWAFjPIlPYoLkaFXDWqZbs4bryatOGhv8Y8NNhNyTREiccMuLY0C03ZEegz1XEExCrwLJoNZ6Ga7jwePmrBN8WMrKUGJYafLfK+mRLQoA311yuDnTSYZnLc7UUvHLckT8U1GqlXl2ShvYza7Y4Kfrykrte3wjmX4PlSprvXl91Sml0H90hwSkZ29yZqQjVKWY9eOeUre1rogxx1e7EoVMeG9Lhz4tC1mEYqGeApTUO7WONSd7tZ4/ZcAvBMH7sY3E7vsH2TjrxPe2TgonJSq0mjWHTHWXBTTZrwVRfiHx5qzydQkRbOIg31dar/woQxZcZq/A/gFB22F0OfEhmoVgZ3GBJlB+86DcfKmBi2r0YdPNRCEEueNFQ8BHbRclBvt4+Bs1ITs53tWf3T3jInWoTXq2WXaQidbE4Ji+FH/3kZE+RVtdEP+ixpkeJAYYv1ddZaWXdjDcaRFyvWudR4yGsKuTlzmhh25jmD07ehmh/518WmV4NqsqU+ekrATB+bNvLMPme6CGRRYCEXPaY6N2U8JmY7Szh25yzsf8vz34t9YtPH5fZLcaFGFpEa1cShRlWIYEiZCmOiTKhXK3ysydTFhHSzUmNeG5PlC5tSw+/nR/wzYhVi1oQtMKhlHzTEh56pU4foa2NDWihCF1iHMyTIdjcly7NM2ogJ/C//69+uoKDfAAHz7yrp9MNHAAAAAElFTkSuQmCCCw==" />
</group>
</tab>
</tabs>
<tabGroups />
</ribbon>

29
파일관리자.xml Normal file
View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE dotfuscator SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v2.1.dtd">
<dotfuscator version="2.1">
<!--응용 프로그램에서 생성한 코드입니다. 수동으로 편집하지 마십시오.-->
<input>
<asmlist>
<inputassembly>
<file dir="E:\Tinsky\VB.NET\FileManager\DriveInfo\bin\Debug" name="CommonClassv2.dll" />
</inputassembly>
<inputassembly>
<file dir="E:\Tinsky\VB.NET\FileManager\DriveInfo\bin\Debug" name="FileManager.exe" />
</inputassembly>
</asmlist>
</input>
<output>
<file dir="E:\Tinsky\VB.NET\FileManager\DriveInfo\bin\난독처리" />
</output>
<renaming>
<excludelist>
<module name="FileManager.exe" assemblyname="FileManager" />
<type name="CommonClassv2.My.MyProject/ThreadSafeObjectProvider`1&lt;T&gt;" />
</excludelist>
<mapping>
<mapoutput overwrite="false">
<file dir="${configdir}\Dotfuscated" name="Map.xml" />
</mapoutput>
</mapping>
</renaming>
</dotfuscator>