initial commit

This commit is contained in:
Chikyun
2019-02-23 23:02:52 +09:00
commit 52e5dbff19
477 changed files with 77326 additions and 0 deletions

307
Epole/dialogForm/DemoDlg.Designer.vb generated Normal file
View File

@@ -0,0 +1,307 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class DemoDlg
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
Friend WithEvents TableLayoutPanel As System.Windows.Forms.TableLayoutPanel
Friend WithEvents LogoPictureBox As System.Windows.Forms.PictureBox
Friend WithEvents LabelProductName As System.Windows.Forms.Label
Friend WithEvents LabelVersion As System.Windows.Forms.Label
Friend WithEvents LabelCompanyName As System.Windows.Forms.Label
Friend WithEvents LabelCopyright As System.Windows.Forms.Label
'Windows Form 디자이너에 필요합니다.
Private components As System.ComponentModel.IContainer
'참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다.
'수정하려면 Windows Form 디자이너를 사용하십시오.
'코드 편집기를 사용하여 수정하지 마십시오.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(DemoDlg))
Me.TableLayoutPanel = New System.Windows.Forms.TableLayoutPanel
Me.LogoPictureBox = New System.Windows.Forms.PictureBox
Me.LabelProductName = New System.Windows.Forms.Label
Me.LabelVersion = New System.Windows.Forms.Label
Me.LabelCopyright = New System.Windows.Forms.Label
Me.LabelCompanyName = New System.Windows.Forms.Label
Me.Panel1 = New System.Windows.Forms.Panel
Me.Button4 = New System.Windows.Forms.Button
Me.Button3 = New System.Windows.Forms.Button
Me.Button2 = New System.Windows.Forms.Button
Me.Button1 = New System.Windows.Forms.Button
Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel
Me.lb_ip = New System.Windows.Forms.Label
Me.lb_expiredate = New System.Windows.Forms.Label
Me.lb_usertype = New System.Windows.Forms.Label
Me.lb_remaincnt = New System.Windows.Forms.Label
Me.lb_msg = New System.Windows.Forms.Label
Me.TableLayoutPanel.SuspendLayout()
CType(Me.LogoPictureBox, System.ComponentModel.ISupportInitialize).BeginInit()
Me.Panel1.SuspendLayout()
Me.TableLayoutPanel1.SuspendLayout()
Me.SuspendLayout()
'
'TableLayoutPanel
'
Me.TableLayoutPanel.ColumnCount = 2
Me.TableLayoutPanel.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.0!))
Me.TableLayoutPanel.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67.0!))
Me.TableLayoutPanel.Controls.Add(Me.LogoPictureBox, 0, 0)
Me.TableLayoutPanel.Controls.Add(Me.LabelProductName, 1, 0)
Me.TableLayoutPanel.Controls.Add(Me.LabelVersion, 1, 1)
Me.TableLayoutPanel.Controls.Add(Me.LabelCopyright, 1, 2)
Me.TableLayoutPanel.Controls.Add(Me.LabelCompanyName, 1, 3)
Me.TableLayoutPanel.Controls.Add(Me.Panel1, 1, 5)
Me.TableLayoutPanel.Controls.Add(Me.TableLayoutPanel1, 1, 4)
Me.TableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill
Me.TableLayoutPanel.Location = New System.Drawing.Point(10, 8)
Me.TableLayoutPanel.Name = "TableLayoutPanel"
Me.TableLayoutPanel.RowCount = 7
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.0!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.0!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.0!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.565217!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 46.95652!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 13.47826!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 8.0!))
Me.TableLayoutPanel.Size = New System.Drawing.Size(527, 250)
Me.TableLayoutPanel.TabIndex = 0
'
'LogoPictureBox
'
Me.LogoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill
Me.LogoPictureBox.Image = CType(resources.GetObject("LogoPictureBox.Image"), System.Drawing.Image)
Me.LogoPictureBox.Location = New System.Drawing.Point(3, 3)
Me.LogoPictureBox.Name = "LogoPictureBox"
Me.TableLayoutPanel.SetRowSpan(Me.LogoPictureBox, 7)
Me.LogoPictureBox.Size = New System.Drawing.Size(167, 244)
Me.LogoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
Me.LogoPictureBox.TabIndex = 0
Me.LogoPictureBox.TabStop = False
'
'LabelProductName
'
Me.LabelProductName.Dock = System.Windows.Forms.DockStyle.Fill
Me.LabelProductName.Location = New System.Drawing.Point(180, 0)
Me.LabelProductName.Margin = New System.Windows.Forms.Padding(7, 0, 3, 0)
Me.LabelProductName.MaximumSize = New System.Drawing.Size(0, 16)
Me.LabelProductName.Name = "LabelProductName"
Me.LabelProductName.Size = New System.Drawing.Size(344, 16)
Me.LabelProductName.TabIndex = 0
Me.LabelProductName.Text = "제품 이름"
Me.LabelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
'
'LabelVersion
'
Me.LabelVersion.Dock = System.Windows.Forms.DockStyle.Fill
Me.LabelVersion.Location = New System.Drawing.Point(180, 24)
Me.LabelVersion.Margin = New System.Windows.Forms.Padding(7, 0, 3, 0)
Me.LabelVersion.MaximumSize = New System.Drawing.Size(0, 16)
Me.LabelVersion.Name = "LabelVersion"
Me.LabelVersion.Size = New System.Drawing.Size(344, 16)
Me.LabelVersion.TabIndex = 0
Me.LabelVersion.Text = "버전"
Me.LabelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
'
'LabelCopyright
'
Me.LabelCopyright.Dock = System.Windows.Forms.DockStyle.Fill
Me.LabelCopyright.Location = New System.Drawing.Point(180, 48)
Me.LabelCopyright.Margin = New System.Windows.Forms.Padding(7, 0, 3, 0)
Me.LabelCopyright.MaximumSize = New System.Drawing.Size(0, 16)
Me.LabelCopyright.Name = "LabelCopyright"
Me.LabelCopyright.Size = New System.Drawing.Size(344, 16)
Me.LabelCopyright.TabIndex = 0
Me.LabelCopyright.Text = "저작권"
Me.LabelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
'
'LabelCompanyName
'
Me.LabelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill
Me.LabelCompanyName.Location = New System.Drawing.Point(180, 72)
Me.LabelCompanyName.Margin = New System.Windows.Forms.Padding(7, 0, 3, 0)
Me.LabelCompanyName.MaximumSize = New System.Drawing.Size(0, 16)
Me.LabelCompanyName.Name = "LabelCompanyName"
Me.LabelCompanyName.Size = New System.Drawing.Size(344, 16)
Me.LabelCompanyName.TabIndex = 0
Me.LabelCompanyName.Text = "회사 이름"
Me.LabelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
'
'Panel1
'
Me.Panel1.BackColor = System.Drawing.Color.Transparent
Me.Panel1.Controls.Add(Me.Button4)
Me.Panel1.Controls.Add(Me.Button3)
Me.Panel1.Controls.Add(Me.Button2)
Me.Panel1.Controls.Add(Me.Button1)
Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill
Me.Panel1.Location = New System.Drawing.Point(176, 211)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(348, 26)
Me.Panel1.TabIndex = 2
'
'Button4
'
Me.Button4.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Button4.BackColor = System.Drawing.Color.Transparent
Me.Button4.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Button4.Location = New System.Drawing.Point(71, 1)
Me.Button4.Name = "Button4"
Me.Button4.Size = New System.Drawing.Size(62, 25)
Me.Button4.TabIndex = 4
Me.Button4.Text = "인증2(&B)"
Me.Button4.UseVisualStyleBackColor = False
'
'Button3
'
Me.Button3.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Button3.BackColor = System.Drawing.Color.Transparent
Me.Button3.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Button3.Location = New System.Drawing.Point(2, 1)
Me.Button3.Name = "Button3"
Me.Button3.Size = New System.Drawing.Size(69, 25)
Me.Button3.TabIndex = 3
Me.Button3.Text = "인증1(&A)"
Me.Button3.UseVisualStyleBackColor = False
'
'Button2
'
Me.Button2.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Button2.BackColor = System.Drawing.Color.Transparent
Me.Button2.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Button2.Location = New System.Drawing.Point(133, 1)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(83, 25)
Me.Button2.TabIndex = 2
Me.Button2.Text = "홈페이지(&H)"
Me.Button2.UseVisualStyleBackColor = False
'
'Button1
'
Me.Button1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Button1.BackColor = System.Drawing.Color.Transparent
Me.Button1.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Button1.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte))
Me.Button1.Location = New System.Drawing.Point(284, 1)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(64, 25)
Me.Button1.TabIndex = 1
Me.Button1.Text = "확인(&O)"
Me.Button1.UseVisualStyleBackColor = False
'
'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.lb_ip, 0, 4)
Me.TableLayoutPanel1.Controls.Add(Me.lb_expiredate, 0, 1)
Me.TableLayoutPanel1.Controls.Add(Me.lb_usertype, 0, 2)
Me.TableLayoutPanel1.Controls.Add(Me.lb_remaincnt, 0, 3)
Me.TableLayoutPanel1.Controls.Add(Me.lb_msg, 0, 0)
Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill
Me.TableLayoutPanel1.Location = New System.Drawing.Point(173, 95)
Me.TableLayoutPanel1.Margin = New System.Windows.Forms.Padding(0)
Me.TableLayoutPanel1.Name = "TableLayoutPanel1"
Me.TableLayoutPanel1.RowCount = 5
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!))
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!))
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!))
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.0!))
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
Me.TableLayoutPanel1.Size = New System.Drawing.Size(354, 113)
Me.TableLayoutPanel1.TabIndex = 3
'
'lb_ip
'
Me.lb_ip.AutoSize = True
Me.lb_ip.Location = New System.Drawing.Point(3, 92)
Me.lb_ip.Name = "lb_ip"
Me.lb_ip.Size = New System.Drawing.Size(53, 12)
Me.lb_ip.TabIndex = 1
Me.lb_ip.Text = "아이피 : "
'
'lb_expiredate
'
Me.lb_expiredate.AutoSize = True
Me.lb_expiredate.Location = New System.Drawing.Point(3, 23)
Me.lb_expiredate.Name = "lb_expiredate"
Me.lb_expiredate.Size = New System.Drawing.Size(77, 12)
Me.lb_expiredate.TabIndex = 0
Me.lb_expiredate.Text = "인증만료일 : "
'
'lb_usertype
'
Me.lb_usertype.AutoSize = True
Me.lb_usertype.Location = New System.Drawing.Point(3, 46)
Me.lb_usertype.Name = "lb_usertype"
Me.lb_usertype.Size = New System.Drawing.Size(73, 12)
Me.lb_usertype.TabIndex = 0
Me.lb_usertype.Text = "사용자형태 :"
'
'lb_remaincnt
'
Me.lb_remaincnt.AutoSize = True
Me.lb_remaincnt.Location = New System.Drawing.Point(3, 69)
Me.lb_remaincnt.Name = "lb_remaincnt"
Me.lb_remaincnt.Size = New System.Drawing.Size(93, 12)
Me.lb_remaincnt.TabIndex = 0
Me.lb_remaincnt.Text = "사용가능 횟수 : "
'
'lb_msg
'
Me.lb_msg.AutoSize = True
Me.lb_msg.Dock = System.Windows.Forms.DockStyle.Fill
Me.lb_msg.Location = New System.Drawing.Point(3, 0)
Me.lb_msg.Name = "lb_msg"
Me.lb_msg.Size = New System.Drawing.Size(348, 23)
Me.lb_msg.TabIndex = 0
Me.lb_msg.Text = "."
Me.lb_msg.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'DemoDlg
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(547, 266)
Me.Controls.Add(Me.TableLayoutPanel)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "DemoDlg"
Me.Padding = New System.Windows.Forms.Padding(10, 8, 10, 8)
Me.ShowInTaskbar = False
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "사용자확인"
Me.TableLayoutPanel.ResumeLayout(False)
CType(Me.LogoPictureBox, System.ComponentModel.ISupportInitialize).EndInit()
Me.Panel1.ResumeLayout(False)
Me.TableLayoutPanel1.ResumeLayout(False)
Me.TableLayoutPanel1.PerformLayout()
Me.ResumeLayout(False)
End Sub
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents Panel1 As System.Windows.Forms.Panel
Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel
Friend WithEvents Button2 As System.Windows.Forms.Button
Friend WithEvents Button3 As System.Windows.Forms.Button
Friend WithEvents lb_expiredate As System.Windows.Forms.Label
Friend WithEvents lb_usertype As System.Windows.Forms.Label
Friend WithEvents lb_remaincnt As System.Windows.Forms.Label
Friend WithEvents lb_msg As System.Windows.Forms.Label
Friend WithEvents Button4 As System.Windows.Forms.Button
Friend WithEvents lb_ip As System.Windows.Forms.Label
End Class

View File

@@ -0,0 +1,609 @@
<?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.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LogoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

View File

@@ -0,0 +1,86 @@
Public NotInheritable Class DemoDlg
Private Sub DemoDlg_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If UserInfo.Type = E_AuthType.Demo AndAlso UserInfo.Cnt > 10 Then
End
Else
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Dispose()
End If
End Sub
Private Sub DemoDlg_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' 폼의 제목을 설정합니다
Dim ApplicationTitle As String
If My.Application.Info.Title <> "" Then
ApplicationTitle = My.Application.Info.Title
Else
ApplicationTitle = System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName)
End If
Me.Text = String.Format("{0} 정보", ApplicationTitle)
' 정보 상자에 표시되는 모든 텍스트를 초기화합니다.
' TODO: "프로젝트" 메뉴에서 선택하여 표시되는 프로젝트 속성 대화 상자의 "응용 프로그램" 창에서 응용 프로그램의
' 어셈블리 정보를 사용자 지정합니다.
Me.LabelProductName.Text = My.Application.Info.ProductName
Me.LabelVersion.Text = String.Format("버전 {0}", My.Application.Info.Version.ToString)
Me.LabelCopyright.Text = My.Application.Info.Copyright
Me.LabelCompanyName.Text = My.Application.Info.CompanyName
Display_info()
If UserInfo.Type = E_AuthType.Demo AndAlso UserInfo.Cnt > 10 Then '//사용불가다
Me.Button1.Text = "끝내기(&O)"
End If
'Me.TextBoxDescription.Text = My.Application.Info.Description
End Sub
Private Sub Display_info()
Me.lb_expiredate.Text = "인증만료일 : " & UserInfo.ExpireDate
Select Case UserInfo.Type
Case E_AuthType.Dev
Me.lb_usertype.Text = "사용자형태 : 관리자"
Case E_AuthType.Demo
Me.lb_usertype.Text = "사용자형태 : 임시(일부기능만 사용가능)"
Me.lb_remaincnt.Text = "사용 횟수 : " & UserInfo.Cnt & "/10" & IIf(UserInfo.Cnt > 10, "[사용횟수초과]", "")
Case E_AuthType.Normal
Me.lb_usertype.Text = "사용자형태 : 정상"
End Select
Me.lb_ip.Text = "아이피 : " & GetFirstIP()
End Sub
Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Process.Start(HomePage)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim auth As New CEpole.Auth
Dim NewKey As String = InputBox("인증번호1을 입력하세요")
If NewKey <> "" AndAlso auth.check_key1(NewKey) Then '//뭔가있고 정상이라면
ini.Write("main", "key1", NewKey)
Me.DialogResult = Windows.Forms.DialogResult.OK
MsgBox("인증번호1을 정상적으로 등록했습니다" & vbCrLf & "프로그램을 재실행하세요")
Else
MsgBox("취소되었거나 정상적인 키가 아닙니다", MsgBoxStyle.Critical, "오류")
Me.Close()
End If
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim auth As New CEpole.Auth
Dim NewKey As String = InputBox("인증번호2를 입력하세요")
If NewKey <> "" AndAlso auth.Check_key2(NewKey) Then '//뭔가있고 정상이라면
ini.Write("main", "key2", NewKey)
Me.DialogResult = Windows.Forms.DialogResult.OK
MsgBox("인증번호2를 정상적으로 등록했습니다" & vbCrLf & "프로그램을 재실행하세요")
Else
MsgBox("취소되었거나 정상적인 키가 아닙니다", MsgBoxStyle.Critical, "오류")
Me.Close()
End If
End Sub
End Class

154
Epole/dialogForm/Frm_ViewSetup.Designer.vb generated Normal file
View File

@@ -0,0 +1,154 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Frm_ViewSetup
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.Label1 = New System.Windows.Forms.Label
Me.Label2 = New System.Windows.Forms.Label
Me.Label3 = New System.Windows.Forms.Label
Me.tb_nulltext = New System.Windows.Forms.TextBox
Me.tb_hangul = New System.Windows.Forms.TextBox
Me.tb_nextrow = New System.Windows.Forms.TextBox
Me.bt_ok = New System.Windows.Forms.Button
Me.bt_cancel = New System.Windows.Forms.Button
Me.tb_defstyleidx = New System.Windows.Forms.TextBox
Me.Label4 = New System.Windows.Forms.Label
Me.SuspendLayout()
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(44, 27)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(393, 12)
Me.Label1.TabIndex = 0
Me.Label1.Text = "데이터없이 엔터키를 눌렀을때 전줄의 값을 복사할 열이름을 입력하세요"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(44, 74)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(409, 12)
Me.Label2.TabIndex = 0
Me.Label2.Text = "해당 필드에 커서가 왓을때 입력형태를 한글로 지정할 열이름을 입력하세요"
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(44, 121)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(353, 12)
Me.Label3.TabIndex = 0
Me.Label3.Text = "엔터키를 눌렀을때 다음줄로 커서를 이동할 열이름을 입력하세요"
'
'tb_nulltext
'
Me.tb_nulltext.Location = New System.Drawing.Point(46, 43)
Me.tb_nulltext.Name = "tb_nulltext"
Me.tb_nulltext.Size = New System.Drawing.Size(699, 21)
Me.tb_nulltext.TabIndex = 0
'
'tb_hangul
'
Me.tb_hangul.Location = New System.Drawing.Point(46, 89)
Me.tb_hangul.Name = "tb_hangul"
Me.tb_hangul.Size = New System.Drawing.Size(699, 21)
Me.tb_hangul.TabIndex = 1
'
'tb_nextrow
'
Me.tb_nextrow.Location = New System.Drawing.Point(46, 136)
Me.tb_nextrow.Name = "tb_nextrow"
Me.tb_nextrow.Size = New System.Drawing.Size(699, 21)
Me.tb_nextrow.TabIndex = 2
'
'bt_ok
'
Me.bt_ok.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.bt_ok.Location = New System.Drawing.Point(46, 217)
Me.bt_ok.Name = "bt_ok"
Me.bt_ok.Size = New System.Drawing.Size(407, 33)
Me.bt_ok.TabIndex = 4
Me.bt_ok.Text = "저장"
Me.bt_ok.UseVisualStyleBackColor = True
'
'bt_cancel
'
Me.bt_cancel.Location = New System.Drawing.Point(462, 217)
Me.bt_cancel.Name = "bt_cancel"
Me.bt_cancel.Size = New System.Drawing.Size(283, 33)
Me.bt_cancel.TabIndex = 5
Me.bt_cancel.Text = "취소"
Me.bt_cancel.UseVisualStyleBackColor = True
'
'tb_defstyleidx
'
Me.tb_defstyleidx.Location = New System.Drawing.Point(46, 183)
Me.tb_defstyleidx.Name = "tb_defstyleidx"
Me.tb_defstyleidx.Size = New System.Drawing.Size(699, 21)
Me.tb_defstyleidx.TabIndex = 3
Me.tb_defstyleidx.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
'
'Label4
'
Me.Label4.AutoSize = True
Me.Label4.Location = New System.Drawing.Point(44, 168)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(441, 12)
Me.Label4.TabIndex = 6
Me.Label4.Text = "출력시 사용할 기본 스타일의 번호입니다. (번호는 위에서부터 0으로 시작합니다)"
'
'Frm_ViewSetup
'
Me.AcceptButton = Me.bt_ok
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.CancelButton = Me.bt_ok
Me.ClientSize = New System.Drawing.Size(787, 259)
Me.Controls.Add(Me.tb_defstyleidx)
Me.Controls.Add(Me.Label4)
Me.Controls.Add(Me.bt_cancel)
Me.Controls.Add(Me.bt_ok)
Me.Controls.Add(Me.tb_nextrow)
Me.Controls.Add(Me.tb_hangul)
Me.Controls.Add(Me.tb_nulltext)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Name = "Frm_ViewSetup"
Me.Text = "뷰설정창"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents tb_nulltext As System.Windows.Forms.TextBox
Friend WithEvents tb_hangul As System.Windows.Forms.TextBox
Friend WithEvents tb_nextrow As System.Windows.Forms.TextBox
Friend WithEvents bt_ok As System.Windows.Forms.Button
Friend WithEvents bt_cancel As System.Windows.Forms.Button
Friend WithEvents tb_defstyleidx As System.Windows.Forms.TextBox
Friend WithEvents Label4 As System.Windows.Forms.Label
End Class

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>

View File

@@ -0,0 +1,32 @@
Public Class Frm_ViewSetup
Public Sub New(ByVal 빈값복사줄() As String, ByVal 한글필드줄() As String, ByVal 다음줄열 As String, ByVal 기본스타일인덱스 As Short)
' 이 호출은 Windows Form 디자이너에 필요합니다.
InitializeComponent()
' InitializeComponent() 호출 뒤에 초기화 코드를 추가하십시오.
Me.tb_nulltext.Text = ""
Me.tb_hangul.Text = ""
Me.tb_nextrow.Text = 다음줄열
For i As Short = 0 To 빈값복사줄.GetUpperBound(0)
Me.tb_nulltext.Text &= 빈값복사줄(i)
If i < 빈값복사줄.GetUpperBound(0) Then Me.tb_nulltext.Text &= ","
Next
For i As Short = 0 To 한글필드줄.GetUpperBound(0)
Me.tb_hangul.Text &= 한글필드줄(i)
If i < 한글필드줄.GetUpperBound(0) Then Me.tb_hangul.Text &= ","
Next
Me.tb_defstyleidx.Text = 기본스타일인덱스
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_cancel.Click
Me.DialogResult = Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub
Private Sub bt_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_ok.Click
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
End Sub
End Class

142
Epole/dialogForm/SplashScreen.Designer.vb generated Normal file
View File

@@ -0,0 +1,142 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class SplashScreen
Inherits System.Windows.Forms.Form
'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Friend WithEvents MainLayoutPanel As System.Windows.Forms.TableLayoutPanel
'Windows Form 디자이너에 필요합니다.
Private components As System.ComponentModel.IContainer
'참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다.
'수정하려면 Windows Form 디자이너를 사용하십시오.
'코드 편집기를 사용하여 수정하지 마십시오.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.MainLayoutPanel = New System.Windows.Forms.TableLayoutPanel
Me.lb_msg = New System.Windows.Forms.Label
Me.DetailsLayoutPanel = New System.Windows.Forms.TableLayoutPanel
Me.Copyright = New System.Windows.Forms.Label
Me.Version = New System.Windows.Forms.Label
Me.ApplicationTitle = New System.Windows.Forms.Label
Me.MainLayoutPanel.SuspendLayout()
Me.DetailsLayoutPanel.SuspendLayout()
Me.SuspendLayout()
'
'MainLayoutPanel
'
Me.MainLayoutPanel.BackColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(255, Byte), Integer))
Me.MainLayoutPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
Me.MainLayoutPanel.ColumnCount = 1
Me.MainLayoutPanel.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 286.0!))
Me.MainLayoutPanel.Controls.Add(Me.lb_msg, 0, 2)
Me.MainLayoutPanel.Controls.Add(Me.DetailsLayoutPanel, 0, 1)
Me.MainLayoutPanel.Controls.Add(Me.ApplicationTitle, 0, 0)
Me.MainLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill
Me.MainLayoutPanel.Location = New System.Drawing.Point(0, 0)
Me.MainLayoutPanel.Name = "MainLayoutPanel"
Me.MainLayoutPanel.RowCount = 3
Me.MainLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 70.0!))
Me.MainLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 18.0!))
Me.MainLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.0!))
Me.MainLayoutPanel.Size = New System.Drawing.Size(424, 252)
Me.MainLayoutPanel.TabIndex = 0
'
'lb_msg
'
Me.lb_msg.BackColor = System.Drawing.Color.Transparent
Me.lb_msg.Dock = System.Windows.Forms.DockStyle.Fill
Me.lb_msg.Font = New System.Drawing.Font("굴림", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte))
Me.lb_msg.ForeColor = System.Drawing.Color.Black
Me.lb_msg.Location = New System.Drawing.Point(3, 221)
Me.lb_msg.Name = "lb_msg"
Me.lb_msg.Size = New System.Drawing.Size(418, 31)
Me.lb_msg.TabIndex = 2
Me.lb_msg.Text = "[]"
Me.lb_msg.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'DetailsLayoutPanel
'
Me.DetailsLayoutPanel.BackColor = System.Drawing.Color.Transparent
Me.DetailsLayoutPanel.ColumnCount = 1
Me.DetailsLayoutPanel.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 490.0!))
Me.DetailsLayoutPanel.Controls.Add(Me.Copyright, 0, 1)
Me.DetailsLayoutPanel.Controls.Add(Me.Version, 0, 0)
Me.DetailsLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill
Me.DetailsLayoutPanel.Location = New System.Drawing.Point(3, 179)
Me.DetailsLayoutPanel.Name = "DetailsLayoutPanel"
Me.DetailsLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 53.0303!))
Me.DetailsLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 46.9697!))
Me.DetailsLayoutPanel.Size = New System.Drawing.Size(418, 39)
Me.DetailsLayoutPanel.TabIndex = 1
'
'Copyright
'
Me.Copyright.BackColor = System.Drawing.Color.Transparent
Me.Copyright.Dock = System.Windows.Forms.DockStyle.Fill
Me.Copyright.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Copyright.ForeColor = System.Drawing.Color.Black
Me.Copyright.Location = New System.Drawing.Point(3, 20)
Me.Copyright.Name = "Copyright"
Me.Copyright.Size = New System.Drawing.Size(484, 19)
Me.Copyright.TabIndex = 2
Me.Copyright.Text = "저작권"
'
'Version
'
Me.Version.BackColor = System.Drawing.Color.Transparent
Me.Version.Dock = System.Windows.Forms.DockStyle.Fill
Me.Version.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Version.ForeColor = System.Drawing.Color.Black
Me.Version.Location = New System.Drawing.Point(3, 0)
Me.Version.Name = "Version"
Me.Version.Size = New System.Drawing.Size(484, 20)
Me.Version.TabIndex = 1
Me.Version.Text = "Version {0}.{1:00}.{2}.{3}"
'
'ApplicationTitle
'
Me.ApplicationTitle.BackColor = System.Drawing.Color.Transparent
Me.ApplicationTitle.Dock = System.Windows.Forms.DockStyle.Fill
Me.ApplicationTitle.Font = New System.Drawing.Font("맑은 고딕", 20.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte))
Me.ApplicationTitle.Location = New System.Drawing.Point(3, 0)
Me.ApplicationTitle.Name = "ApplicationTitle"
Me.ApplicationTitle.Size = New System.Drawing.Size(418, 176)
Me.ApplicationTitle.TabIndex = 0
Me.ApplicationTitle.Text = "응용 프로그램 제목"
Me.ApplicationTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'SplashScreen
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(424, 252)
Me.ControlBox = False
Me.Controls.Add(Me.MainLayoutPanel)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "SplashScreen"
Me.ShowInTaskbar = False
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.MainLayoutPanel.ResumeLayout(False)
Me.DetailsLayoutPanel.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
Friend WithEvents ApplicationTitle As System.Windows.Forms.Label
Friend WithEvents lb_msg As System.Windows.Forms.Label
Friend WithEvents DetailsLayoutPanel As System.Windows.Forms.TableLayoutPanel
Friend WithEvents Copyright As System.Windows.Forms.Label
Friend WithEvents Version As System.Windows.Forms.Label
End Class

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>

View File

@@ -0,0 +1,274 @@
Public NotInheritable Class SplashScreen
Dim install, installkey As Long
Dim auth As New ACC.MyAuth
Dim Runcnt As Integer = 0
Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If My.Application.Info.Title <> "" Then
ApplicationTitle.Text = My.Application.Info.Title
Else
'응용 프로그램 제목이 없는 경우 확장명 없이 응용 프로그램 이름을 사용합니다.
ApplicationTitle.Text = System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName)
End If
Version.Text = System.String.Format(Version.Text, My.Application.Info.Version.Major, My.Application.Info.Version.Minor, My.Application.Info.Version.Build, My.Application.Info.Version.Revision)
'저작권 정보
Copyright.Text = My.Application.Info.Copyright
Me.Show() : My.Application.DoEvents()
If Not LoadINI() Then End '//환경파일 불러오기실패시 종료한다.
ReadAuth()
If Command().ToUpper = "ARIN2506" Then
UserInfo.Type = E_AuthType.Dev '//파라미터로 운영자모드 가능하게
End If
My.Settings("ireaConnectionString") = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DataBase\irea.mdb"
'If Not ReadAuth() Then DemoDlg.ShowDialog()
If Not LoadReg() Then End '//레지스트리정보 실패시 종료
If Not Connect() Then End '//연결정보 실패시 종료
Me.lb_msg.Text = ""
MakeList.Show()
Me.Dispose()
End Sub
Private Function ReadAuth() As Boolean
'//먼저파일에 있는 키를 체크한다.
Dim Key1 As String = ini.Read("main", "key1", "")
Dim key2 As String = ini.Read("main", "key2", "")
Dim KeyCnt As String = ini.Read("main", "keycount", "11" & CStr(11).GetHashCode) '//없으면 최대로한다.
If key2 = "" Then UserInfo.Permission = "A" '//아무것도 없으면 1번메뉴만 실행가능하게한다.
Try
If IsNumeric(KeyCnt.Substring(2)) = False Then
UserInfo.Cnt = 11
UserInfo.Type = E_AuthType.Demo
UserInfo.Permission = "A"
Return False
End If
Catch ex As Exception
UserInfo.Cnt = 11
UserInfo.Type = E_AuthType.Demo
UserInfo.Permission = "A"
Return False
End Try
'//둘다비어있으면 데모상태로한다.
If Key1 = "" AndAlso key2 = "" Then
UserInfo.Type = E_AuthType.Demo
If CStr(11).GetHashCode = KeyCnt.Substring(2) Then '//가져온 카운트랑 10이랑같으면 다썻다는 말이다.
UserInfo.Cnt = 11
Else '//아니라면 아직 무료횟수가 남았다는ㄱ다
Dim Cnt As Integer = KeyCnt.Substring(0, 2) '//02 라고치자
Cnt += 1 '//하나증가해서 기록한다.
ini.Write("main", "keycount", Format(Cnt, "00") & Format(Cnt, "00").GetHashCode)
UserInfo.Cnt = Cnt
End If
Return False
End If
Dim auth As New CEpole.Auth
If Key1.IndexOf("%") = -1 Then Key1 = "0%" & Key1
If Not auth.check_key1(Key1) OrElse Not auth.Check_key2(key2) Then '//키중에 오류가있다면 사용불가로한다.
UserInfo.Cnt = 11
UserInfo.Type = E_AuthType.Demo
UserInfo.Permission = "A"
Return False
End If
'//여기까지왓다면 둘다 정상이란소리다. :
'//IP가 맞는지 확인
Dim Cip() As String = GetFirstIP.Split(".")
Dim Cipsum As Short = 0
Dim IPok As Boolean = False
For Each a As String In Cip
Try
Cipsum += Val(a)
Catch ex As Exception
IPok = True
'//아이피에 문제가잇다 이거는 메일보낸다. 그리고 사용은 가능하게한다.
End Try
Next
'If IPok = False Then
' If Cipsum <> Val(Key1.Split("%")(0)) Then '//인증코드의 아이피의 합과 현재아이피의 합이 틀리다면
' UserInfo.Cnt = 11 '//데모상태로 전환한다.
' UserInfo.Type = E_AuthType.Demo
' UserInfo.Permission = "A"
' Return False
' End If
'End If
'//권한정보셋팅
UserInfo.Permission = key2.Split("%")(0).ToCharArray
Dim k() As String = Key1.Split("%")
'//닐짜비교()
Dim Curdate As Date = Today
Dim UserDate As Date = CDate(k(1).Substring(0, 4) & "-" & k(1).Substring(4, 2) & "-" & k(1).Substring(6, 2))
If curdate > UserDate Then '//지정된날짜가 오늘보다 컷을경우 즉 기간을 오버했다는것이다. 사용불가이다.
UserInfo.Cnt = 11
UserInfo.Type = E_AuthType.Demo
Return False
Else '//정상사용자이다
UserInfo.ExpireDate = UserDate.ToShortDateString
UserInfo.Type = E_AuthType.Normal
Return True
End If
End Function
Private Sub SetAuth(ByVal NewDate As Date)
Dim auth As New ACC.MyAuth
Dim Arinini As New MyINI(My.Application.Info.DirectoryPath & "\epole.ini")
Arinini.Write("main", "install", auth.GetDateNumber(NewDate))
Arinini.Write("main", "installkey", auth.GetDateNumberEnc(NewDate))
MsgBox("기록완료")
End Sub
Private Function LoadINI() As Boolean
Me.lb_msg.Text = "환경설정 데이터를 읽어옵니다"
Dim Arinini As New MyINI(My.Application.Info.DirectoryPath & "\epole.ini")
Dim buf() As String
If Not Arinini.Exist Then
MsgBox("환경설정파일 EPOLE.INI 가 존재하지 않습니다" & vbCrLf & "[시작-설정-프로그램설정]을 다시 실행해주세요", MsgBoxStyle.Information, "환경설정오류")
Arinini.Create()
Return True
End If
Try
Auto_Log = CType(Arinini.Read("MAIN", "log"), Boolean)
Common.PICmanFile = Arinini.Read("MAIN", "PICMAN")
Common.MakeState = Arinini.Read("main", "makestate")
Common.PoleState = Arinini.Read("main", "polestate")
Common.PoleEtcState = Arinini.Read("main", "poleetcstate")
Common.PicState = Arinini.Read("main", "picstate")
Common.NUMCOLOR = Arinini.Read("MAIN", "NUMCOLOR", True)
SORTNULL = Arinini.Read("MAIN", "SortNull", True)
buf = Arinini.Read("main", "viewfont", "굴림,9").Split(",")
Common.ViewFont.FontName = buf(0)
Common.ViewFont.FontSize = buf(1)
Me.install = Arinini.Read("main", "install", 0)
Me.installkey = Arinini.Read("main", "installkey", 0)
buf = Arinini.Read("main", "menufont", "굴림,9").Split(",")
Common.MenuFont.FontName = buf(0)
Common.MenuFont.FontSize = buf(1)
buf = Arinini.Read("main", "formfont", "굴림,11").Split(",")
Common.FormFont.FontName = buf(0)
Common.FormFont.FontSize = buf(1)
Common.HelpWebSite = Arinini.Read("main", "helpweb")
Common.HomePage = Arinini.Read("main", "homepage")
Catch ex As Exception
MsgBox("환경설정 파일을 불러올수 없습니다" & vbCrLf & vbCrLf & "오류메세지=" & ex.Message.ToString _
& vbCrLf & "[시작-설정-프로그램설정]을 다시 실행해주세요", MsgBoxStyle.Critical, "오류")
End Try
Return True
End Function
Private Function LoadReg() As Boolean
Me.lb_msg.Text = "레지스트리 데이터를 읽어옵니다"
Me.Invalidate()
Try
Catch ex As Exception
MsgBox("레지스트리를 확인할 수 없습니다", MsgBoxStyle.Critical, "오류")
End Try
Return True
End Function
Private Function Connect() As Boolean
Me.lb_msg.Text = "데이터베이스확인중..."
Dim Dbpath As String = My.Application.Info.DirectoryPath & "\database"
If Not System.IO.File.Exists(DataBaseFile) Then Return False
Dim Dbini As New MyINI(Dbpath & "\patch.ini")
'Return True
'//데이터베이스 버젼을 확인한다.
Dim Cn As New OleDbConnection(My.Settings.ireaConnectionString)
Try
Cn.Open()
Catch ex As Exception
MsgBox("데이터베이스를 열수 없습니다" & vbCrLf & "데이터베이스 파일이 손상되었는지 사용중인지 확인하세요", MsgBoxStyle.Critical, "오류")
Return False
End Try
If Cn.State <> ConnectionState.Open Then
MsgBox("데이터베이스를 열수 없습니다" & vbCrLf & "데이터베이스 파일이 손상되었는지 사용중인지 확인하세요", MsgBoxStyle.Critical, "오류")
Return False
End If
Dim Dbversion As Short = 0
Dim ErrMsg As String = ""
Dim Cmd As New OleDbCommand("select version from dbinfo", Cn)
Try
Dbversion = ADBC.DbBase.NVL(Cmd.ExecuteScalar, 0)
Catch ex As OleDb.OleDbException
ErrMsg = ex.Message.ToString
End Try
If ErrMsg.IndexOf("dbinfo") >= 0 Then ''//테이블이 없을경우이다.
Cmd = New OleDbCommand("create table dbinfo ( version number )", Cn)
Cmd.ExecuteNonQuery() '//테이블생성
Cmd = New OleDbCommand("insert into dbinfo(version) values(0)", Cn)
Cmd.ExecuteNonQuery()
Dbversion = 0
End If
Cmd = New OleDbCommand("select count(*) from dbinfo", Cn)
Dim RowCnt As Short = Cmd.ExecuteScalar
If RowCnt = 0 Then
Cmd = New OleDbCommand("insert into dbinfo(version) values(0)", Cn)
Cmd.ExecuteNonQuery()
End If
If Dbini.Exist = False Then
MsgBox("데이터베이스 업데이트 파일이 없습니다")
Return True
End If
Me.lb_msg.Text = "데이터베이스 업그레이드"
Dim MaxVersion As Short = Dbini.Read("db", "version", "0")
For i As Short = Dbversion + 1 To MaxVersion '//순서대로 쿼리를 실행한다.
'//파일을 불러와서 파일의 내용을 ; 만날때마다 실행한다.
If System.IO.File.Exists(Dbpath & "\version" & i & ".sql") Then
Dim Fs As New System.IO.FileStream(Dbpath & "\version" & i & ".sql", IO.FileMode.Open)
Dim SR As New System.IO.StreamReader(Fs, System.Text.Encoding.Default)
Dim Str As String = SR.ReadToEnd
For Each Sql As String In Str.Split(";")
If Sql.Trim <> "" Then
Cmd = New OleDbCommand(Sql, Cn)
Try
'MsgBox("다음쿼리를 실행합니다" & Sql.Trim)
Cmd.ExecuteNonQuery() '//테이블생성
Catch ex As Exception
'//이부분은 나중에 메일로 보내도록한다.
'MsgBox("데이터베이스 업그레이드오류 버젼=" & i & vbCrLf & ex.Message.ToString & vbCrLf & Sql, MsgBoxStyle.Critical, "확인")
End Try
End If
Next
End If
Next
Cmd = New OleDbCommand("update dbinfo set version=" & MaxVersion, Cn)
Try
Cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
Cmd.Dispose()
Cn.Close()
Cn.Dispose()
Return True
End Function
End Class