WebView2 Fixed Version 호환성 문제 해결 - NuGet 패키지 버전 업데이트 및 환경 설정 개선
This commit is contained in:
19
unimarc/.claude/settings.local.json
Normal file
19
unimarc/.claude/settings.local.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"hooks": {
|
||||
"conversation-start": "새로운 대화를 시작할 때 항상 CLAUDE.md 파일을 자동으로 읽고 프로젝트 컨텍스트를 파악하세요",
|
||||
"user-prompt-submit": "작업을 시작하기 전에 항상 CLAUDE.md 파일을 읽고 참조하세요"
|
||||
},
|
||||
"rules": [
|
||||
"대화 시작 시 반드시 CLAUDE.md 파일을 읽어서 프로젝트 컨텍스트를 파악할 것",
|
||||
"모든 답변은 한국어로 작성할 것",
|
||||
"UniMarc 프로젝트는 C# WinForms 기반의 도서관 관리 시스템임"
|
||||
],
|
||||
"context_files": [
|
||||
"CLAUDE.md"
|
||||
],
|
||||
"project_info": {
|
||||
"name": "UniMarc",
|
||||
"type": "도서관 자료 관리 시스템",
|
||||
"tech_stack": "C# WinForms, .NET Framework 4.7.2, MySQL"
|
||||
}
|
||||
}
|
||||
6
unimarc/.cursor/settings.json
Normal file
6
unimarc/.cursor/settings.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"hooks": {
|
||||
"conversation-start": "새로운 대화를 시작할 때 항상 CLAUDE.md 파일을 자동으로 읽고 프로젝트 컨텍스트를 파악하세요",
|
||||
"user-prompt-submit": "작업을 시작하기 전에 항상 CLAUDE.md 파일을 읽고 참조하세요"
|
||||
}
|
||||
}
|
||||
9
unimarc/.cursorignore
Normal file
9
unimarc/.cursorignore
Normal file
@@ -0,0 +1,9 @@
|
||||
# 이 파일들은 항상 컨텍스트에 포함
|
||||
!CLAUDE.md
|
||||
!.claude/settings.local.json
|
||||
|
||||
# 제외할 파일들
|
||||
bin/
|
||||
obj/
|
||||
*.dll
|
||||
*.pdb
|
||||
1
unimarc/.cursorrules
Normal file
1
unimarc/.cursorrules
Normal file
@@ -0,0 +1 @@
|
||||
CLAUDE.md 파일을 참조하여 답변하세요
|
||||
48
unimarc/CLAUDE.md
Normal file
48
unimarc/CLAUDE.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# ⚠️ 중요: 대화 시작시 이 파일을 반드시 읽으세요!
|
||||
# 답변은 가급적이면 한글로!
|
||||
# UniMarc 프로젝트 - Claude 작업 가이드
|
||||
|
||||
> **Claude에게**: 대화를 시작할 때마다 이 파일을 먼저 읽어서 프로젝트 컨텍스트를 파악하세요.
|
||||
|
||||
## 프로젝트 개요
|
||||
- **프로젝트명**: UniMarc (도서관 자료 관리 시스템)
|
||||
- **기술스택**: C# WinForms, .NET Framework 4.7.2
|
||||
- **데이터베이스**: MySQL
|
||||
- **주요기능**: 마크 작성, 복본조사, DLS 연동, 도서 정보 관리
|
||||
|
||||
## 코딩 컨벤션
|
||||
- 파일명: PascalCase (예: DLS_Copy.cs)
|
||||
- 클래스명: PascalCase
|
||||
- 메서드명: PascalCase
|
||||
- 변수명: camelCase
|
||||
- 상수명: UPPER_CASE
|
||||
|
||||
## 주요 디렉토리 구조
|
||||
- `/마크/`: 마크 관련 폼들
|
||||
- `/납품관리/`: 납품 관리 관련 폼들
|
||||
- `/마스터/`: 마스터 데이터 관리 폼들
|
||||
- `/홈/`: 메인 화면 관련 폼들
|
||||
- `/회계/`: 회계 관련 폼들
|
||||
|
||||
## 개발 시 주의사항
|
||||
1. WebView2 사용 시 async/await 패턴 적용
|
||||
2. 데이터베이스 연결은 Helper_DB 클래스 사용
|
||||
3. 에러 처리는 try-catch 블록으로 처리
|
||||
4. 한글 주석 사용
|
||||
|
||||
## 빌드 및 배포
|
||||
- Visual Studio 2019 이상 필요
|
||||
- NuGet 패키지 복원 후 빌드
|
||||
- WebView2 런타임 필요
|
||||
- NetFX 프로젝트이므로 dotnet 명령은 사용 불가
|
||||
|
||||
## MsBuild 실행파일 위치 (경로에 공백이 있으니 쌍따옴표로 감싸야 함)
|
||||
## 매개변수 입력할때 platform 은 제거하고 그냥 프로젝트명만 입력
|
||||
F:\(VHD) Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\msbuild.exe
|
||||
|
||||
## 프로젝트 파일명
|
||||
UniMarc.csproj
|
||||
|
||||
## Webview2 Fixed Version 다운로드 주소
|
||||
https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/759b508a-00bb-4724-9b87-2703c8417737/Microsoft.WebView2.FixedVersionRuntime.139.0.3405.86.x86.cab
|
||||
|
||||
51
unimarc/README.md
Normal file
51
unimarc/README.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# UniMarc - 도서관 자료 관리 시스템
|
||||
|
||||
## 📋 프로젝트 개요
|
||||
- **프로젝트명**: UniMarc
|
||||
- **목적**: 도서관 자료 관리 시스템
|
||||
- **기술스택**: C# WinForms, .NET Framework 4.7.2
|
||||
- **데이터베이스**: MySQL
|
||||
- **주요기능**: 마크 작성, 복본조사, DLS 연동, 도서 정보 관리
|
||||
|
||||
## 🛠️ 개발 환경
|
||||
- Visual Studio 2019 이상
|
||||
- .NET Framework 4.7.2
|
||||
- WebView2 Runtime
|
||||
- MySQL 데이터베이스
|
||||
|
||||
## 📁 디렉토리 구조
|
||||
```
|
||||
unimarc/
|
||||
├── 마크/ # 마크 관련 폼들
|
||||
├── 납품관리/ # 납품 관리 관련 폼들
|
||||
├── 마스터/ # 마스터 데이터 관리 폼들
|
||||
├── 홈/ # 메인 화면 관련 폼들
|
||||
├── 회계/ # 회계 관련 폼들
|
||||
├── 편의기능/ # 편의 기능들
|
||||
└── 작업일지/ # 작업 일지 관련
|
||||
```
|
||||
|
||||
## 🔧 빌드 방법
|
||||
```cmd
|
||||
# MSBuild 사용
|
||||
"F:\(VHD) Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\MSBuild.exe" UniMarc.csproj
|
||||
```
|
||||
|
||||
## ⚠️ 중요 주의사항
|
||||
1. **MSBuild 경로**: 공백이 포함되어 있어 쌍따옴표 필수
|
||||
2. **WebView2**: async/await 패턴 적용 필요
|
||||
3. **데이터베이스**: Helper_DB 클래스 사용
|
||||
4. **에러 처리**: try-catch 블록 필수
|
||||
5. **한글 주석** 사용
|
||||
|
||||
## 📝 코딩 컨벤션
|
||||
- 파일명: PascalCase
|
||||
- 클래스명: PascalCase
|
||||
- 메서드명: PascalCase
|
||||
- 변수명: camelCase
|
||||
- 상수명: UPPER_CASE
|
||||
|
||||
## 🔄 최근 주요 변경사항
|
||||
- DLS_Copy.cs: webBrowser1 → WebView2로 교체
|
||||
- NuGet.Config: HTTPS 소스로 변경
|
||||
- System.Runtime.CompilerServices.Unsafe 버전 충돌 해결
|
||||
@@ -9,6 +9,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Factory_Client", "Factory_C
|
||||
EndProject
|
||||
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "UniMarcSetup", "UniMarcSetup\UniMarcSetup.vdproj", "{B0A88F76-DC68-44F9-90B4-CD94625CC1F4}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "솔루션 항목", "솔루션 항목", "{2A3A057F-5D22-31FD-628C-DF5EF75AEF1E}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
CLAUDE.md = CLAUDE.md
|
||||
.claude\settings.local.json = .claude\settings.local.json
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
||||
10
unimarc/unimarc/.claude/settings.local.json
Normal file
10
unimarc/unimarc/.claude/settings.local.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(\"F:\\(VHD) Program Files\\Microsoft Visual Studio\\2022\\MSBuild\\Current\\Bin\\msbuild.exe\" \"UniMarc.csproj\")",
|
||||
"Bash(\"F:\\(VHD) Program Files\\Microsoft Visual Studio\\2022\\MSBuild\\Current\\Bin\\msbuild.exe\" \"UniMarc.csproj\")",
|
||||
"Bash(\"F:\\(VHD) Program Files\\Microsoft Visual Studio\\2022\\MSBuild\\Current\\Bin\\msbuild.exe\" \"UniMarc.csproj\")"
|
||||
],
|
||||
"deny": []
|
||||
}
|
||||
}
|
||||
23
unimarc/unimarc/.vscode/launch.json
vendored
Normal file
23
unimarc/unimarc/.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "UniMarc Debug (.NET Framework)",
|
||||
"type": "clr",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build",
|
||||
"program": "${workspaceFolder}/bin/Debug/UniMarc.exe",
|
||||
"args": [],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"console": "internalConsole",
|
||||
"stopAtEntry": false,
|
||||
"enableStepFiltering": false
|
||||
},
|
||||
{
|
||||
"name": "UniMarc Attach (.NET Framework)",
|
||||
"type": "clr",
|
||||
"request": "attach",
|
||||
"processName": "UniMarc.exe"
|
||||
}
|
||||
]
|
||||
}
|
||||
3
unimarc/unimarc/.vscode/settings.json
vendored
Normal file
3
unimarc/unimarc/.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"dotnet.preferCSharpExtension": true
|
||||
}
|
||||
50
unimarc/unimarc/.vscode/tasks.json
vendored
Normal file
50
unimarc/unimarc/.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "build",
|
||||
"command": "\"F:\\(VHD) Program Files\\Microsoft Visual Studio\\2022\\MSBuild\\Current\\Bin\\msbuild.exe\"",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"UniMarc.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary"
|
||||
],
|
||||
"group": "build",
|
||||
"presentation": {
|
||||
"reveal": "always"
|
||||
},
|
||||
"problemMatcher": "$msCompile"
|
||||
},
|
||||
{
|
||||
"label": "publish",
|
||||
"command": "msbuild",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"UniMarc.csproj",
|
||||
"/p:Configuration=Release",
|
||||
"/p:PublishProfile=FolderProfile"
|
||||
],
|
||||
"group": "build",
|
||||
"presentation": {
|
||||
"reveal": "silent"
|
||||
},
|
||||
"problemMatcher": "$msCompile"
|
||||
},
|
||||
{
|
||||
"label": "watch",
|
||||
"command": "msbuild",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"UniMarc.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary"
|
||||
],
|
||||
"group": "build",
|
||||
"presentation": {
|
||||
"reveal": "silent"
|
||||
},
|
||||
"problemMatcher": "$msCompile"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -37,12 +37,12 @@ namespace WindowsFormsApp1
|
||||
public string DB_User_Data;
|
||||
public string User;
|
||||
public string com_idx;
|
||||
|
||||
|
||||
public Main()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public string User_Name { get; internal set; }
|
||||
@@ -53,7 +53,7 @@ namespace WindowsFormsApp1
|
||||
|
||||
|
||||
this.Visible = false; // 메인폼을 먼저 숨김
|
||||
|
||||
|
||||
#region "Log setting"
|
||||
var logsubdir = "{yyyy|MM|dd}";
|
||||
string tPath = string.Format("{0}\\LOG", AppDomain.CurrentDomain.BaseDirectory).Replace("\\\\", "\\"); ;
|
||||
@@ -64,10 +64,12 @@ namespace WindowsFormsApp1
|
||||
login login = new login();
|
||||
VersionText.Text = string.Format("UniMarc Ver.{0}", ip.VersionInfo());
|
||||
|
||||
if (DialogResult.OK == login.ShowDialog(this)) {
|
||||
if (DialogResult.OK == login.ShowDialog(this))
|
||||
{
|
||||
this.Visible = true;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
@@ -146,7 +148,7 @@ namespace WindowsFormsApp1
|
||||
#region 즐겨찾기 버튼 세팅
|
||||
public void SetBtnName()
|
||||
{
|
||||
string Area =
|
||||
string Area =
|
||||
"`ShortCut1`, `ShortCut2`, `ShortCut3`, `ShortCut4`, `ShortCut5`, " +
|
||||
"`ShortCut6`, `ShortCut7`, `ShortCut8`, `ShortCut9`, `ShortCut10`, " +
|
||||
"`ShortCut11`, `ShortCut12`";
|
||||
@@ -241,7 +243,7 @@ namespace WindowsFormsApp1
|
||||
"송금내역조회", "송금등록", "매입 집계", "매입 장부", "매출 입력",
|
||||
"매출 입금", "매출 조회", "매출 집계", "파트타임 관리" };
|
||||
ToolStripMenuItem[] AccT = {
|
||||
송금내역조회, 송금등록, 매입집계, 매입장부, 매출입력,
|
||||
송금내역조회, 송금등록, 매입집계, 매입장부, 매출입력,
|
||||
매출입금, 매출조회, 매출집계, 파트타임관리
|
||||
};
|
||||
ToolStripMenuItem[] TempAcc = {
|
||||
@@ -285,15 +287,17 @@ namespace WindowsFormsApp1
|
||||
for (int a = 0; a < MenuTotal.Length; a++)
|
||||
{
|
||||
bool IsText = false;
|
||||
for(int b = 0; b < MenuTotal[a].Length; b++)
|
||||
for (int b = 0; b < MenuTotal[a].Length; b++)
|
||||
{
|
||||
if (MenuTotal[a][b] == btnText) {
|
||||
if (MenuTotal[a][b] == btnText)
|
||||
{
|
||||
IsText = true;
|
||||
count[1] = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (IsText) {
|
||||
if (IsText)
|
||||
{
|
||||
count[0] = a;
|
||||
break;
|
||||
}
|
||||
@@ -305,7 +309,8 @@ namespace WindowsFormsApp1
|
||||
return;
|
||||
|
||||
// 권한설정으로 인한 리턴
|
||||
if (!MenuCheckT[count[0]][count[1]].Enabled) {
|
||||
if (!MenuCheckT[count[0]][count[1]].Enabled)
|
||||
{
|
||||
MessageBox.Show("권한이 설정되지 않았습니다!");
|
||||
return;
|
||||
}
|
||||
@@ -725,7 +730,7 @@ namespace WindowsFormsApp1
|
||||
Acc_purchase_Aggregation.Show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void 매입미결제ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Acc_purchase_Not_Pay != null)
|
||||
@@ -741,7 +746,7 @@ namespace WindowsFormsApp1
|
||||
Acc_purchase_Not_Pay.Show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void 매출입력ToolStripMenuItem1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Acc_sales_Input != null)
|
||||
@@ -983,11 +988,11 @@ namespace WindowsFormsApp1
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
Mac_check_Copy = new Check_copy(this);
|
||||
Mac_check_Copy.MdiParent = this;
|
||||
Mac_check_Copy.WindowState = FormWindowState.Normal;
|
||||
Mac_check_Copy.FormClosed += (o, ea) => Mac_check_Copy = null;
|
||||
Mac_check_Copy.Show();
|
||||
Mac_check_Copy = new Check_copy(this);
|
||||
Mac_check_Copy.MdiParent = this;
|
||||
Mac_check_Copy.WindowState = FormWindowState.Normal;
|
||||
Mac_check_Copy.FormClosed += (o, ea) => Mac_check_Copy = null;
|
||||
Mac_check_Copy.Show();
|
||||
//}
|
||||
|
||||
//foreach (Form frm in Application.OpenForms)
|
||||
@@ -1192,7 +1197,7 @@ namespace WindowsFormsApp1
|
||||
DLS_school_Lookup.Show();
|
||||
}
|
||||
}
|
||||
private void dLS복본조사ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
async private void dLS복본조사ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Mac_dLS_Copy != null)
|
||||
{
|
||||
@@ -1200,6 +1205,8 @@ namespace WindowsFormsApp1
|
||||
}
|
||||
else
|
||||
{
|
||||
var environment = await WebView2Installer.GetWebView2EnvironmentAsync();
|
||||
|
||||
Mac_dLS_Copy = new DLS_Copy(this);
|
||||
Mac_dLS_Copy.MdiParent = this;
|
||||
Mac_dLS_Copy.WindowState = FormWindowState.Maximized;
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace WindowsFormsApp1
|
||||
else
|
||||
dataGridView.Sort(dataGridView.Columns[col], System.ComponentModel.ListSortDirection.Ascending);
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// * Row헤더에 체크박스를 넣는 기능*
|
||||
@@ -99,7 +99,7 @@ namespace WindowsFormsApp1
|
||||
}
|
||||
private void datagridview_checkBox_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach(DataGridViewRow r in ((DataGridView)sender).Rows)
|
||||
foreach (DataGridViewRow r in ((DataGridView)sender).Rows)
|
||||
{
|
||||
r.Cells["colCheck"].Value = ((CheckBox)sender).Checked;
|
||||
}
|
||||
@@ -127,8 +127,8 @@ namespace WindowsFormsApp1
|
||||
//텝 공백 문자열 동시에 사용하여 분류
|
||||
// stringInClipboard= stringInClipboard.Replace("\r", "");
|
||||
if (stringInClipboard == null) return;
|
||||
List<string>rowsInClipboard = stringInClipboard.Split(rowSpliteter, StringSplitOptions.None).ToList();
|
||||
rowsInClipboard.RemoveAt(rowsInClipboard.Count-1);
|
||||
List<string> rowsInClipboard = stringInClipboard.Split(rowSpliteter, StringSplitOptions.None).ToList();
|
||||
rowsInClipboard.RemoveAt(rowsInClipboard.Count - 1);
|
||||
//get the row and column of selected cell in dataGridView1
|
||||
int r = ((DataGridView)sender).SelectedCells[0].RowIndex;
|
||||
int c = ((DataGridView)sender).SelectedCells[0].ColumnIndex;
|
||||
@@ -209,7 +209,7 @@ namespace WindowsFormsApp1
|
||||
private Rectangle dragBoxFromMouseDown;
|
||||
private int rowIndexFromMouseDown;
|
||||
private int rowIndexOfItemUnderMouseToDrop;
|
||||
|
||||
|
||||
public void MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
DataGridView dataGridView = sender as DataGridView;
|
||||
@@ -292,7 +292,8 @@ namespace WindowsFormsApp1
|
||||
string[] db_data = db_res1.Split('|');
|
||||
string[] db_pur = db_res2.Split('|');
|
||||
|
||||
if (db_res1.Length < 3) {
|
||||
if (db_res1.Length < 3)
|
||||
{
|
||||
MessageBox.Show("DB호출 에러!", "Error");
|
||||
return "False";
|
||||
}
|
||||
@@ -300,20 +301,26 @@ namespace WindowsFormsApp1
|
||||
string fax = string.Empty;
|
||||
string emchk = string.Empty;
|
||||
|
||||
if (db_pur.Length > 3) {
|
||||
for(int a= 0; a < db_pur.Length; a++)
|
||||
if (db_pur.Length > 3)
|
||||
{
|
||||
for (int a = 0; a < db_pur.Length; a++)
|
||||
{
|
||||
if (a % 3 == 0) { // 전화번호
|
||||
if (db_pur[a] != "") {
|
||||
if (a % 3 == 0)
|
||||
{ // 전화번호
|
||||
if (db_pur[a] != "")
|
||||
{
|
||||
tel = db_pur[a];
|
||||
}
|
||||
}
|
||||
if (a % 3 == 1) { // 팩스
|
||||
if (db_pur[a] != "") {
|
||||
if (a % 3 == 1)
|
||||
{ // 팩스
|
||||
if (db_pur[a] != "")
|
||||
{
|
||||
fax = db_pur[a];
|
||||
}
|
||||
}
|
||||
if (a % 3 == 2) { // 팩스 이메일 체크
|
||||
if (a % 3 == 2)
|
||||
{ // 팩스 이메일 체크
|
||||
emchk = db_pur[a];
|
||||
}
|
||||
}
|
||||
@@ -401,7 +408,7 @@ namespace WindowsFormsApp1
|
||||
#region 주문일자 / 보낸곳 (4행)
|
||||
rng = ws.Range["A4", "C4"];
|
||||
rng.MergeCells = true;
|
||||
rng.Value2 = "주문일자 : "+DateTime.Now.ToString("yyyy-MM-dd H:m:ss");
|
||||
rng.Value2 = "주문일자 : " + DateTime.Now.ToString("yyyy-MM-dd H:m:ss");
|
||||
rng.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
|
||||
rng.Font.Bold = true;
|
||||
|
||||
@@ -495,7 +502,7 @@ namespace WindowsFormsApp1
|
||||
|
||||
#region 추신
|
||||
endcount++;
|
||||
string 발송처 = "D"+endcount.ToString();
|
||||
string 발송처 = "D" + endcount.ToString();
|
||||
|
||||
rng = ws.Range["A" + endcount, "C" + endcount];
|
||||
rng.MergeCells = true;
|
||||
@@ -551,7 +558,7 @@ namespace WindowsFormsApp1
|
||||
rng2.Font.Bold = true;
|
||||
|
||||
////////
|
||||
rng = ws.Range[발송처, "D"+endcount];
|
||||
rng = ws.Range[발송처, "D" + endcount];
|
||||
rng.MergeCells = true;
|
||||
rng.Value2 = "발 송 처";
|
||||
rng.Font.Bold = true;
|
||||
@@ -580,10 +587,10 @@ namespace WindowsFormsApp1
|
||||
|
||||
application.Interactive = true;
|
||||
application.Quit();
|
||||
|
||||
|
||||
return FileName;
|
||||
}
|
||||
catch(Exception e)
|
||||
catch (Exception e)
|
||||
{
|
||||
MessageBox.Show(e.ToString());
|
||||
return "False";
|
||||
@@ -630,9 +637,9 @@ namespace WindowsFormsApp1
|
||||
private string Excel_Sub(string[] data)
|
||||
{
|
||||
string[] length = {
|
||||
"1", "2", "3", "4", "5",
|
||||
"6", "7", "8", "9", "10",
|
||||
"11", "12", "13", "14", "15",
|
||||
"1", "2", "3", "4", "5",
|
||||
"6", "7", "8", "9", "10",
|
||||
"11", "12", "13", "14", "15",
|
||||
"16", "17", "18", "19", "20",
|
||||
"21", "22", "23", "24", "25", "26"
|
||||
};
|
||||
@@ -646,8 +653,8 @@ namespace WindowsFormsApp1
|
||||
|
||||
string count = data.Length.ToString();
|
||||
string res = string.Empty;
|
||||
|
||||
for(int a = 0; a < length.Length; a++)
|
||||
|
||||
for (int a = 0; a < length.Length; a++)
|
||||
{
|
||||
if (length[a] == count)
|
||||
{
|
||||
@@ -658,7 +665,7 @@ namespace WindowsFormsApp1
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
public class Helper_Print
|
||||
public class Helper_Print
|
||||
{
|
||||
/// <summary>
|
||||
/// 행의 갯수
|
||||
@@ -788,7 +795,7 @@ namespace WindowsFormsApp1
|
||||
/// <param name="file_name"></param>
|
||||
/// <param name="fax_param">[0] 발신번호 / [1] 수신번호
|
||||
/// / [2] 수신자 회사명 / [3 ]수신자명 </param>
|
||||
public string Send_BaroFax(string file_name, string[] fax_param )
|
||||
public string Send_BaroFax(string file_name, string[] fax_param)
|
||||
{
|
||||
BaroService_FAXSoapClient fAXSoapClient = new BaroService_FAXSoapClient();
|
||||
|
||||
@@ -824,7 +831,7 @@ namespace WindowsFormsApp1
|
||||
BaroService_FAXSoapClient fAXSoapClient = new BaroService_FAXSoapClient();
|
||||
|
||||
// 수신자회사명, 수신번호, 전송일시, 전송결과, 전송페이지수, 성공페이지수, 전송파일명
|
||||
string[] MsgBox_Array = {
|
||||
string[] MsgBox_Array = {
|
||||
fAXSoapClient.GetFaxMessage(CERTKEY, CorpNum, sendkey).ReceiveCorp,
|
||||
fAXSoapClient.GetFaxMessage(CERTKEY, CorpNum, sendkey).ReceiverNum,
|
||||
fAXSoapClient.GetFaxMessage(CERTKEY, CorpNum, sendkey).SendDT,
|
||||
@@ -1190,9 +1197,9 @@ namespace WindowsFormsApp1
|
||||
public bool IsConnected { get; set; }
|
||||
|
||||
private string ipAddr = string.Empty;
|
||||
private string Port = string.Empty;
|
||||
private string Port = string.Empty;
|
||||
private string userId = string.Empty;
|
||||
private string Pwd = string.Empty;
|
||||
private string Pwd = string.Empty;
|
||||
|
||||
public FTP() { }
|
||||
|
||||
@@ -1219,7 +1226,7 @@ namespace WindowsFormsApp1
|
||||
using (ftpRequest.GetResponse()) { }
|
||||
this.IsConnected = true;
|
||||
}
|
||||
catch(Exception ex)
|
||||
catch (Exception ex)
|
||||
{
|
||||
this.LastException = ex;
|
||||
System.Reflection.MemberInfo info = System.Reflection.MethodInfo.GetCurrentMethod();
|
||||
@@ -1288,7 +1295,7 @@ namespace WindowsFormsApp1
|
||||
buff = null;
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString());
|
||||
this.LastException = ex;
|
||||
@@ -1392,14 +1399,14 @@ namespace WindowsFormsApp1
|
||||
|
||||
if (reader != null) reader.Close();
|
||||
|
||||
foreach(string file in result.ToString().Split('\n'))
|
||||
foreach (string file in result.ToString().Split('\n'))
|
||||
{
|
||||
resultList.Add(file);
|
||||
}
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
catch(Exception ex)
|
||||
catch (Exception ex)
|
||||
{
|
||||
this.LastException = ex;
|
||||
|
||||
@@ -1420,12 +1427,12 @@ namespace WindowsFormsApp1
|
||||
|
||||
try
|
||||
{
|
||||
foreach(string tmpFolder in arrDir)
|
||||
foreach (string tmpFolder in arrDir)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (tmpFolder == string.Empty) continue;
|
||||
|
||||
|
||||
currentDir += @"/" + tmpFolder;
|
||||
|
||||
string url = string.Format(@"FTP://{0}:{1}/{2}", this.ipAddr, this.Port, currentDir);
|
||||
@@ -1453,9 +1460,11 @@ namespace WindowsFormsApp1
|
||||
private void checkDir(string localFullPathFile)
|
||||
{
|
||||
FileInfo finfo = new FileInfo(localFullPathFile);
|
||||
if (!finfo.Exists) {
|
||||
if (!finfo.Exists)
|
||||
{
|
||||
DirectoryInfo dInfo = new DirectoryInfo(finfo.DirectoryName);
|
||||
if (!dInfo.Exists) {
|
||||
if (!dInfo.Exists)
|
||||
{
|
||||
dInfo.Create();
|
||||
}
|
||||
}
|
||||
@@ -1552,30 +1561,35 @@ namespace WindowsFormsApp1
|
||||
int tDown = 0;
|
||||
for (int a = 0; a < array_text.Count; a++)
|
||||
{
|
||||
// if (array_text[a] == "") continue;
|
||||
// if (array_text[a] == "") continue;
|
||||
|
||||
num.Add(array_text[a].Substring(0, 3));
|
||||
|
||||
if (array_text[a][5] == '▼') {
|
||||
if (array_text[a][5] == '▼')
|
||||
{
|
||||
array_text[a] = array_text[a].Remove(0, 3);
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
array_text[a] = array_text[a].Remove(0, 5);
|
||||
}
|
||||
|
||||
가변길이 += array_text[a] + "\n";
|
||||
int textLength = 0;
|
||||
if (EncodingType == "UTF-8") {
|
||||
if (EncodingType == "UTF-8")
|
||||
{
|
||||
textLength = Encoding.UTF8.GetBytes(array_text[a]).Length
|
||||
- WordCheck(array_text[a], "▲")
|
||||
- WordCheck(array_text[a], "▼");
|
||||
}
|
||||
else if (EncodingType == "UniCode") {
|
||||
else if (EncodingType == "UniCode")
|
||||
{
|
||||
textLength = Encoding.Unicode.GetBytes(array_text[a]).Length
|
||||
- WordCheck(array_text[a], "▲")
|
||||
- WordCheck(array_text[a], "▼");
|
||||
}
|
||||
else { // ANSI
|
||||
else
|
||||
{ // ANSI
|
||||
textLength = Encoding.Default.GetBytes(array_text[a]).Length
|
||||
- WordCheck(array_text[a], "▲")
|
||||
- WordCheck(array_text[a], "▼");
|
||||
@@ -1587,12 +1601,13 @@ namespace WindowsFormsApp1
|
||||
|
||||
for (int a = 0; a < array_text.Count; a++)
|
||||
{
|
||||
if (a == 0) { //total.Add("0");
|
||||
if (a == 0)
|
||||
{ //total.Add("0");
|
||||
tTotal.Add(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
// total.Add(total[a - 1] + count[a - 1]);
|
||||
// total.Add(total[a - 1] + count[a - 1]);
|
||||
tTotal.Add(tTotal[a - 1] + tCount[a - 1]);
|
||||
}
|
||||
//else if (a == 1)
|
||||
@@ -1609,7 +1624,7 @@ namespace WindowsFormsApp1
|
||||
// else c = Convert.ToInt32(Encoding.Default.GetBytes(array_text[a - 2]).Length.ToString()) - WordCheck(array_text[a - 2], "▲") - WordCheck(array_text[a - 2], "▼");
|
||||
// int res = b + c;
|
||||
// total.Add(res.ToString());
|
||||
|
||||
|
||||
}
|
||||
|
||||
string[] str_num = num.ToArray();
|
||||
@@ -1626,7 +1641,7 @@ namespace WindowsFormsApp1
|
||||
// else if (total[a].Length == 2) { total[a] = total[a].Insert(0, "000"); }
|
||||
// else if (total[a].Length == 1) { total[a] = total[a].Insert(0, "0000"); }
|
||||
// 디렉토리 += str_num[a] + count[a] + total[a] + "\n";
|
||||
디렉토리 += str_num[a] + tCount[a].ToString().PadLeft(4, '0') + tTotal[a].ToString().PadLeft(5, '0');
|
||||
디렉토리 += str_num[a] + tCount[a].ToString().PadLeft(4, '0') + tTotal[a].ToString().PadLeft(5, '0');
|
||||
}
|
||||
|
||||
string[] 리더부 = { "00000","n", "a", "m", " ",
|
||||
@@ -1642,11 +1657,11 @@ namespace WindowsFormsApp1
|
||||
|
||||
string dp = 가변길이 + 디렉토리;
|
||||
int recode = 0;
|
||||
if (EncodingType == "UTF-8") recode = Encoding.UTF8.GetBytes(dp).Length- WordCheck(dp, "▲") - WordCheck(dp, "▼") - WordCheck(dp, "↔");
|
||||
if (EncodingType == "UTF-8") recode = Encoding.UTF8.GetBytes(dp).Length - WordCheck(dp, "▲") - WordCheck(dp, "▼") - WordCheck(dp, "↔");
|
||||
else if (EncodingType == "UniCode") recode = Encoding.Unicode.GetBytes(dp).Length - WordCheck(dp, "▲") - WordCheck(dp, "▼") - WordCheck(dp, "↔");
|
||||
else recode = Encoding.Default.GetBytes(dp).Length- WordCheck(dp, "▲") - WordCheck(dp, "▼") - WordCheck(dp, "↔");
|
||||
|
||||
|
||||
else recode = Encoding.Default.GetBytes(dp).Length - WordCheck(dp, "▲") - WordCheck(dp, "▼") - WordCheck(dp, "↔");
|
||||
|
||||
|
||||
리더부[0] = insert_Zero(recode + 24, 5);
|
||||
|
||||
int data_addr = 24 + Encoding.Default.GetBytes(디렉토리).Length - WordCheck(디렉토리, "▲");
|
||||
@@ -1693,7 +1708,7 @@ namespace WindowsFormsApp1
|
||||
return result;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 추가하고 싶은 태그를 뷰형태의 마크에 추가하는 함수.
|
||||
@@ -1706,7 +1721,7 @@ namespace WindowsFormsApp1
|
||||
if (Tag.Length < 3) return "";
|
||||
|
||||
int TargetTagNum = Convert.ToInt32(Tag.Substring(0, 3));
|
||||
|
||||
|
||||
string[] SplitView = TypeView.Split('\n');
|
||||
List<string> View = new List<string>(SplitView);
|
||||
|
||||
@@ -1731,9 +1746,9 @@ namespace WindowsFormsApp1
|
||||
/// <param name="pAddTag">추가할 태그 (태그명\t지시기호\t태그내용)</param>
|
||||
/// <param name="pTargetData">뷰형태의 마크</param>
|
||||
/// <returns></returns>
|
||||
public string AddTagInMarc(int pTargetTagNum,string pAddTag, string pTargetData)//TagTarget Num 을 찾아서 있을경우는 해당 Tag 데이터를 전송, 없을경우는 신규로 해야함.
|
||||
public string AddTagInMarc(int pTargetTagNum, string pAddTag, string pTargetData)//TagTarget Num 을 찾아서 있을경우는 해당 Tag 데이터를 전송, 없을경우는 신규로 해야함.
|
||||
{
|
||||
|
||||
|
||||
if (pAddTag.Length < 3) return "";
|
||||
string tRet = pTargetData;
|
||||
// ex ) 020 : ~~~ 에 XXXX 내용줄 뒤에 추가
|
||||
@@ -1827,7 +1842,7 @@ namespace WindowsFormsApp1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{// 기존 태그 변경
|
||||
int endIdx = SplitView[a].IndexOf("▼", startIdx + 1);
|
||||
@@ -1906,7 +1921,7 @@ namespace WindowsFormsApp1
|
||||
/// <param name="marc">마크 데이터</param>
|
||||
/// <param name="search">추출할 함수(배열)</param>
|
||||
/// <returns></returns>
|
||||
public string[] Take_Tag(string marc, string[] search,bool pSearchTag = false)
|
||||
public string[] Take_Tag(string marc, string[] search, bool pSearchTag = false)
|
||||
{
|
||||
string[] ary = marc.Split('');
|
||||
string[] tag = res_dir(ary[0].Substring(24));
|
||||
@@ -1958,7 +1973,7 @@ namespace WindowsFormsApp1
|
||||
//memo = result[b];
|
||||
start += 2;
|
||||
int end = -1;
|
||||
if (tmp.Length > 1) end=tmp.IndexOf("", start);
|
||||
if (tmp.Length > 1) end = tmp.IndexOf("", start);
|
||||
if (memo == result[b])
|
||||
break;
|
||||
|
||||
@@ -2188,7 +2203,8 @@ namespace WindowsFormsApp1
|
||||
/// <param name="e">EventArgs</param>
|
||||
public void Int_Comma(object sender, EventArgs e)
|
||||
{
|
||||
if (((TextBox)sender).Text != "") {
|
||||
if (((TextBox)sender).Text != "")
|
||||
{
|
||||
string text;
|
||||
text = ((TextBox)sender).Text.Replace(",", "");
|
||||
((TextBox)sender).Text = String.Format("{0:#,###}", Convert.ToInt32(text));
|
||||
@@ -2204,7 +2220,7 @@ namespace WindowsFormsApp1
|
||||
public bool isContainHangul(string value)
|
||||
{
|
||||
char[] charArr = value.ToCharArray();
|
||||
foreach(char c in charArr)
|
||||
foreach (char c in charArr)
|
||||
{
|
||||
if (char.GetUnicodeCategory(c) == System.Globalization.UnicodeCategory.OtherLetter)
|
||||
return true;
|
||||
@@ -2221,7 +2237,7 @@ namespace WindowsFormsApp1
|
||||
public bool CheckString(string value, string chkString)
|
||||
{
|
||||
int index = value.IndexOf(chkString);
|
||||
if (index < 0)
|
||||
if (index < 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -2264,10 +2280,10 @@ namespace WindowsFormsApp1
|
||||
public class API
|
||||
{
|
||||
|
||||
public string CheckString(string pText,string pStr)
|
||||
public string CheckString(string pText, string pStr)
|
||||
{
|
||||
string tRet = pText;
|
||||
Regex reg = new Regex(@"([\"+pStr+"]+)" + @"[가-힣]+");//+ @"([\>]+)");//new Regex(@"([\<]+)"+ @"[ㄱ-ㅎ가-힣]+"+@"([\>]+)");
|
||||
Regex reg = new Regex(@"([\" + pStr + "]+)" + @"[가-힣]+");//+ @"([\>]+)");//new Regex(@"([\<]+)"+ @"[ㄱ-ㅎ가-힣]+"+@"([\>]+)");
|
||||
MatchCollection tMatch = reg.Matches(tRet);
|
||||
for (int i = 0; i < tMatch.Count; i++)
|
||||
{
|
||||
@@ -2326,8 +2342,9 @@ namespace WindowsFormsApp1
|
||||
xml = CheckString(xml, "〈");
|
||||
doc.LoadXml(xml);
|
||||
}
|
||||
catch (Exception ex){
|
||||
return "";
|
||||
catch (Exception ex)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
var json = JsonConvert.SerializeXmlNode(doc);
|
||||
|
||||
@@ -2520,19 +2537,23 @@ namespace WindowsFormsApp1
|
||||
{
|
||||
if (length == 1)
|
||||
{
|
||||
try {
|
||||
try
|
||||
{
|
||||
tmp_data.Add(docs[Param[b]]["#text"]);
|
||||
}
|
||||
catch (KeyNotFoundException e) {
|
||||
catch (KeyNotFoundException e)
|
||||
{
|
||||
tmp_data.Add("");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
try {
|
||||
try
|
||||
{
|
||||
tmp_data.Add(docs[a][Param[b]]["#text"]);
|
||||
}
|
||||
catch (KeyNotFoundException e) {
|
||||
catch (KeyNotFoundException e)
|
||||
{
|
||||
tmp_data.Add("");
|
||||
}
|
||||
}
|
||||
@@ -2649,8 +2670,8 @@ namespace WindowsFormsApp1
|
||||
return dialogResult;
|
||||
}
|
||||
}
|
||||
public class PrintLine
|
||||
{
|
||||
public class PrintLine
|
||||
{
|
||||
string num { get; set; }
|
||||
string count { get; set; }
|
||||
string list_name { get; set; }
|
||||
@@ -2962,16 +2983,21 @@ namespace WindowsFormsApp1
|
||||
public string VersionInfo()
|
||||
{
|
||||
string version = "";
|
||||
StreamReader sr = new StreamReader(Application.StartupPath + "\\update.inf");
|
||||
while (!sr.EndOfStream)
|
||||
var updatefile = $"{Application.StartupPath}\\update.inf";
|
||||
if (System.IO.File.Exists(updatefile))
|
||||
{
|
||||
string line = sr.ReadLine();
|
||||
if (line.IndexOf("count=", 0) != -1)
|
||||
StreamReader sr = new StreamReader(updatefile);
|
||||
while (!sr.EndOfStream)
|
||||
{
|
||||
version = line.Replace("count=", "");
|
||||
break;
|
||||
string line = sr.ReadLine();
|
||||
if (line.IndexOf("count=", 0) != -1)
|
||||
{
|
||||
version = line.Replace("count=", "");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else version = "0";
|
||||
return version;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
@@ -100,6 +100,15 @@
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.7.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualBasic" />
|
||||
<Reference Include="Microsoft.Web.WebView2.Core, Version=1.0.3351.48, Culture=neutral, PublicKeyToken=2a8ab48044d2601e, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Web.WebView2.1.0.3351.48\lib\net462\Microsoft.Web.WebView2.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Web.WebView2.WinForms, Version=1.0.3351.48, Culture=neutral, PublicKeyToken=2a8ab48044d2601e, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Web.WebView2.1.0.3351.48\lib\net462\Microsoft.Web.WebView2.WinForms.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Web.WebView2.Wpf, Version=1.0.3351.48, Culture=neutral, PublicKeyToken=2a8ab48044d2601e, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Web.WebView2.1.0.3351.48\lib\net462\Microsoft.Web.WebView2.Wpf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Win32.Registry, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Win32.Registry.5.0.0\lib\net461\Microsoft.Win32.Registry.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -191,6 +200,7 @@
|
||||
<Compile Include="SearchModel\ILibrarySearcher.cs" />
|
||||
<Compile Include="SearchModel\KwangjuCityLibrarySearcher.cs" />
|
||||
<Compile Include="SearchModel\NamguLibrarySearcher.cs" />
|
||||
<Compile Include="WebView2Installer.cs" />
|
||||
<Compile Include="마스터\From_User_manage_List.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -1950,5 +1960,7 @@
|
||||
<ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Selenium.WebDriver.4.16.2\build\Selenium.WebDriver.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Selenium.WebDriver.4.16.2\build\Selenium.WebDriver.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Web.WebView2.1.0.3351.48\build\Microsoft.Web.WebView2.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Web.WebView2.1.0.3351.48\build\Microsoft.Web.WebView2.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\Microsoft.Web.WebView2.1.0.3351.48\build\Microsoft.Web.WebView2.targets" Condition="Exists('..\packages\Microsoft.Web.WebView2.1.0.3351.48\build\Microsoft.Web.WebView2.targets')" />
|
||||
</Project>
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<PublishUrlHistory>E:\UniMarcApplicationUpdateFiles\|ftp://ftpgloria%401.215.250.130/|ftp://ftpgloria%401.215.250.130:50005/|sftp://ftpgloria%401.215.250.130/|ftp://ftpgloria%401.215.250.130/unimarc/</PublishUrlHistory>
|
||||
|
||||
510
unimarc/unimarc/WebView2Installer.cs
Normal file
510
unimarc/unimarc/WebView2Installer.cs
Normal file
@@ -0,0 +1,510 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Microsoft.Web.WebView2.Core;
|
||||
|
||||
namespace WindowsFormsApp1
|
||||
{
|
||||
public static class WebView2Installer
|
||||
{
|
||||
// Fixed Version 다운로드 URL (CAB 파일 사용)
|
||||
private const string WEBVIEW2_FIXED_VERSION_URL = "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/759b508a-00bb-4724-9b87-2703c8417737/Microsoft.WebView2.FixedVersionRuntime.139.0.3405.86.x86.cab";
|
||||
private const string INSTALLER_FILENAME = "Microsoft.WebView2.FixedVersionRuntime.139.0.3405.86.x86.cab";
|
||||
|
||||
// Fixed Version 런타임을 애플리케이션 폴더에 배치할 경로
|
||||
private const string FIXED_VERSION_FOLDER = "WebView2Runtime";
|
||||
|
||||
/// <summary>
|
||||
/// WebView2 Fixed Version 환경을 준비 (항상 Fixed Version 사용)
|
||||
/// </summary>
|
||||
public static async Task<CoreWebView2Environment> GetWebView2EnvironmentAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
// 일관성을 위해 항상 Fixed Version 사용
|
||||
string fixedVersionPath = GetFixedVersionPath();
|
||||
|
||||
// Fixed Version 런타임이 이미 있는지 확인
|
||||
string actualRuntimePath = FindActualRuntimePath(fixedVersionPath);
|
||||
if (!string.IsNullOrEmpty(actualRuntimePath))
|
||||
{
|
||||
try
|
||||
{
|
||||
// Fixed Version 사용 시 환경 옵션 명시적 지정
|
||||
string userDataFolder = Path.Combine(Application.StartupPath, "WebView2UserData");
|
||||
|
||||
// 사용자 데이터 폴더 생성
|
||||
if (!Directory.Exists(userDataFolder))
|
||||
{
|
||||
Directory.CreateDirectory(userDataFolder);
|
||||
}
|
||||
|
||||
|
||||
// 런타임 버전 정보 확인
|
||||
try
|
||||
{
|
||||
string version = CoreWebView2Environment.GetAvailableBrowserVersionString(actualRuntimePath);
|
||||
|
||||
}
|
||||
catch (Exception verEx)
|
||||
{
|
||||
MessageBox.Show(
|
||||
$"런타임 버전 확인 실패:\n\n" +
|
||||
$"경로: {actualRuntimePath}\n" +
|
||||
$"오류: {verEx.Message}",
|
||||
"버전 확인 오류",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Warning
|
||||
);
|
||||
}
|
||||
|
||||
return await CoreWebView2Environment.CreateAsync(actualRuntimePath, userDataFolder);
|
||||
}
|
||||
catch (WebView2RuntimeNotFoundException ex)
|
||||
{
|
||||
MessageBox.Show(
|
||||
$"WebView2 환경 생성 실패!\n\n" +
|
||||
$"런타임 경로: {actualRuntimePath}\n" +
|
||||
$"오류: {ex.Message}\n\n" +
|
||||
$"런타임을 다시 다운로드합니다.",
|
||||
"WebView2 환경 오류",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Warning
|
||||
);
|
||||
|
||||
// 기존 런타임 폴더 삭제 후 재다운로드
|
||||
try
|
||||
{
|
||||
Directory.Delete(fixedVersionPath, true);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
||||
// Fixed Version 런타임 다운로드 및 배치
|
||||
bool success = await DownloadFixedVersionRuntime();
|
||||
if (success)
|
||||
{
|
||||
actualRuntimePath = FindActualRuntimePath(fixedVersionPath);
|
||||
if (!string.IsNullOrEmpty(actualRuntimePath))
|
||||
{
|
||||
try
|
||||
{
|
||||
// 다운로드 후 환경 생성 시도 (Fixed Version)
|
||||
string userDataFolder = Path.Combine(Application.StartupPath, "WebView2UserData");
|
||||
|
||||
// 사용자 데이터 폴더 생성
|
||||
if (!Directory.Exists(userDataFolder))
|
||||
{
|
||||
Directory.CreateDirectory(userDataFolder);
|
||||
}
|
||||
var environment = await CoreWebView2Environment.CreateAsync(actualRuntimePath, userDataFolder);
|
||||
return environment;
|
||||
}
|
||||
catch (WebView2RuntimeNotFoundException ex)
|
||||
{
|
||||
MessageBox.Show(
|
||||
$"다운로드 후에도 WebView2 환경 생성 실패!\n\n" +
|
||||
$"런타임 경로: {actualRuntimePath}\n" +
|
||||
$"오류: {ex.Message}\n\n" +
|
||||
$"해당 경로의 파일들을 확인해주세요.",
|
||||
"WebView2 환경 생성 최종 실패",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error
|
||||
);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(
|
||||
$"다운로드는 완료되었지만 유효한 런타임 경로를 찾을 수 없습니다.\n\n" +
|
||||
$"기본 경로: {fixedVersionPath}",
|
||||
"런타임 경로 탐색 실패",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
throw new Exception("WebView2 Fixed Version 런타임을 사용할 수 없습니다.");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(
|
||||
$"WebView2 Fixed Version 환경 준비 중 오류가 발생했습니다: {ex.Message}",
|
||||
"오류",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error
|
||||
);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fixed Version 런타임 경로 반환
|
||||
/// </summary>
|
||||
private static string GetFixedVersionPath()
|
||||
{
|
||||
string appPath = Application.StartupPath;
|
||||
return Path.Combine(appPath, FIXED_VERSION_FOLDER);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 실제 WebView2 런타임 폴더 경로를 찾는 메서드
|
||||
/// </summary>
|
||||
private static string FindActualRuntimePath(string basePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists(basePath))
|
||||
return null;
|
||||
|
||||
// WebView2 런타임의 주요 파일들 (우선순위대로)
|
||||
string targetFiles = "msedgewebview2.exe";
|
||||
var targetfi = new System.IO.FileInfo(System.IO.Path.Combine(basePath, targetFiles));
|
||||
if(targetfi.Exists) return targetfi.Directory.FullName;
|
||||
|
||||
//루트에 없었으니 서브폴더에서 찾는다
|
||||
foreach(var subdir in targetfi.Directory.GetDirectories())
|
||||
{
|
||||
var fi = new System.IO.FileInfo(System.IO.Path.Combine(subdir.FullName, targetFiles));
|
||||
if (fi.Exists) return fi.Directory.FullName;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 디버깅을 위한 예외 정보 출력
|
||||
MessageBox.Show(
|
||||
$"FindActualRuntimePath 오류:\n{ex.Message}\n\n기본 경로: {basePath}",
|
||||
"런타임 경로 탐색 오류",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Warning
|
||||
);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 서브디렉토리에서 WebView2 런타임 파일 검색
|
||||
/// </summary>
|
||||
private static string SearchInSubDirectories(string currentPath, string[] targetFiles, int currentDepth, int maxDepth)
|
||||
{
|
||||
if (currentDepth >= maxDepth || !Directory.Exists(currentPath))
|
||||
return null;
|
||||
|
||||
try
|
||||
{
|
||||
// 현재 경로의 모든 서브디렉토리 검색
|
||||
foreach (string subDir in Directory.GetDirectories(currentPath))
|
||||
{
|
||||
// 각 대상 파일을 해당 서브디렉토리에서 확인
|
||||
foreach (string targetFile in targetFiles)
|
||||
{
|
||||
string fullPath = Path.Combine(subDir, targetFile);
|
||||
if (File.Exists(fullPath))
|
||||
{
|
||||
string candidatePath;
|
||||
// EBWebView 하위 파일인 경우 해당 디렉토리 반환
|
||||
if (targetFile.Contains("\\"))
|
||||
{
|
||||
candidatePath = Path.Combine(subDir, Path.GetDirectoryName(targetFile));
|
||||
}
|
||||
else
|
||||
{
|
||||
candidatePath = subDir;
|
||||
}
|
||||
|
||||
// 런타임 유효성 검증
|
||||
if (ValidateWebView2Runtime(candidatePath))
|
||||
{
|
||||
return candidatePath;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 재귀적으로 더 깊은 폴더 검색
|
||||
string result = SearchInSubDirectories(subDir, targetFiles, currentDepth + 1, maxDepth);
|
||||
if (!string.IsNullOrEmpty(result))
|
||||
return result;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// WebView2 런타임이 유효한지 검증
|
||||
/// </summary>
|
||||
private static bool ValidateWebView2Runtime(string runtimePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(runtimePath) || !Directory.Exists(runtimePath))
|
||||
return false;
|
||||
|
||||
// 필수 파일들 체크
|
||||
string[] requiredFiles = {
|
||||
"msedgewebview2.exe",
|
||||
"WebView2Loader.dll"
|
||||
};
|
||||
|
||||
foreach (string file in requiredFiles)
|
||||
{
|
||||
if (!File.Exists(Path.Combine(runtimePath, file)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Fixed Version WebView2 런타임 다운로드 및 배치
|
||||
/// </summary>
|
||||
private static async Task<bool> DownloadFixedVersionRuntime()
|
||||
{
|
||||
try
|
||||
{
|
||||
var fi = new System.IO.FileInfo(Path.Combine(".\\Temp", INSTALLER_FILENAME));
|
||||
if (fi.Directory.Exists == false) fi.Directory.Create();
|
||||
|
||||
string extractPath = GetFixedVersionPath();
|
||||
|
||||
// 진행상황 표시 폼
|
||||
var progressForm = new Form()
|
||||
{
|
||||
Text = "WebView2 런타임 다운로드",
|
||||
Size = new System.Drawing.Size(400, 120),
|
||||
FormBorderStyle = FormBorderStyle.FixedDialog,
|
||||
StartPosition = FormStartPosition.CenterScreen,
|
||||
MaximizeBox = false,
|
||||
MinimizeBox = false,
|
||||
//TopMost = true,
|
||||
};
|
||||
|
||||
var progressBar = new ProgressBar()
|
||||
{
|
||||
Location = new System.Drawing.Point(20, 20),
|
||||
Size = new System.Drawing.Size(340, 23),
|
||||
Style = ProgressBarStyle.Continuous
|
||||
};
|
||||
|
||||
var statusLabel = new Label()
|
||||
{
|
||||
Location = new System.Drawing.Point(20, 50),
|
||||
Size = new System.Drawing.Size(340, 20),
|
||||
Text = "다운로드 준비 중..."
|
||||
};
|
||||
|
||||
progressForm.Controls.Add(progressBar);
|
||||
progressForm.Controls.Add(statusLabel);
|
||||
progressForm.Show();
|
||||
|
||||
if (System.IO.File.Exists(fi.FullName) == false)
|
||||
{
|
||||
// 다운로드
|
||||
using (var client = new WebClient())
|
||||
{
|
||||
client.DownloadProgressChanged += (s, e) =>
|
||||
{
|
||||
progressBar.Value = e.ProgressPercentage;
|
||||
statusLabel.Text = $"다운로드 중... {e.ProgressPercentage}%";
|
||||
Application.DoEvents();
|
||||
};
|
||||
|
||||
await client.DownloadFileTaskAsync(WEBVIEW2_FIXED_VERSION_URL, fi.FullName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
statusLabel.Text = "CAB 파일 압축 해제 중...";
|
||||
progressBar.Style = ProgressBarStyle.Marquee;
|
||||
Application.DoEvents();
|
||||
|
||||
// CAB 파일 압축 해제를 위한 경로 생성
|
||||
if (!Directory.Exists(extractPath))
|
||||
{
|
||||
Directory.CreateDirectory(extractPath);
|
||||
}
|
||||
|
||||
// Windows expand 명령어를 사용하여 CAB 파일 압축 해제
|
||||
bool extractSuccess = await ExtractCabFileAsync(fi.FullName, extractPath);
|
||||
|
||||
statusLabel.Text = "런타임 경로 확인 중...";
|
||||
Application.DoEvents();
|
||||
|
||||
if (!extractSuccess)
|
||||
{
|
||||
progressForm.Close();
|
||||
throw new Exception("CAB 파일 압축 해제에 실패했습니다.");
|
||||
}
|
||||
|
||||
// 실제 런타임 경로 확인
|
||||
string actualPath = FindActualRuntimePath(extractPath);
|
||||
if (string.IsNullOrEmpty(actualPath))
|
||||
{
|
||||
progressForm.Close();
|
||||
throw new Exception("압축 해제는 완료되었지만 WebView2 런타임을 찾을 수 없습니다.");
|
||||
}
|
||||
|
||||
statusLabel.Text = "설정 완료 중...";
|
||||
Application.DoEvents();
|
||||
|
||||
// 잠시 대기 후 폼 닫기
|
||||
await Task.Delay(500);
|
||||
progressForm.Close();
|
||||
|
||||
return Directory.Exists(extractPath);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(
|
||||
$"WebView2 런타임 준비 중 오류가 발생했습니다: {ex.Message}",
|
||||
"오류",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error
|
||||
);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// CAB 파일을 압축 해제하는 메서드
|
||||
/// </summary>
|
||||
private static async Task<bool> ExtractCabFileAsync(string cabFilePath, string extractPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
//// 디버깅 정보 표시
|
||||
//MessageBox.Show(
|
||||
// $"CAB 압축 해제 시작\n\n" +
|
||||
// $"CAB 파일: {cabFilePath}\n" +
|
||||
// $"압축 해제 경로: {extractPath}\n" +
|
||||
// $"CAB 파일 존재: {File.Exists(cabFilePath)}\n" +
|
||||
// $"CAB 파일 크기: {(File.Exists(cabFilePath) ? new FileInfo(cabFilePath).Length.ToString("N0") + " bytes" : "파일 없음")}",
|
||||
// "디버깅 정보",
|
||||
// MessageBoxButtons.OK,
|
||||
// MessageBoxIcon.Information
|
||||
//);
|
||||
|
||||
// Windows expand 명령어를 사용하여 CAB 파일 압축 해제
|
||||
var startInfo = new ProcessStartInfo("expand.exe")
|
||||
{
|
||||
Arguments = $"\"{cabFilePath}\" -F:* \"{extractPath}\"",
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true, // 콘솔 창 보이게 설정
|
||||
RedirectStandardOutput = false, // 출력 리다이렉션 해제
|
||||
RedirectStandardError = false // 에러 리다이렉션 해제
|
||||
};
|
||||
|
||||
using (var process = Process.Start(startInfo))
|
||||
{
|
||||
// 최대 30초 대기
|
||||
bool exited = await Task.Run(() => process.WaitForExit(30000));
|
||||
|
||||
if (!exited)
|
||||
{
|
||||
// 프로세스가 30초 내에 완료되지 않으면 강제 종료
|
||||
try
|
||||
{
|
||||
process.Kill();
|
||||
}
|
||||
catch { }
|
||||
return false;
|
||||
}
|
||||
|
||||
// 압축 해제 성공 여부 확인
|
||||
bool success = process.ExitCode == 0;
|
||||
if (success == false)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.IO.File.Delete(cabFilePath);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("remove cab file : " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
// 실제 런타임 파일이 있는지 확인
|
||||
if (success)
|
||||
{
|
||||
string actualPath = FindActualRuntimePath(extractPath);
|
||||
success = !string.IsNullOrEmpty(actualPath);
|
||||
|
||||
// 런타임을 찾지 못한 경우 디버깅 정보 표시
|
||||
if (!success)
|
||||
{
|
||||
string[] extractedFiles = Directory.Exists(extractPath) ? Directory.GetFiles(extractPath, "*", SearchOption.AllDirectories) : new string[0];
|
||||
string[] extractedDirs = Directory.Exists(extractPath) ? Directory.GetDirectories(extractPath, "*", SearchOption.AllDirectories) : new string[0];
|
||||
|
||||
MessageBox.Show(
|
||||
$"WebView2 런타임 파일을 찾을 수 없습니다!\n\n" +
|
||||
$"압축 해제 경로: {extractPath}\n" +
|
||||
$"압축 해제된 파일 수: {extractedFiles.Length}\n" +
|
||||
$"압축 해제된 폴더 수: {extractedDirs.Length}\n\n" +
|
||||
$"상위 5개 파일:\n{string.Join("\n", extractedFiles.Take(5))}\n\n" +
|
||||
$"모든 폴더:\n{string.Join("\n", extractedDirs)}",
|
||||
"런타임 파일 탐색 실패",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Warning
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// WebView2 Fixed Version 런타임 상태 정보 반환
|
||||
/// </summary>
|
||||
public static string GetWebView2Status()
|
||||
{
|
||||
try
|
||||
{
|
||||
string fixedVersionPath = GetFixedVersionPath();
|
||||
string actualRuntimePath = FindActualRuntimePath(fixedVersionPath);
|
||||
|
||||
if (!string.IsNullOrEmpty(actualRuntimePath))
|
||||
{
|
||||
return $"WebView2 Fixed Version 런타임이 준비되어 있습니다.\n경로: {actualRuntimePath}\n버전: 139.0.3405.86";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "WebView2 Fixed Version 런타임이 준비되어 있지 않습니다.";
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return $"WebView2 Fixed Version 런타임 확인 실패: {ex.Message}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -2553,6 +2553,8 @@
|
||||
<member name="P:Newtonsoft.Json.JsonReader.MaxDepth">
|
||||
<summary>
|
||||
Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
|
||||
A null value means there is no maximum.
|
||||
The default value is <c>128</c>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Newtonsoft.Json.JsonReader.TokenType">
|
||||
@@ -3012,7 +3014,7 @@
|
||||
<summary>
|
||||
Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
|
||||
A null value means there is no maximum.
|
||||
The default value is <c>null</c>.
|
||||
The default value is <c>128</c>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Newtonsoft.Json.JsonSerializer.CheckAdditionalContent">
|
||||
@@ -3328,7 +3330,7 @@
|
||||
<summary>
|
||||
Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a <see cref="T:Newtonsoft.Json.JsonReaderException"/>.
|
||||
A null value means there is no maximum.
|
||||
The default value is <c>null</c>.
|
||||
The default value is <c>128</c>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Newtonsoft.Json.JsonSerializerSettings.Formatting">
|
||||
@@ -7090,6 +7092,27 @@
|
||||
</summary>
|
||||
<value>The comparison used to match property names while merging.</value>
|
||||
</member>
|
||||
<member name="T:Newtonsoft.Json.Linq.JsonSelectSettings">
|
||||
<summary>
|
||||
Specifies the settings used when selecting JSON.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Newtonsoft.Json.Linq.JsonSelectSettings.RegexMatchTimeout">
|
||||
<summary>
|
||||
Gets or sets a timeout that will be used when executing regular expressions.
|
||||
</summary>
|
||||
<value>The timeout that will be used when executing regular expressions.</value>
|
||||
</member>
|
||||
<member name="P:Newtonsoft.Json.Linq.JsonSelectSettings.ErrorWhenNoMatch">
|
||||
<summary>
|
||||
Gets or sets a flag that indicates whether an error should be thrown if
|
||||
no tokens are found when evaluating part of the expression.
|
||||
</summary>
|
||||
<value>
|
||||
A flag that indicates whether an error should be thrown if
|
||||
no tokens are found when evaluating part of the expression.
|
||||
</value>
|
||||
</member>
|
||||
<member name="T:Newtonsoft.Json.Linq.JToken">
|
||||
<summary>
|
||||
Represents an abstract JSON token.
|
||||
@@ -7985,6 +8008,16 @@
|
||||
<param name="errorWhenNoMatch">A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.</param>
|
||||
<returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
|
||||
</member>
|
||||
<member name="M:Newtonsoft.Json.Linq.JToken.SelectToken(System.String,Newtonsoft.Json.Linq.JsonSelectSettings)">
|
||||
<summary>
|
||||
Selects a <see cref="T:Newtonsoft.Json.Linq.JToken"/> using a JSONPath expression. Selects the token that matches the object path.
|
||||
</summary>
|
||||
<param name="path">
|
||||
A <see cref="T:System.String"/> that contains a JSONPath expression.
|
||||
</param>
|
||||
<param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonSelectSettings"/> used to select tokens.</param>
|
||||
<returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
|
||||
</member>
|
||||
<member name="M:Newtonsoft.Json.Linq.JToken.SelectTokens(System.String)">
|
||||
<summary>
|
||||
Selects a collection of elements using a JSONPath expression.
|
||||
@@ -8004,6 +8037,16 @@
|
||||
<param name="errorWhenNoMatch">A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.</param>
|
||||
<returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the selected elements.</returns>
|
||||
</member>
|
||||
<member name="M:Newtonsoft.Json.Linq.JToken.SelectTokens(System.String,Newtonsoft.Json.Linq.JsonSelectSettings)">
|
||||
<summary>
|
||||
Selects a collection of elements using a JSONPath expression.
|
||||
</summary>
|
||||
<param name="path">
|
||||
A <see cref="T:System.String"/> that contains a JSONPath expression.
|
||||
</param>
|
||||
<param name="settings">The <see cref="T:Newtonsoft.Json.Linq.JsonSelectSettings"/> used to select tokens.</param>
|
||||
<returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the selected elements.</returns>
|
||||
</member>
|
||||
<member name="M:Newtonsoft.Json.Linq.JToken.GetMetaObject(System.Linq.Expressions.Expression)">
|
||||
<summary>
|
||||
Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<section name="UniMarc.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup>
|
||||
<system.serviceModel>
|
||||
<bindings>
|
||||
<basicHttpBinding>
|
||||
@@ -18,19 +18,31 @@
|
||||
</basicHttpBinding>
|
||||
</bindings>
|
||||
<client>
|
||||
<endpoint address="http://testws.baroservice.com/FAX.asmx" binding="basicHttpBinding"
|
||||
bindingConfiguration="BaroService_FAXSoap" contract="BaroService_API.BaroService_FAXSoap"
|
||||
name="BaroService_FAXSoap" />
|
||||
<endpoint address="https://testws.baroservice.com/TI.asmx" binding="basicHttpBinding"
|
||||
bindingConfiguration="BaroService_TISoap" contract="BaroService_TI.BaroService_TISoap"
|
||||
name="BaroService_TISoap" />
|
||||
<endpoint address="http://testws.baroservice.com/FAX.asmx" binding="basicHttpBinding" bindingConfiguration="BaroService_FAXSoap" contract="BaroService_API.BaroService_FAXSoap" name="BaroService_FAXSoap" />
|
||||
<endpoint address="https://testws.baroservice.com/TI.asmx" binding="basicHttpBinding" bindingConfiguration="BaroService_TISoap" contract="BaroService_TI.BaroService_TISoap" name="BaroService_TISoap" />
|
||||
</client>
|
||||
</system.serviceModel>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Renci.SshNet" publicKeyToken="1cee9f8bde3db106" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-2020.0.1.0" newVersion="2020.0.1.0"/>
|
||||
<assemblyIdentity name="Renci.SshNet" publicKeyToken="1cee9f8bde3db106" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2020.0.1.0" newVersion="2020.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +0,0 @@
|
||||
9788969524102 1 간호사를 간호하는 간호사 경향BP 오성훈 13500 60 8100 [(주)글로리아북]납품 2021-07-14 오후 1:44 머리 10
|
||||
9791195010073 1 감정조절자(희망) : 나를 힘겹게 하는 나와 작별하기 프로젝트 헥소미아 김인자 16000 60 9600 [(주)글로리아북]납품 2021-07-14 오후 1:44 머리 11
|
||||
9788932320625 1 개는 우리를 어떻게 사랑하는가 : 개의 특별한 애정에 대한 과학적 탐구 현암사 클라이브 D. L. 윈 ; 전행선 17000 60 10200 [(주)글로리아북]납품 2021-07-14 오후 1:44 머리 12
|
||||
9791158491307 1 걷다 느끼다 쓰다 : 전문성과 대중성을 겸비한 글쓰기 수업 모아북스 이해사 15000 60 9000 [(주)글로리아북]납품 2021-07-14 오후 1:44 머리 13
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
a980cc54cfee34721f8734aaae513dd71cd3d934
|
||||
ad16a35a70790c263cbf0747895a86ffbd27fa022d03cce7d7af9bfcd3678dcd
|
||||
|
||||
@@ -152,3 +152,191 @@ C:\Users\Administrator\Desktop\unimarc\unimarc\UniMarc\bin\Debug\arControl.Net4.
|
||||
C:\Users\Administrator\Desktop\unimarc\unimarc\UniMarc\bin\Debug\CarlosAg.ExcelXmlWriter.dll
|
||||
C:\Users\Administrator\Desktop\unimarc\unimarc\UniMarc\bin\Debug\arCommUtil.dll
|
||||
C:\Users\Administrator\Desktop\unimarc\unimarc\UniMarc\obj\Debug\UniMarc.csproj.AssemblyReference.cache
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\selenium-manager\linux\selenium-manager
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\selenium-manager\macos\selenium-manager
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\selenium-manager\windows\selenium-manager.exe
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\runtimes\win-x86\native\WebView2Loader.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\UniMarc.exe.config
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\UniMarc.exe
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\UniMarc.pdb
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\ko\UniMarc.resources.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\AngleSharp.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\arCommUtil.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\arControl.Net4.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\ArLog.Net4.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\CarlosAg.ExcelXmlWriter.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\ICSharpCode.SharpZipLib.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Microsoft.Bcl.AsyncInterfaces.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Microsoft.Web.WebView2.Core.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Microsoft.Web.WebView2.WinForms.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Microsoft.Web.WebView2.Wpf.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Microsoft.Win32.Registry.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Newtonsoft.Json.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Renci.SshNet.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Buffers.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Memory.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Numerics.Vectors.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Security.AccessControl.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Security.Principal.Windows.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Text.Encoding.CodePages.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Text.Encodings.Web.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Text.Json.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Threading.Tasks.Extensions.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.ValueTuple.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\WebDriver.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\WebDriver.Support.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\WebDriverManager.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\AngleSharp.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\ICSharpCode.SharpZipLib.pdb
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\ICSharpCode.SharpZipLib.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Microsoft.Bcl.AsyncInterfaces.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Microsoft.Web.WebView2.Wpf.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Microsoft.Win32.Registry.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Newtonsoft.Json.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Renci.SshNet.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Buffers.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Memory.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Numerics.Vectors.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Security.AccessControl.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Security.Principal.Windows.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Text.Encoding.CodePages.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Text.Encodings.Web.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Text.Json.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.Threading.Tasks.Extensions.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\System.ValueTuple.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\WebDriver.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\WebDriver.Support.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Microsoft.Web.WebView2.Core.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\bin\Debug\Microsoft.Web.WebView2.WinForms.xml
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.csproj.AssemblyReference.cache
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\Interop.SHDocVw.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.csproj.ResolveComReference.cache
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.From_User_manage_List.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.AddMarc.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.AddMarc_FillBlank.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.CD_LP.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.CD_LP_AddList.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.CD_LP_List.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.CD_LP_SelectList.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.CD_LP_Sub.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Check_copyWD.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Check_Copy_Login.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Help_007.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Help_008.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Mac_List_Add.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.MarcCopySelect.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.Marc_FillBlank.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.납품관리.Bring_Back.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.납품관리.Order_Send_Chk.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.All_Book_Detail.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.All_Book_manage_Add.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.All_Book_manage_Edit.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Check_Copy_Sub_List.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Check_Copy_Sub_Search.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Check_ISBN_Split.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.마크.Check_ISBN_Sub.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Check_ISBN_Yes24.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.DLS_Manage.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\ExcelTest.findNchange.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\ExcelTest.Helper008.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.마크.Job_Order.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.마크.Mac_Chack_Up.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.마크.Mac_List_Merge.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Mac_Stat_Stat.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Marc_mkList.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Marc_Plan_ClassSymbol.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Marc_Plan_GearExcel.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Marc_Plan_PrintLabel.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Marc_Plan_Sub_MarcEdit.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Marc_Plan_Sub_SelectList.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Marc_Plan_Sub_SelectList_Edit.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Marc_Plan_Sub_SelectList_Morge.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Marc_Preview.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.마크.Make_Document.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\ExcelTest.Marc.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Marc_memo.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.마크.Search_Infor_Sub.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.ShowDeleteMarc.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.마크.Zoom_Picture.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Bill_manage.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.회계.Part_time.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Purchase_Aggregation.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Purchase_Book.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Purchase_Input.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Remit_reg2.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.회계.Sales_Book.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Sales_Lookup.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Sales_Deposit.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.회계.Sales_Detail.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Sales_Input.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Purchase_not_pay.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Remit_reg.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.회계.Sales_In_Pay.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Account.Sales_Not_Pay.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Convenience.Board.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Convenience.Calendar.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Convenience.Quick_menu.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Convenience.Sale_End.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Convenience.Sale_Member_Manage.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Convenience.Sale_Sale.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Convenience.Sale_Settlement.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Convenience.Send_Notice.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Convenience.Talk.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.Book_Lookup.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.Commodity_Edit.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.Commodity_Morge.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.Commodity_registration.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.Commodity_Search.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.Input_Lookup_Stock.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.List_aggregation.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.List_Chk_Work.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.List_Lookup.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.Order_input.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.Order_input_Search.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Delivery.Purchase.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.DLS.Input_DLS.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.DLS.School_Lookup.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home.Book_infor_manage.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home.ledger_of_use.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home.memo.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home.Order_manage.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home.pw_change.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home.Transaction_manage.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home.Home_User_manage.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home.User_Infor.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home._Sub_Search_Form.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.All_Book_manage.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Check_copy.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Check_ISBN.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Collect_Mac.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.DLS_Copy.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Mac_Output.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Equip_manage.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Mac_Stat.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Mac_Input.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Mac_List.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Marc_Plan.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Nonverbal.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Search_Infor.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Set_Macro.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Setup_Shortcut.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac.Symbol_Add.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home.Batch_processing.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Mac_Setting.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Notice_Send.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Sales_Details.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.User_account_inquiry.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.User_manage.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.login.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Main.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.Properties.Resources.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Work_log.Work_Log.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\WindowsFormsApp1.Home.Home_User_manage.ko.resources
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.csproj.GenerateResource.cache
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.csproj.CoreCompileInputs.cache
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\ko\UniMarc.resources.dll
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.csproj.Up2Date
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.exe
|
||||
S:\Source\GLORIA\Unimarc\unimarc\UniMarc\obj\Debug\UniMarc.pdb
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2,6 +2,7 @@
|
||||
<packages>
|
||||
<package id="AngleSharp" version="1.0.4" targetFramework="net472" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="7.0.0" targetFramework="net472" />
|
||||
<package id="Microsoft.Web.WebView2" version="1.0.3351.48" targetFramework="net472" />
|
||||
<package id="Microsoft.Win32.Registry" version="5.0.0" targetFramework="net472" />
|
||||
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" />
|
||||
<package id="Selenium.Support" version="4.16.2" targetFramework="net472" />
|
||||
|
||||
@@ -190,7 +190,7 @@ namespace WindowsFormsApp1.Delivery
|
||||
dc.lbl_ID.Text = dataGridView1.Rows[idx].Cells["DLS_ID"].Value.ToString();
|
||||
dc.lbl_PW.Text = dataGridView1.Rows[idx].Cells["DLS_PW"].Value.ToString();
|
||||
dc.lbl_Area.Text = dataGridView1.Rows[idx].Cells["DLS_Area"].Value.ToString();
|
||||
dc.SetArea(dataGridView1.Rows[idx].Cells["DLS_Area"].Value.ToString(), true);
|
||||
//dc.SetArea(dataGridView1.Rows[idx].Cells["DLS_Area"].Value.ToString(), true);
|
||||
}
|
||||
if (sl != null) {
|
||||
sl.tb_SearchClient.Text = value;
|
||||
|
||||
101
unimarc/unimarc/마크/DLS_Copy.Designer.cs
generated
101
unimarc/unimarc/마크/DLS_Copy.Designer.cs
generated
@@ -33,6 +33,9 @@
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.panel8 = new System.Windows.Forms.Panel();
|
||||
this.dataGridView1 = new System.Windows.Forms.DataGridView();
|
||||
this.Book_name = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ISBN = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.Check = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.panel5 = new System.Windows.Forms.Panel();
|
||||
this.chk_RemoveBrit = new System.Windows.Forms.CheckBox();
|
||||
this.chk_spChar = new System.Windows.Forms.CheckBox();
|
||||
@@ -41,6 +44,7 @@
|
||||
this.btn_Reflesh008 = new System.Windows.Forms.Button();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.rBtn_ISBN = new System.Windows.Forms.RadioButton();
|
||||
this.btnStop = new System.Windows.Forms.Button();
|
||||
this.btn_Search = new System.Windows.Forms.Button();
|
||||
this.rBtn_BookName = new System.Windows.Forms.RadioButton();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
@@ -53,15 +57,12 @@
|
||||
this.btn_Close = new System.Windows.Forms.Button();
|
||||
this.panel4 = new System.Windows.Forms.Panel();
|
||||
this.panel7 = new System.Windows.Forms.Panel();
|
||||
this.webBrowser1 = new System.Windows.Forms.WebBrowser();
|
||||
this.webView21 = new Microsoft.Web.WebView2.WinForms.WebView2();
|
||||
this.panel6 = new System.Windows.Forms.Panel();
|
||||
this.btn_Back = new System.Windows.Forms.Button();
|
||||
this.btn_Forward = new System.Windows.Forms.Button();
|
||||
this.tb_URL = new System.Windows.Forms.TextBox();
|
||||
this.btnStop = new System.Windows.Forms.Button();
|
||||
this.Book_name = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ISBN = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.Check = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.panel1.SuspendLayout();
|
||||
this.panel8.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||
@@ -70,6 +71,7 @@
|
||||
this.panel2.SuspendLayout();
|
||||
this.panel4.SuspendLayout();
|
||||
this.panel7.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.webView21)).BeginInit();
|
||||
this.panel6.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@@ -97,6 +99,7 @@
|
||||
//
|
||||
// panel8
|
||||
//
|
||||
this.panel8.Controls.Add(this.statusStrip1);
|
||||
this.panel8.Controls.Add(this.dataGridView1);
|
||||
this.panel8.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel8.Location = new System.Drawing.Point(0, 103);
|
||||
@@ -123,6 +126,25 @@
|
||||
this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint);
|
||||
this.dataGridView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown);
|
||||
//
|
||||
// Book_name
|
||||
//
|
||||
this.Book_name.HeaderText = "도서명";
|
||||
this.Book_name.Name = "Book_name";
|
||||
this.Book_name.Width = 140;
|
||||
//
|
||||
// ISBN
|
||||
//
|
||||
this.ISBN.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
|
||||
this.ISBN.HeaderText = "ISBN";
|
||||
this.ISBN.Name = "ISBN";
|
||||
this.ISBN.Width = 140;
|
||||
//
|
||||
// Check
|
||||
//
|
||||
this.Check.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||
this.Check.HeaderText = "Y/N";
|
||||
this.Check.Name = "Check";
|
||||
//
|
||||
// panel5
|
||||
//
|
||||
this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
@@ -213,6 +235,16 @@
|
||||
this.rBtn_ISBN.Text = "ISBN";
|
||||
this.rBtn_ISBN.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnStop
|
||||
//
|
||||
this.btnStop.Location = new System.Drawing.Point(283, 5);
|
||||
this.btnStop.Name = "btnStop";
|
||||
this.btnStop.Size = new System.Drawing.Size(65, 23);
|
||||
this.btnStop.TabIndex = 2;
|
||||
this.btnStop.Text = "중 지";
|
||||
this.btnStop.UseVisualStyleBackColor = true;
|
||||
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
|
||||
//
|
||||
// btn_Search
|
||||
//
|
||||
this.btn_Search.Location = new System.Drawing.Point(217, 5);
|
||||
@@ -326,23 +358,24 @@
|
||||
//
|
||||
// panel7
|
||||
//
|
||||
this.panel7.Controls.Add(this.webBrowser1);
|
||||
this.panel7.Controls.Add(this.webView21);
|
||||
this.panel7.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel7.Location = new System.Drawing.Point(0, 35);
|
||||
this.panel7.Name = "panel7";
|
||||
this.panel7.Size = new System.Drawing.Size(929, 697);
|
||||
this.panel7.TabIndex = 7;
|
||||
//
|
||||
// webBrowser1
|
||||
// webView21
|
||||
//
|
||||
this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.webBrowser1.Location = new System.Drawing.Point(0, 0);
|
||||
this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
|
||||
this.webBrowser1.Name = "webBrowser1";
|
||||
this.webBrowser1.ScriptErrorsSuppressed = true;
|
||||
this.webBrowser1.Size = new System.Drawing.Size(929, 697);
|
||||
this.webBrowser1.TabIndex = 5;
|
||||
this.webBrowser1.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.webBrowser1_DocumentCompleted);
|
||||
this.webView21.AllowExternalDrop = true;
|
||||
this.webView21.CreationProperties = null;
|
||||
this.webView21.DefaultBackgroundColor = System.Drawing.Color.White;
|
||||
this.webView21.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.webView21.Location = new System.Drawing.Point(0, 0);
|
||||
this.webView21.Name = "webView21";
|
||||
this.webView21.Size = new System.Drawing.Size(929, 697);
|
||||
this.webView21.TabIndex = 5;
|
||||
this.webView21.ZoomFactor = 1D;
|
||||
//
|
||||
// panel6
|
||||
//
|
||||
@@ -387,34 +420,13 @@
|
||||
this.tb_URL.TabIndex = 0;
|
||||
this.tb_URL.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_URL_KeyDown);
|
||||
//
|
||||
// btnStop
|
||||
// statusStrip1
|
||||
//
|
||||
this.btnStop.Location = new System.Drawing.Point(283, 5);
|
||||
this.btnStop.Name = "btnStop";
|
||||
this.btnStop.Size = new System.Drawing.Size(65, 23);
|
||||
this.btnStop.TabIndex = 2;
|
||||
this.btnStop.Text = "중 지";
|
||||
this.btnStop.UseVisualStyleBackColor = true;
|
||||
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
|
||||
//
|
||||
// Book_name
|
||||
//
|
||||
this.Book_name.HeaderText = "도서명";
|
||||
this.Book_name.Name = "Book_name";
|
||||
this.Book_name.Width = 140;
|
||||
//
|
||||
// ISBN
|
||||
//
|
||||
this.ISBN.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
|
||||
this.ISBN.HeaderText = "ISBN";
|
||||
this.ISBN.Name = "ISBN";
|
||||
this.ISBN.Width = 140;
|
||||
//
|
||||
// Check
|
||||
//
|
||||
this.Check.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||
this.Check.HeaderText = "Y/N";
|
||||
this.Check.Name = "Check";
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 607);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(395, 22);
|
||||
this.statusStrip1.TabIndex = 1;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// DLS_Copy
|
||||
//
|
||||
@@ -428,6 +440,7 @@
|
||||
this.Load += new System.EventHandler(this.DLS_Copy_Load);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel8.ResumeLayout(false);
|
||||
this.panel8.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||
this.panel5.ResumeLayout(false);
|
||||
this.panel5.PerformLayout();
|
||||
@@ -437,6 +450,7 @@
|
||||
this.panel2.PerformLayout();
|
||||
this.panel4.ResumeLayout(false);
|
||||
this.panel7.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.webView21)).EndInit();
|
||||
this.panel6.ResumeLayout(false);
|
||||
this.panel6.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
@@ -461,7 +475,7 @@
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button btn_Search;
|
||||
public System.Windows.Forms.Label lbl_Area;
|
||||
private System.Windows.Forms.WebBrowser webBrowser1;
|
||||
private Microsoft.Web.WebView2.WinForms.WebView2 webView21;
|
||||
private System.Windows.Forms.Panel panel4;
|
||||
private System.Windows.Forms.Panel panel6;
|
||||
private System.Windows.Forms.TextBox tb_URL;
|
||||
@@ -478,5 +492,6 @@
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ISBN;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn Check;
|
||||
private System.Windows.Forms.Button btnStop;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,8 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Microsoft.Web.WebView2.Core;
|
||||
using Microsoft.Web.WebView2.WinForms;
|
||||
|
||||
namespace WindowsFormsApp1.Mac
|
||||
{
|
||||
@@ -28,9 +30,39 @@ namespace WindowsFormsApp1.Mac
|
||||
//변경된 홈페이지: https://dls.edunet.net/DLS/totalLoginMain사용 ID / 비번 : t5191774 / tb5191774
|
||||
}
|
||||
|
||||
private void DLS_Copy_Load(object sender, EventArgs e)
|
||||
private async void DLS_Copy_Load(object sender, EventArgs e)
|
||||
{
|
||||
webBrowser1.Navigate(url);
|
||||
try
|
||||
{
|
||||
compidx = main.com_idx;
|
||||
|
||||
this.Show();
|
||||
Application.DoEvents();
|
||||
|
||||
// WebView2 환경 준비 (Fixed Version 지원)
|
||||
var environment = await WebView2Installer.GetWebView2EnvironmentAsync();
|
||||
await webView21.EnsureCoreWebView2Async(environment);
|
||||
webView21.CoreWebView2.NavigationCompleted += WebView21_NavigationCompleted;
|
||||
webView21.CoreWebView2.Navigate(url);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(
|
||||
$"WebView2 초기화 중 오류가 발생했습니다: {ex.Message}\n\n" +
|
||||
"웹 기능이 필요하면 나중에 다시 시도해 주세요.",
|
||||
"WebView2 초기화 오류",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error
|
||||
);
|
||||
|
||||
// webView2 숨기고 오류 상태 표시
|
||||
webView21.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void WebView21_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
|
||||
{
|
||||
tb_URL.Text = webView21.CoreWebView2.Source;
|
||||
}
|
||||
|
||||
private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
|
||||
@@ -63,7 +95,7 @@ namespace WindowsFormsApp1.Mac
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void btn_Connect_Click(object sender, EventArgs e)
|
||||
private async void btn_Connect_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lbl_Client.Text == "Client")
|
||||
{
|
||||
@@ -76,38 +108,43 @@ namespace WindowsFormsApp1.Mac
|
||||
return;
|
||||
}
|
||||
|
||||
string url = webBrowser1.Url.AbsoluteUri;
|
||||
string url = webView21.CoreWebView2.Source;
|
||||
|
||||
webBrowser1.Document.GetElementById("headerLoginBtn").InvokeMember("click");
|
||||
//await webView21.CoreWebView2.ExecuteScriptAsync("document.getElementById('headerLoginBtn').click();");
|
||||
|
||||
Delay(5000);
|
||||
await Task.Delay(1000);
|
||||
|
||||
DLS_Login(url);
|
||||
await DLS_Login(url);
|
||||
}
|
||||
#region Connect_SUB
|
||||
|
||||
private void DLS_Login(string url)
|
||||
private async Task DLS_Login(string url)
|
||||
{
|
||||
if (lbl_ID.Text == "" || lbl_PW.Text == "")
|
||||
{
|
||||
MessageBox.Show("ID 혹은 PW가 없습니다.");
|
||||
return;
|
||||
}
|
||||
string ID = lbl_ID.Text, PW = lbl_PW.Text;
|
||||
url = webBrowser1.Document.GetElementById(SetArea(lbl_Area.Text)).GetAttribute("value");
|
||||
string ID = lbl_ID.Text.Trim(), PW = lbl_PW.Text.Trim();
|
||||
//string elementValue = await webView21.CoreWebView2.ExecuteScriptAsync($"document.getElementById('{await SetArea(lbl_Area.Text)}').value;");
|
||||
//url = elementValue.Trim('"');
|
||||
|
||||
webBrowser1.Document.GetElementById("s_id").SetAttribute("value", ID);
|
||||
webBrowser1.Document.GetElementById("s_pwd").SetAttribute("value", PW);
|
||||
//id설정
|
||||
await webView21.CoreWebView2.ExecuteScriptAsync($"document.getElementById('lgID').value = '{ID}';");
|
||||
|
||||
webBrowser1.Document.GetElementById("s_login").InvokeMember("click");
|
||||
//pw 설정
|
||||
await webView21.CoreWebView2.ExecuteScriptAsync($"document.getElementById('lgPW').value = '{PW}';");
|
||||
|
||||
Delay(4000);
|
||||
webBrowser1.Navigate(url + "/r/dls_new/bookInfo/collectionFormMA.jsp");
|
||||
//로그인버튼 클릭
|
||||
await webView21.CoreWebView2.ExecuteScriptAsync("document.getElementById('loginBtn').click();");
|
||||
|
||||
await Task.Delay(4000);
|
||||
webView21.CoreWebView2.Navigate("https://dls1.edunet.net/DLS/bookMng/bookMain");
|
||||
}
|
||||
#endregion
|
||||
private bool tStop = false;
|
||||
private int tSearchIDX = 0;
|
||||
private void btn_Search_Click(object sender, EventArgs e)
|
||||
private async void btn_Search_Click(object sender, EventArgs e)
|
||||
{
|
||||
tStop = false;
|
||||
if (dataGridView1.Rows[0].Cells["ISBN"].Value == null && rBtn_ISBN.Checked)
|
||||
@@ -120,16 +157,16 @@ namespace WindowsFormsApp1.Mac
|
||||
MessageBox.Show("도서명이 입력되지않았습니다!");
|
||||
return;
|
||||
}
|
||||
if (!SearchCopy(rBtn_ISBN.Checked))
|
||||
if (!await SearchCopy(rBtn_ISBN.Checked))
|
||||
return;
|
||||
|
||||
MessageBox.Show("완료되었습니다.");
|
||||
}
|
||||
#region SearchClick_Sub
|
||||
|
||||
private bool SearchCopy(bool isISBN)
|
||||
private async Task<bool> SearchCopy(bool isISBN)
|
||||
{
|
||||
if (!webBrowser1.Url.AbsoluteUri.Contains("collectionFormMA"))
|
||||
if (!webView21.CoreWebView2.Source.Contains("collectionFormMA"))
|
||||
{
|
||||
MessageBox.Show("자료관리 창이 아닙니다!");
|
||||
return false;
|
||||
@@ -144,12 +181,12 @@ namespace WindowsFormsApp1.Mac
|
||||
if (isISBN)
|
||||
{
|
||||
string Target = dataGridView1.Rows[a].Cells["ISBN"].Value.ToString();
|
||||
Check = SearchISBN(Target);
|
||||
Check = await SearchISBN(Target);
|
||||
}
|
||||
else
|
||||
{
|
||||
string Target = dataGridView1.Rows[a].Cells["Book_name"].Value.ToString();
|
||||
Check = SearchName(Target);
|
||||
Check = await SearchName(Target);
|
||||
}
|
||||
if (Check == "0")
|
||||
Check = "";
|
||||
@@ -173,34 +210,15 @@ namespace WindowsFormsApp1.Mac
|
||||
/// </summary>
|
||||
/// <param name="Target">도서명</param>
|
||||
/// <param name="row">행 번호</param>
|
||||
private string SearchName(string Target)
|
||||
private async Task<string> SearchName(string Target)
|
||||
{
|
||||
HtmlElementCollection search = webBrowser1.Document.GetElementsByTagName("input");
|
||||
foreach (HtmlElement Search in search)
|
||||
{
|
||||
if (Search.Id == "bib1")
|
||||
Search.SetAttribute("value", Target);
|
||||
await webView21.CoreWebView2.ExecuteScriptAsync($"document.getElementById('bib1').value = '{Target.Replace("'", "\\'")}';");
|
||||
await webView21.CoreWebView2.ExecuteScriptAsync("document.querySelector('.button_search').click();");
|
||||
await Task.Delay(5000);
|
||||
|
||||
if (Search.GetAttribute("className") == "button_search")
|
||||
Search.InvokeMember("click");
|
||||
}
|
||||
Delay(5000);
|
||||
|
||||
string InnerText = "";
|
||||
|
||||
HtmlElementCollection paging_nav = webBrowser1.Document.GetElementsByTagName("div");
|
||||
foreach (HtmlElement div in paging_nav)
|
||||
{
|
||||
if (div.GetAttribute("className") == "paging_nav")
|
||||
{
|
||||
HtmlElementCollection span = div.GetElementsByTagName("span");
|
||||
foreach (HtmlElement count in span)
|
||||
{
|
||||
InnerText = count.InnerText;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
string script = "(() => { const div = document.querySelector('.paging_nav'); return div ? div.querySelector('span')?.innerText || '' : ''; })()";
|
||||
string InnerText = await webView21.CoreWebView2.ExecuteScriptAsync(script);
|
||||
InnerText = InnerText.Trim('"');
|
||||
|
||||
return InnerText;
|
||||
}
|
||||
@@ -209,41 +227,16 @@ namespace WindowsFormsApp1.Mac
|
||||
/// </summary>
|
||||
/// <param name="Target">ISBN</param>
|
||||
/// <param name="row">행 번호</param>
|
||||
private string SearchISBN(string Target)
|
||||
private async Task<string> SearchISBN(string Target)
|
||||
{
|
||||
HtmlElementCollection combo = webBrowser1.Document.GetElementsByTagName("select");
|
||||
foreach (HtmlElement Search in combo)
|
||||
{
|
||||
if (Search.Id == "bibKind2")
|
||||
Search.SetAttribute("selectedIndex", "2");
|
||||
}
|
||||
await webView21.CoreWebView2.ExecuteScriptAsync("document.getElementById('bibKind2').selectedIndex = 2;");
|
||||
await webView21.CoreWebView2.ExecuteScriptAsync($"document.getElementById('bib2').value = '{Target}';");
|
||||
await webView21.CoreWebView2.ExecuteScriptAsync("document.querySelector('.button_search').click();");
|
||||
await Task.Delay(5000);
|
||||
|
||||
HtmlElementCollection search = webBrowser1.Document.GetElementsByTagName("input");
|
||||
foreach (HtmlElement Search in search)
|
||||
{
|
||||
if (Search.Id == "bib2")
|
||||
Search.SetAttribute("value", Target);
|
||||
|
||||
if (Search.GetAttribute("className") == "button_search")
|
||||
Search.InvokeMember("click");
|
||||
}
|
||||
Delay(5000);
|
||||
|
||||
string InnerText = "";
|
||||
|
||||
HtmlElementCollection paging_nav = webBrowser1.Document.GetElementsByTagName("div");
|
||||
foreach (HtmlElement div in paging_nav)
|
||||
{
|
||||
if (div.GetAttribute("className") == "paging_nav")
|
||||
{
|
||||
HtmlElementCollection span = div.GetElementsByTagName("span");
|
||||
foreach (HtmlElement count in span)
|
||||
{
|
||||
InnerText = count.InnerText;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
string script = "(() => { const div = document.querySelector('.paging_nav'); return div ? div.querySelector('span')?.innerText || '' : ''; })()";
|
||||
string InnerText = await webView21.CoreWebView2.ExecuteScriptAsync(script);
|
||||
InnerText = InnerText.Trim('"');
|
||||
|
||||
return InnerText;
|
||||
}
|
||||
@@ -253,7 +246,7 @@ namespace WindowsFormsApp1.Mac
|
||||
/// DLS지역 코드 변환
|
||||
/// </summary>
|
||||
/// <returns>코드</returns>
|
||||
public string SetArea(string dlsArea, bool move = false)
|
||||
public async Task<string> SetArea(string dlsArea, bool move = false)
|
||||
{
|
||||
string[] Area = {
|
||||
"서울", "부산", "대구", "인천", "광주",
|
||||
@@ -282,7 +275,9 @@ namespace WindowsFormsApp1.Mac
|
||||
{
|
||||
try
|
||||
{
|
||||
webBrowser1.Navigate(webBrowser1.Document.GetElementById(Code[idx]).GetAttribute("value"));
|
||||
string elementValue = await webView21.CoreWebView2.ExecuteScriptAsync($"document.getElementById('{Code[idx]}').value;");
|
||||
elementValue = elementValue.Trim('"');
|
||||
webView21.CoreWebView2.Navigate(elementValue);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -318,17 +313,14 @@ namespace WindowsFormsApp1.Mac
|
||||
|
||||
private void btn_Back_Click(object sender, EventArgs e)
|
||||
{
|
||||
webBrowser1.GoBack();
|
||||
if (webView21.CoreWebView2.CanGoBack)
|
||||
webView21.CoreWebView2.GoBack();
|
||||
}
|
||||
|
||||
private void btn_Forward_Click(object sender, EventArgs e)
|
||||
{
|
||||
webBrowser1.GoForward();
|
||||
}
|
||||
|
||||
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
|
||||
{
|
||||
tb_URL.Text = webBrowser1.Url.AbsoluteUri;
|
||||
if (webView21.CoreWebView2.CanGoForward)
|
||||
webView21.CoreWebView2.GoForward();
|
||||
}
|
||||
|
||||
private void tb_URL_KeyDown(object sender, KeyEventArgs e)
|
||||
@@ -336,7 +328,7 @@ namespace WindowsFormsApp1.Mac
|
||||
if (e.KeyCode == Keys.Enter)
|
||||
{
|
||||
string url = tb_URL.Text;
|
||||
webBrowser1.Navigate(url);
|
||||
webView21.CoreWebView2.Navigate(url);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -117,6 +117,9 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="Book_name.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
@@ -132,37 +135,38 @@
|
||||
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
|
||||
P87mU+ZvyRQDAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
Reference in New Issue
Block a user