base
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
// Config1Dlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Config1Dlg.h"
|
||||
|
||||
|
||||
// CConfig1Dlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConfig1Dlg, CDialog)
|
||||
CConfig1Dlg::CConfig1Dlg(CWnd* pParent /*=NULL*/)
|
||||
: CConfigSubDlg(CConfig1Dlg::IDD, pParent)
|
||||
, m_nAfterWork(0)
|
||||
, m_bForceKill(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
CConfig1Dlg::~CConfig1Dlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CConfig1Dlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Radio(pDX, IDC_RDO_AFTERWORK1, m_nAfterWork);
|
||||
DDX_Check(pDX, IDC_CHK_FORCEKILL, m_bForceKill);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConfig1Dlg, CDialog)
|
||||
ON_BN_CLICKED(IDC_RDO_AFTERWORK1, OnRdoAfterwork)
|
||||
ON_BN_CLICKED(IDC_RDO_AFTERWORK2, OnRdoAfterwork)
|
||||
ON_BN_CLICKED(IDC_RDO_AFTERWORK3, OnRdoAfterwork)
|
||||
ON_BN_CLICKED(IDC_RDO_AFTERWORK4, OnRdoAfterwork)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConfig1Dlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CConfig1Dlg::OnInitDialog()
|
||||
{
|
||||
CConfigSubDlg::OnInitDialog();
|
||||
|
||||
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
OnRdoAfterwork();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CConfig1Dlg::OnRdoAfterwork()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
|
||||
GetDlgItem(IDC_CHK_FORCEKILL)->EnableWindow(m_nAfterWork != 0);
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#pragma once
|
||||
|
||||
#include "ConfigSubDlg.h"
|
||||
|
||||
|
||||
// CConfig1Dlg 대화 상자입니다.
|
||||
|
||||
class CConfig1Dlg : public CConfigSubDlg
|
||||
{
|
||||
DECLARE_DYNAMIC(CConfig1Dlg)
|
||||
|
||||
public:
|
||||
CConfig1Dlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConfig1Dlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONFIG_1 };
|
||||
|
||||
public:
|
||||
int m_nAfterWork;
|
||||
BOOL m_bForceKill;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnRdoAfterwork();
|
||||
};
|
||||
@@ -0,0 +1,32 @@
|
||||
// Config2Dlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Config2Dlg.h"
|
||||
|
||||
|
||||
// CConfig2Dlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConfig2Dlg, CDialog)
|
||||
CConfig2Dlg::CConfig2Dlg(CWnd* pParent /*=NULL*/)
|
||||
: CConfigSubDlg(CConfig2Dlg::IDD, pParent)
|
||||
, m_nWritePolicy(0)
|
||||
{
|
||||
}
|
||||
|
||||
CConfig2Dlg::~CConfig2Dlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CConfig2Dlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Radio(pDX, IDC_RDO_WRITEPOLICY1, m_nWritePolicy);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConfig2Dlg, CDialog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConfig2Dlg 메시지 처리기입니다.
|
||||
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include "ConfigSubDlg.h"
|
||||
|
||||
|
||||
// CConfig2Dlg 대화 상자입니다.
|
||||
|
||||
class CConfig2Dlg : public CConfigSubDlg
|
||||
{
|
||||
DECLARE_DYNAMIC(CConfig2Dlg)
|
||||
|
||||
public:
|
||||
CConfig2Dlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConfig2Dlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONFIG_2 };
|
||||
|
||||
public:
|
||||
int m_nWritePolicy;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,32 @@
|
||||
// Config3Dlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Config3Dlg.h"
|
||||
|
||||
|
||||
// CConfig3Dlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConfig3Dlg, CDialog)
|
||||
CConfig3Dlg::CConfig3Dlg(CWnd* pParent /*=NULL*/)
|
||||
: CConfigSubDlg(CConfig3Dlg::IDD, pParent)
|
||||
, m_bChkShowAllFile(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
CConfig3Dlg::~CConfig3Dlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CConfig3Dlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Check(pDX, IDC_CHK_SHOWALLFILE, m_bChkShowAllFile);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConfig3Dlg, CDialog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConfig3Dlg 메시지 처리기입니다.
|
||||
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "ConfigSubDlg.h"
|
||||
|
||||
|
||||
// CConfig3Dlg 대화 상자입니다.
|
||||
|
||||
class CConfig3Dlg : public CConfigSubDlg
|
||||
{
|
||||
DECLARE_DYNAMIC(CConfig3Dlg)
|
||||
|
||||
public:
|
||||
CConfig3Dlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConfig3Dlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONFIG_3 };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
BOOL m_bChkShowAllFile;
|
||||
};
|
||||
@@ -0,0 +1,147 @@
|
||||
// ConfigDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConfigDlg.h"
|
||||
|
||||
#include "../SHEUtil.h"
|
||||
|
||||
|
||||
// CConfigDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConfigDlg, CDialog)
|
||||
CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CConfigDlg::IDD, pParent)
|
||||
{
|
||||
m_iPage = -1;
|
||||
}
|
||||
|
||||
CConfigDlg::~CConfigDlg()
|
||||
{
|
||||
for (std::vector<CConfigPage*>::iterator iter = m_dlgVec.begin(); iter != m_dlgVec.end(); iter++)
|
||||
delete (*iter);
|
||||
}
|
||||
|
||||
void CConfigDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_TAB, m_tab);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
|
||||
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, OnTabSelchange)
|
||||
ON_BN_CLICKED(IDOK, OnOk)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConfigDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CConfigDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
m_tab.InsertItem(0, "전송후 작업");
|
||||
m_tab.InsertItem(1, "같은 파일 처리");
|
||||
m_tab.InsertItem(2, "기타");
|
||||
m_tab.SetItemSize(CSize(130, 17));
|
||||
|
||||
m_tab.GetClientRect(&m_rcFrame);
|
||||
m_rcFrame.left += 1;
|
||||
m_rcFrame.top += 20;
|
||||
m_rcFrame.right -= 1;
|
||||
m_rcFrame.bottom -= 1;
|
||||
|
||||
if (m_regutil.OpenKey(HKEY_CURRENT_USER, CString(REG_KEY))) {
|
||||
m_dlg1.m_nAfterWork = m_regutil.GetNumValue("AfterWork");
|
||||
m_dlg1.m_bForceKill = m_regutil.GetNumValue("ForceKill");
|
||||
m_dlg2.m_nWritePolicy = m_regutil.GetNumValue("WritePolicy");
|
||||
m_dlg3.m_bChkShowAllFile = m_regutil.GetNumValue("ShowAllFile");
|
||||
|
||||
m_regutil.CloseKey();
|
||||
}
|
||||
|
||||
AddPage(m_dlg1, "전송후 작업");
|
||||
AddPage(m_dlg2, "같은 파일 처리");
|
||||
AddPage(m_dlg3, "기타");
|
||||
|
||||
ShowPage(0);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CConfigDlg::AddPage(CConfigSubDlg &dlg, LPCTSTR pszCaption)
|
||||
{
|
||||
CConfigPage *pcp = new CConfigPage();
|
||||
pcp->m_pdlg = &dlg;
|
||||
pcp->m_nID = dlg.GetID();
|
||||
pcp->m_sCaption = pszCaption;
|
||||
|
||||
m_dlgVec.push_back(pcp);
|
||||
|
||||
if (!::IsWindow(dlg.m_hWnd))
|
||||
dlg.Create(dlg.GetID(), &m_tab);
|
||||
}
|
||||
|
||||
BOOL CConfigDlg::ShowPage(int iPage)
|
||||
{
|
||||
if (m_tab.GetCurSel() >= 0) {
|
||||
CConfigPage* pcp = (CConfigPage*)m_dlgVec[m_tab.GetCurSel()];
|
||||
if (!pcp)
|
||||
return FALSE;
|
||||
|
||||
if (pcp->m_pdlg) {
|
||||
if (::IsWindow(pcp->m_pdlg->m_hWnd))
|
||||
pcp->m_pdlg->ShowWindow(SW_HIDE);
|
||||
}
|
||||
}
|
||||
|
||||
CConfigPage* pcp = (CConfigPage*)m_dlgVec[iPage];
|
||||
if (!pcp)
|
||||
return FALSE;
|
||||
|
||||
if (pcp->m_pdlg) {
|
||||
if (::IsWindow(pcp->m_pdlg->m_hWnd)) {
|
||||
pcp->m_pdlg->SetParent(&m_tab);
|
||||
pcp->m_pdlg->MoveWindow(m_rcFrame.left, m_rcFrame.top, m_rcFrame.Width(), m_rcFrame.Height());
|
||||
pcp->m_pdlg->ShowWindow(SW_SHOW);
|
||||
pcp->m_pdlg->RedrawWindow();
|
||||
pcp->m_pdlg->SetFocus();
|
||||
}
|
||||
|
||||
m_tab.SetCurSel(iPage);
|
||||
|
||||
m_iPage = iPage;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CConfigDlg::OnTabSelchange(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
||||
ShowPage(m_tab.GetCurSel());
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CConfigDlg::OnOk()
|
||||
{
|
||||
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
||||
m_dlg1.UpdateData();
|
||||
m_dlg2.UpdateData();
|
||||
m_dlg3.UpdateData();
|
||||
|
||||
if (m_regutil.OpenKey(HKEY_CURRENT_USER, CString(REG_KEY))) {
|
||||
m_regutil.SetNumValue("AfterWork", m_dlg1.m_nAfterWork);
|
||||
m_regutil.SetNumValue("ForceKill", m_dlg1.m_bForceKill);
|
||||
m_regutil.SetNumValue("WritePolicy", m_dlg2.m_nWritePolicy);
|
||||
m_regutil.SetNumValue("ShowAllFile", m_dlg3.m_bChkShowAllFile);
|
||||
|
||||
m_regutil.CloseKey();
|
||||
}
|
||||
|
||||
CDialog::OnOK();
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
#pragma once
|
||||
#include "afxcmn.h"
|
||||
|
||||
#include "ConfigSubDlg.h"
|
||||
#include "Config1Dlg.h"
|
||||
#include "Config2Dlg.h"
|
||||
#include "Config3Dlg.h"
|
||||
#include "RegUtil.h"
|
||||
|
||||
class CConfigPage
|
||||
{
|
||||
public:
|
||||
UINT m_nID;
|
||||
CString m_sCaption;
|
||||
CConfigSubDlg *m_pdlg;
|
||||
};
|
||||
|
||||
|
||||
// CConfigDlg 대화 상자입니다.
|
||||
|
||||
class CConfigDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CConfigDlg)
|
||||
|
||||
public:
|
||||
CConfigDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConfigDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONFIG };
|
||||
|
||||
protected:
|
||||
CConfig1Dlg m_dlg1;
|
||||
CConfig2Dlg m_dlg2;
|
||||
CConfig3Dlg m_dlg3;
|
||||
|
||||
CRect m_rcFrame;
|
||||
|
||||
std::vector<CConfigPage*> m_dlgVec;
|
||||
|
||||
int m_iPage;
|
||||
|
||||
CRegUtil m_regutil;
|
||||
|
||||
public:
|
||||
CTabCtrl m_tab;
|
||||
|
||||
protected:
|
||||
void AddPage(CConfigSubDlg &dlg, LPCTSTR pszCaption);
|
||||
BOOL ShowPage(int iPage);
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnTabSelchange(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnOk();
|
||||
};
|
||||
Binary file not shown.
@@ -0,0 +1,429 @@
|
||||
// ConsoleTransfer.cpp : 응용 프로그램에 대한 클래스 동작을 정의합니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleTransfer.h"
|
||||
|
||||
#include <psapi.h.>
|
||||
#include <math.h.>
|
||||
|
||||
#include "CustomControlSite.h"
|
||||
#include "TransferDlg.h"
|
||||
#include "NoticeTrans.h"
|
||||
#include "Options.h"
|
||||
#include ".\consoletransfer.h"
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
|
||||
bool ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead);
|
||||
bool ShutDownSystem(UINT uFlags);
|
||||
|
||||
//#define _TEST
|
||||
|
||||
// CConsoleTransferApp
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConsoleTransferApp, CWinApp)
|
||||
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConsoleTransferApp 생성
|
||||
|
||||
CConsoleTransferApp::CConsoleTransferApp()
|
||||
{
|
||||
// TODO: 여기에 생성 코드를 추가합니다.
|
||||
// InitInstance에 모든 중요한 초기화 작업을 배치합니다.
|
||||
}
|
||||
|
||||
CConsoleTransferApp::~CConsoleTransferApp()
|
||||
{
|
||||
if (m_pimpldisp)
|
||||
delete m_pimpldisp;
|
||||
}
|
||||
|
||||
|
||||
// 유일한 CConsoleTransferApp 개체입니다.
|
||||
|
||||
CConsoleTransferApp theApp;
|
||||
|
||||
|
||||
// CConsoleTransferApp 초기화
|
||||
|
||||
BOOL CConsoleTransferApp::InitInstance()
|
||||
{
|
||||
// 응용 프로그램 매니페스트가 ComCtl32.dll 버전 6 이상을 사용하여 비주얼 스타일을
|
||||
// 사용하도록 지정하는 경우, Windows XP 상에서 반드시 InitCommonControls()가 필요합니다.
|
||||
// InitCommonControls()를 사용하지 않으면 창을 만들 수 없습니다.
|
||||
InitCommonControls();
|
||||
|
||||
CWinApp::InitInstance();
|
||||
|
||||
CCustomOccManager *poccmgr = new CCustomOccManager;
|
||||
m_pimpldisp = new CImpIDispatch;
|
||||
AfxEnableControlContainer(poccmgr);
|
||||
|
||||
#ifdef _TEST
|
||||
bool bRet = false;
|
||||
|
||||
CTransferDlg dlg;
|
||||
m_pMainWnd = &dlg;
|
||||
|
||||
dlg.m_pszFileList = NULL;
|
||||
|
||||
dlg.m_tp.hwnd = NULL;
|
||||
// dlg.m_tp.nAction = TPA_UPLOAD;
|
||||
dlg.m_tp.nAction = TPA_DOWNLOAD;
|
||||
dlg.m_tp.nFileListSize = 11;
|
||||
dlg.m_tp.nFreeBytes = -1;
|
||||
strcpy(dlg.m_tp.szHost, "222.122.136.201/dav");
|
||||
// strcpy(dlg.m_tp.szHost, "192.168.0.203/dav");
|
||||
strcpy(dlg.m_tp.szDstPath, "");
|
||||
strcpy(dlg.m_tp.szDstPath, "G:\\");
|
||||
dlg.m_tp.szProxyHost[0] = NULL;
|
||||
dlg.m_tp.nProxyPort = 0;
|
||||
strcpy(dlg.m_tp.szUserId, "0udisk@unizit");
|
||||
strcpy(dlg.m_tp.szPassword, "0udisk");
|
||||
// strcpy(dlg.m_tp.szUserId, "192@dosoar");
|
||||
// strcpy(dlg.m_tp.szPassword, "dosoar");
|
||||
|
||||
dlg.m_pszFileList = new char[100];
|
||||
if (!dlg.m_pszFileList)
|
||||
goto EXIT_PROGRAM;
|
||||
|
||||
strcpy(dlg.m_pszFileList, "/HODOLi.avi");
|
||||
// strcpy(dlg.m_pszFileList, "E:\\Game\\F.E.A.R\\FEAR.mdf");
|
||||
// strcpy(dlg.m_pszFileList, "E:\\마이클조던_베스트40.avi");
|
||||
#else
|
||||
if (!IsValidCommand())
|
||||
return FALSE;
|
||||
|
||||
bool bRet = false;
|
||||
|
||||
CTransferDlg dlg;
|
||||
m_pMainWnd = &dlg;
|
||||
CString strTemp;
|
||||
|
||||
dlg.m_pszFileList = NULL;
|
||||
|
||||
// 파이프 핸들 열기...
|
||||
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
|
||||
if (hStdin == INVALID_HANDLE_VALUE)
|
||||
goto EXIT_PROGRAM;
|
||||
|
||||
// 파라미터 구조체 내용 읽기...
|
||||
if (!ReadFile(hStdin, &dlg.m_tp, sizeof(dlg.m_tp)))
|
||||
goto EXIT_PROGRAM;
|
||||
|
||||
dlg.m_pszFileList = new char[dlg.m_tp.nFileListSize];
|
||||
if (!dlg.m_pszFileList)
|
||||
goto EXIT_PROGRAM;
|
||||
|
||||
if (!ReadFile(hStdin, dlg.m_pszFileList, dlg.m_tp.nFileListSize))
|
||||
goto EXIT_PROGRAM;
|
||||
#endif
|
||||
|
||||
dlg.DoModal();
|
||||
|
||||
bRet = true;
|
||||
|
||||
EXIT_PROGRAM:
|
||||
if (dlg.m_pszFileList)
|
||||
delete []dlg.m_pszFileList;
|
||||
|
||||
::PostMessage(dlg.m_tp.hwnd, WMU_TRANSFER_DLG_CLOSE, (WPARAM)dlg.m_tp.pParam, NULL);
|
||||
|
||||
if (!IsExistsSameProcess()) {
|
||||
int nAfterExec = COptions::GetOptionVal(OPTION_AFTEREXEC);
|
||||
if (nAfterExec > 0) {
|
||||
// UINT uFlags = bForceKill ? EWX_FORCE : 0;
|
||||
UINT uFlags = 0;
|
||||
|
||||
switch (nAfterExec) {
|
||||
case 1: uFlags |= EWX_LOGOFF; break;
|
||||
case 2: uFlags |= EWX_REBOOT; break;
|
||||
case 3: uFlags |= EWX_SHUTDOWN; break;
|
||||
}
|
||||
|
||||
ShutDownSystem(uFlags);
|
||||
}
|
||||
}
|
||||
|
||||
// 대화 상자가 닫혔으므로 응용 프로그램의 메시지 펌프를 시작하지 않고
|
||||
// 응용 프로그램을 끝낼 수 있도록 FALSE를 반환합니다.
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool CConsoleTransferApp::IsValidCommand()
|
||||
{
|
||||
return strcmp(m_lpCmdLine, EXECUTE_PARAM) == 0;
|
||||
}
|
||||
|
||||
#define MAX_PROCESS 1000
|
||||
|
||||
bool CConsoleTransferApp::IsExistsSameProcess()
|
||||
{
|
||||
bool bRet = false;
|
||||
|
||||
LPDWORD pdwProcessId = new DWORD[MAX_PROCESS];
|
||||
if (!pdwProcessId)
|
||||
return true;
|
||||
|
||||
DWORD dwCount;
|
||||
if (!EnumProcesses(pdwProcessId, sizeof(DWORD) * MAX_PROCESS, &dwCount))
|
||||
goto EXIT_FUNCTION;
|
||||
|
||||
dwCount /= sizeof(DWORD);
|
||||
|
||||
char szModuleName[MAX_PATH];
|
||||
if (!GetModuleFileName(GetModuleHandle(NULL), szModuleName, MAX_PATH))
|
||||
goto EXIT_FUNCTION;
|
||||
|
||||
int nFound = 0;
|
||||
char szFileName[MAX_PATH];
|
||||
for (DWORD i = 0; i < dwCount; i++) {
|
||||
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pdwProcessId[i]);
|
||||
if (!hProcess)
|
||||
continue;
|
||||
|
||||
if (!GetModuleFileNameEx(hProcess, NULL, szFileName, MAX_PATH))
|
||||
continue;
|
||||
|
||||
if (strcmp(szFileName, szModuleName) == 0)
|
||||
nFound++;
|
||||
}
|
||||
|
||||
if (nFound <= 1)
|
||||
bRet = true;
|
||||
|
||||
EXIT_FUNCTION:
|
||||
if (pdwProcessId)
|
||||
delete []pdwProcessId;
|
||||
|
||||
return !bRet;
|
||||
}
|
||||
|
||||
void CConsoleTransferApp::NoticeTransComplete(CString targetPath )
|
||||
{
|
||||
PTRANPARAM_STRUCT ptp = new TRANPARAM_STRUCT;
|
||||
|
||||
memcpy( ptp , &(((CTransferDlg*)m_pMainWnd)->m_tp) , sizeof(TRANPARAM_STRUCT));
|
||||
|
||||
CNoticeTrans dlg(ptp , targetPath);
|
||||
dlg.DoModal();
|
||||
|
||||
CTransferDlg* mainDlg = (CTransferDlg*) m_pMainWnd;
|
||||
mainDlg->TransCompleteWithDistribute();
|
||||
}
|
||||
|
||||
void CConsoleTransferApp::NoticeLastFileTransComplete()
|
||||
{
|
||||
PTRANPARAM_STRUCT ptp = new TRANPARAM_STRUCT;
|
||||
|
||||
memcpy( ptp , &(((CTransferDlg*)m_pMainWnd)->m_tp) , sizeof(TRANPARAM_STRUCT));
|
||||
|
||||
CNoticeTrans dlg(ptp , 1 /*LastFileTransComplete*/);
|
||||
dlg.DoModal();
|
||||
}
|
||||
|
||||
CString GetErrorMessage(DWORD dwError)
|
||||
{
|
||||
CString sError;
|
||||
LPVOID lpBuffer;
|
||||
|
||||
if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL, dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpBuffer, 0, NULL))
|
||||
sError = "알 수 없는 오류입니다.";
|
||||
else
|
||||
sError = (LPCTSTR)lpBuffer;
|
||||
|
||||
LocalFree(lpBuffer);
|
||||
|
||||
return sError;
|
||||
}
|
||||
|
||||
bool CreateDirectory(CString sDirectory)
|
||||
{
|
||||
CString sPath = "";
|
||||
|
||||
int iToken = 0;
|
||||
CString sText = sDirectory.Tokenize("\\", iToken);
|
||||
while (sText != "") {
|
||||
sPath += sText + "\\";
|
||||
|
||||
if (sPath.GetLength() > 3 && !CreateDirectory(sPath, NULL)) {
|
||||
DWORD dwError = GetLastError();
|
||||
|
||||
if (dwError != 183) {
|
||||
SetLastError(dwError);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
sText = sDirectory.Tokenize("\\", iToken);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DeleteDirectory(CString sDirectory)
|
||||
{
|
||||
// no UI
|
||||
if (sDirectory.Right(1) != _T("\\"))
|
||||
sDirectory += _T("\\");
|
||||
|
||||
sDirectory += _T("*");
|
||||
|
||||
CFileFind finder;
|
||||
|
||||
BOOL bFound = finder.FindFile(sDirectory);
|
||||
while (bFound) {
|
||||
bFound = finder.FindNextFile();
|
||||
|
||||
if (finder.IsDots())
|
||||
continue;
|
||||
|
||||
if (finder.IsDirectory()) {
|
||||
if (!DeleteDirectory(finder.GetFilePath()))
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
if (!DeleteFile(finder.GetFilePath()))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
finder.Close();
|
||||
|
||||
sDirectory = sDirectory.Left(sDirectory.ReverseFind('\\'));
|
||||
RemoveDirectory(sDirectory);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
CString NumericFormat(__int64 nNumeric)
|
||||
{
|
||||
CString sNumeric;
|
||||
sNumeric.Format("%I64d", nNumeric);
|
||||
|
||||
int nStartPos = sNumeric.GetLength();
|
||||
for (int i = nStartPos, j = 0; i > 0; i--, j++) {
|
||||
if (i != nStartPos && (j % 3) == 0)
|
||||
sNumeric.Insert(i, ',');
|
||||
}
|
||||
|
||||
return sNumeric;
|
||||
}
|
||||
|
||||
CString NumericFormatWithPoint(long double nNumeric)
|
||||
{
|
||||
CString sNumeric;
|
||||
sNumeric.Format("%.2f", nNumeric);
|
||||
|
||||
int nStartPos = sNumeric.Find('.');
|
||||
for (int i = nStartPos, j = 0; i > 0; i--, j++) {
|
||||
if (i != nStartPos && (j % 3) == 0)
|
||||
sNumeric.Insert(i, ',');
|
||||
}
|
||||
|
||||
return sNumeric;
|
||||
}
|
||||
|
||||
CString BYTE2KMBYTE(__int64 nBytes, int nFlag, BOOL bShowDecimalPoint)
|
||||
{
|
||||
CString sValue;
|
||||
|
||||
char* szUnit[] = {"Bytes", "KB", "MB", "GB", "TB", "PB"};
|
||||
|
||||
if (nFlag == 0) {
|
||||
for (nFlag = 5; nFlag > 0; nFlag--)
|
||||
if (((UINT64)nBytes >> (nFlag * 10)) >= 1)
|
||||
break;
|
||||
}
|
||||
|
||||
double nPow = pow(1024.0, (double)nFlag);
|
||||
if (bShowDecimalPoint && nFlag > 0)
|
||||
sValue = NumericFormatWithPoint((long double)nBytes / nPow) + szUnit[nFlag];
|
||||
else
|
||||
sValue = NumericFormat((__int64)ceil((long double)nBytes / nPow)) + szUnit[nFlag];
|
||||
|
||||
return sValue;
|
||||
}
|
||||
|
||||
CString BYTE2KMBIT(__int64 nBytes, int nFlag, BOOL bShowDecimalPoint)
|
||||
{
|
||||
CString sValue;
|
||||
|
||||
char* szUnit[] = {"", "K", "M", "G", "T", "P"};
|
||||
|
||||
if (nFlag == 0) {
|
||||
for (nFlag = 5; nFlag > 0; nFlag--)
|
||||
if (((UINT64)nBytes >> (nFlag * 10)) >= 1)
|
||||
break;
|
||||
}
|
||||
|
||||
double nPow = pow(1024.0, (double)nFlag);
|
||||
if (bShowDecimalPoint && nFlag > 0)
|
||||
sValue = NumericFormatWithPoint((long double)nBytes / nPow) + szUnit[nFlag];
|
||||
else
|
||||
sValue = NumericFormat((__int64)ceil((long double)nBytes / nPow)) + szUnit[nFlag];
|
||||
|
||||
return sValue;
|
||||
}
|
||||
|
||||
bool ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead)
|
||||
{
|
||||
DWORD dwRead;
|
||||
while (nNumberOfBytesToRead > 0) {
|
||||
if (!ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, &dwRead, NULL))
|
||||
return false;
|
||||
|
||||
nNumberOfBytesToRead -= dwRead;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ShutDownSystem(UINT uFlags)
|
||||
{
|
||||
bool bRet = false;
|
||||
|
||||
if (uFlags == EWX_LOGOFF) {
|
||||
bRet = ExitWindowsEx(uFlags, 0) ? true : false;
|
||||
}
|
||||
else {
|
||||
UINT uVersion = GetVersion();
|
||||
|
||||
if (uVersion < 0x80000000) { // If OS is like WinNT
|
||||
HANDLE hToken;
|
||||
TOKEN_PRIVILEGES tp;
|
||||
|
||||
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
|
||||
return false;
|
||||
|
||||
if (!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tp.Privileges[0].Luid))
|
||||
return false;
|
||||
|
||||
tp.PrivilegeCount = 1;
|
||||
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
|
||||
|
||||
if (!AdjustTokenPrivileges(hToken, FALSE, &tp, 0, (PTOKEN_PRIVILEGES)NULL, 0))
|
||||
return false;
|
||||
|
||||
if (!InitiateSystemShutdown(NULL, NULL, 0, TRUE, (uFlags & EWX_REBOOT)))
|
||||
return false;
|
||||
|
||||
bRet = true;
|
||||
}
|
||||
else {
|
||||
bRet = ExitWindowsEx(uFlags, 0) ? true : false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return bRet;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
// ConsoleTransfer.h : PROJECT_NAME 응용 프로그램에 대한 주 헤더 파일입니다.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __AFXWIN_H__
|
||||
#error PCH에서 이 파일을 포함하기 전에 'stdafx.h'를 포함하십시오.
|
||||
#endif
|
||||
|
||||
#include "resource.h" // 주 기호
|
||||
#include "TransferDlg.h"
|
||||
|
||||
// CConsoleTransferApp:
|
||||
// 이 클래스의 구현에 대해서는 ConsoleTransfer.cpp을 참조하십시오.
|
||||
//
|
||||
|
||||
class CConsoleTransferApp : public CWinApp
|
||||
{
|
||||
public:
|
||||
CConsoleTransferApp();
|
||||
~CConsoleTransferApp();
|
||||
|
||||
protected:
|
||||
bool IsValidCommand();
|
||||
bool IsExistsSameProcess();
|
||||
|
||||
public:
|
||||
class CImpIDispatch* m_pimpldisp;
|
||||
|
||||
// 재정의
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
void NoticeTransComplete(CString targetPath);
|
||||
void NoticeLastFileTransComplete();
|
||||
|
||||
// 구현
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
};
|
||||
|
||||
extern CConsoleTransferApp theApp;
|
||||
@@ -0,0 +1,399 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// 한국어 resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
|
||||
#pragma code_page(949)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_OLE_RESOURCES\r\n"
|
||||
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
|
||||
"\r\n"
|
||||
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"
|
||||
"LANGUAGE 18, 1\r\n"
|
||||
"#pragma code_page(949)\r\n"
|
||||
"#include ""res\\ConsoleTransfer.rc2"" // Microsoft Visual C++에서 편집하지 않은 리소스입니다.\r\n"
|
||||
"#include ""afxres.rc"" // 표준 구성 요소입니다.\r\n"
|
||||
"#endif\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// RT_MANIFEST
|
||||
//
|
||||
|
||||
1 RT_MANIFEST "res\\ConsoleTransfer.manifest"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
#if defined(APSTUDIO_INVOKED) || !defined(_OPENDISK)
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 2,0,1,5
|
||||
PRODUCTVERSION 2,0,1,5
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "041203b5"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "KT & Netomi Corporation."
|
||||
VALUE "FileDescription", "System Hosting SP-Console File Transfer"
|
||||
VALUE "FileVersion", "2.0.1.5"
|
||||
VALUE "InternalName", "ConsoleTransfer.exe"
|
||||
VALUE "LegalCopyright", "KT & Netomi Corporation. All rights reserved."
|
||||
VALUE "OriginalFilename", "SPCTran.exe"
|
||||
VALUE "ProductName", "System Hosting"
|
||||
VALUE "ProductVersion", "2.0.1.5"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x412, 949
|
||||
END
|
||||
END
|
||||
#endif
|
||||
|
||||
#if defined(APSTUDIO_INVOKED) || defined(_OPENDISK)
|
||||
#if defined(APSTUDIO_INVOKED)
|
||||
VS_VERSION_INFO$(_OPENDISK) VERSIONINFO
|
||||
#else
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
#endif
|
||||
FILEVERSION 1,0,0,0
|
||||
PRODUCTVERSION 1,0,0,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "041203b5"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "KT & Netomi Corporation."
|
||||
VALUE "FileDescription", "System Hosting Opendisk Console File Transfer"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
VALUE "InternalName", "ConsoleTransfer.exe"
|
||||
VALUE "LegalCopyright", "KT & Netomi Corporation. All rights reserved."
|
||||
VALUE "OriginalFilename", "SPCTran.exe"
|
||||
VALUE "ProductName", "System Hosting"
|
||||
VALUE "ProductVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x412, 949
|
||||
END
|
||||
END
|
||||
#endif
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_ENTER_SOMETHING DIALOGEX 0, 0, 186, 68
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
|
||||
WS_SYSMENU
|
||||
CAPTION "Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
EDITTEXT IDC_EDIT,7,28,172,12,ES_AUTOHSCROLL
|
||||
DEFPUSHBUTTON "확인",IDOK,73,47,50,14
|
||||
PUSHBUTTON "취소",IDCANCEL,129,47,50,14
|
||||
LTEXT "Static",IDC_TEXT,7,7,172,17
|
||||
END
|
||||
|
||||
IDD_FILE_EXISTS DIALOGEX 0, 0, 322, 126
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
|
||||
WS_SYSMENU
|
||||
CAPTION "전송정책 설정"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "덮어쓰기",IDC_FILEEXISTS_ACTION1,"Button",
|
||||
BS_AUTORADIOBUTTON | WS_GROUP,249,18,48,10
|
||||
CONTROL "이름바꾸기",IDC_FILEEXISTS_ACTION3,"Button",
|
||||
BS_AUTORADIOBUTTON,249,30,53,10
|
||||
CONTROL "이어받기",IDC_FILEEXISTS_ACTION2,"Button",
|
||||
BS_AUTORADIOBUTTON,249,43,60,10
|
||||
CONTROL "건너뛰기",IDC_FILEEXISTS_ACTION4,"Button",
|
||||
BS_AUTORADIOBUTTON,249,55,48,10
|
||||
CONTROL "업데이트",IDC_FILEEXISTS_ACTION5,"Button",
|
||||
BS_AUTORADIOBUTTON,249,67,48,10
|
||||
CONTROL "파일이 이미 존재할 때 항상적용",IDC_FILEEXISTS_ALWAYS,
|
||||
"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,242,
|
||||
82,73,21
|
||||
DEFPUSHBUTTON "확인",IDOK,265,104,50,14
|
||||
LTEXT "기존 파일을",IDC_STATIC,7,7,43,8
|
||||
LTEXT "",IDC_FILEEXISTS_FILE1,7,16,235,8,SS_PATHELLIPSIS
|
||||
ICON "",IDC_FILEEXISTS_ICON1,21,29,21,20
|
||||
LTEXT "%d Bytes",IDC_FILEEXISTS_SIZE1,50,28,100,8
|
||||
LTEXT "",IDC_FILEEXISTS_DATE1,50,40,100,8
|
||||
LTEXT "이 파일로 바꾸시겠습니까?",IDC_STATIC,7,55,96,8
|
||||
LTEXT "",IDC_FILEEXISTS_FILE2,7,65,234,8,SS_PATHELLIPSIS
|
||||
ICON "",IDC_FILEEXISTS_ICON2,21,78,21,20
|
||||
LTEXT "%d Bytes",IDC_FILEEXISTS_SIZE2,50,77,100,8
|
||||
LTEXT "",IDC_FILEEXISTS_DATE2,49,89,100,8
|
||||
GROUPBOX "선택하세요",IDC_STATIC,242,7,73,74
|
||||
END
|
||||
|
||||
IDD_TRANSFER DIALOGEX 0, 0, 317, 222
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP |
|
||||
WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "",IDC_TAB,"SysTabControl32",TCS_FIXEDWIDTH |
|
||||
TCS_FOCUSNEVER,0,0,72,13,WS_EX_ACCEPTFILES
|
||||
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT |
|
||||
LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_ALIGNLEFT |
|
||||
LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,4,29,305,64
|
||||
PUSHBUTTON "시작(&S)",ID_START,150,205,50,14
|
||||
PUSHBUTTON "일시정지(&P)",ID_PAUSE,207,205,50,14
|
||||
PUSHBUTTON "닫기(&X)",ID_CLOSE,264,205,50,14
|
||||
GROUPBOX "현재",IDC_GRP_NOW,4,111,305,38
|
||||
CONTROL "",IDC_PRS_NOW,"msctls_progress32",WS_BORDER,8,131,297,
|
||||
14
|
||||
GROUPBOX "전체",IDC_GRP_TOTAL,4,155,305,38
|
||||
LTEXT "파일명 :",IDC_STC_SAVEFILE_TITLE,102,121,30,8,
|
||||
SS_CENTERIMAGE,WS_EX_TRANSPARENT
|
||||
LTEXT "남은시간 :",IDC_STC_LTIME_TITLE,111,165,38,8,
|
||||
SS_CENTERIMAGE,WS_EX_TRANSPARENT
|
||||
LTEXT "파일개수 :",IDC_STC_FILE_COUNT_TITLE,216,165,38,8,NOT
|
||||
WS_GROUP,WS_EX_TRANSPARENT
|
||||
CONTROL "",IDC_PRS_TOTAL,"msctls_progress32",WS_BORDER,8,175,297,
|
||||
14
|
||||
LTEXT "경과시간 :",IDC_STC_ETIME_TITLE,8,165,38,8,
|
||||
SS_CENTERIMAGE,WS_EX_TRANSPARENT
|
||||
LTEXT "",IDC_STC_SAVEFILE,134,121,171,8,SS_CENTERIMAGE |
|
||||
SS_WORDELLIPSIS
|
||||
LTEXT "",IDC_STC_ETIME,48,165,51,8,SS_CENTERIMAGE
|
||||
LTEXT "",IDC_STC_LTIME,151,165,52,8,SS_CENTERIMAGE
|
||||
RTEXT "",IDC_STC_FILE_COUNT,256,165,48,8,NOT WS_GROUP
|
||||
LTEXT "",IDC_STC_SPEED,48,121,43,8,SS_CENTERIMAGE
|
||||
LTEXT "Static",IDC_STC_STATUS,4,93,305,12,SS_CENTERIMAGE |
|
||||
SS_WORDELLIPSIS,WS_EX_STATICEDGE
|
||||
LTEXT "전송속도 : ",IDC_STC_SPEED_TITLE,8,121,40,8,
|
||||
SS_CENTERIMAGE,WS_EX_TRANSPARENT
|
||||
LTEXT "폴더 삭제시 하위 폴더, 파일도 삭제됩니다.",
|
||||
IDC_STC_DELTEXT,47,17,154,8
|
||||
CONTROL "",IDC_WB_ADVERT,"{8856F961-340A-11D0-A96B-00C04FD705A2}",
|
||||
WS_TABSTOP,0,205,26,17
|
||||
PUSHBUTTON "파일제거",IDC_BTN_DELFILE,4,15,40,12
|
||||
END
|
||||
|
||||
IDD_NOTICETRANS DIALOG 0, 0, 186, 95
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "대화 상자"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "확인",IDOK,129,7,50,16
|
||||
PUSHBUTTON "취소",IDCANCEL,129,26,50,16
|
||||
END
|
||||
|
||||
IDD_SEND_TRANSINFO DIALOGEX 0, 0, 191, 67
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_SYSMENU |
|
||||
WS_THICKFRAME
|
||||
FONT 9, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
PUSHBUTTON "취소",IDCANCEL,71,44,50,16
|
||||
CONTROL "",IDC_PROGRESS1,"msctls_progress32",WS_BORDER,14,28,161,
|
||||
12
|
||||
LTEXT "배포 요청 중입니다..",IDC_NOTICE_MSGBOX,18,7,153,18
|
||||
END
|
||||
|
||||
IDD_RESULT_DLG DIALOGEX 0, 0, 295, 153
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "전송결과"
|
||||
FONT 8, "Microsoft Sans Serif", 400, 0, 0x0
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "확인",IDOK,238,130,50,16
|
||||
LTEXT "총 10개 업로드, 성공 : 5개, 실패 : 10개",
|
||||
IDC_RESULT_STATIC,7,7,281,8
|
||||
EDITTEXT IDC_FAILED_FILES_EDIT,7,36,281,86,ES_MULTILINE |
|
||||
ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN |
|
||||
WS_VSCROLL | WS_HSCROLL
|
||||
LTEXT "실패한 파일 목록",IDC_STATIC,7,22,61,8
|
||||
CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,69,26,219,1
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
IDD_ENTER_SOMETHING, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 179
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 61
|
||||
END
|
||||
|
||||
IDD_FILE_EXISTS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 315
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 119
|
||||
END
|
||||
|
||||
IDD_NOTICETRANS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 179
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 88
|
||||
END
|
||||
|
||||
IDD_SEND_TRANSINFO, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 184
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 60
|
||||
END
|
||||
|
||||
IDD_RESULT_DLG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 288
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 146
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog Info
|
||||
//
|
||||
|
||||
IDD_TRANSFER DLGINIT
|
||||
BEGIN
|
||||
IDC_WB_ADVERT, 0x376, 160, 0
|
||||
0x0000, 0x0000, 0x004c, 0x0000, 0x0408, 0x0000, 0x02e5, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x004c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,
|
||||
0x0000, 0xd0e0, 0x0057, 0x3573, 0x11cf, 0x69ae, 0x0008, 0x2e2b, 0x6212,
|
||||
0x0008, 0x0000, 0x0000, 0x0000, 0x004c, 0x0000, 0x1401, 0x0002, 0x0000,
|
||||
0x0000, 0x00c0, 0x0000, 0x0000, 0x4600, 0x0080, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDR_MAINFRAME ICON "res\\ConsoleTransfer.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_ERRORMSG_ENTERSOMETHING "파일명을 넣으십시오."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INPUTDLGTITLE_RENAME "새로운 파일명 입력"
|
||||
IDS_INPUTDLGTEXT_RENAME "파일이 저장될 새로운 이름을 아래에 넣으십시오."
|
||||
END
|
||||
|
||||
#endif // 한국어 resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#define _AFX_NO_SPLITTER_RESOURCES
|
||||
#define _AFX_NO_OLE_RESOURCES
|
||||
#define _AFX_NO_TRACKER_RESOURCES
|
||||
#define _AFX_NO_PROPERTY_RESOURCES
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
|
||||
LANGUAGE 18, 1
|
||||
#pragma code_page(949)
|
||||
#include "res\ConsoleTransfer.rc2" // Microsoft Visual C++에서 편집하지 않은 리소스입니다.
|
||||
#include "afxres.rc" // 표준 구성 요소입니다.
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleTransfer", "ConsoleTransfer.vcproj", "{8CF33995-4DDD-492E-9533-F73F82AEC607}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommLib", "..\CommLib\CommLib.vcproj", "{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug.ActiveCfg = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug.Build.0 = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release.ActiveCfg = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Binary file not shown.
@@ -0,0 +1,425 @@
|
||||
<?xml version="1.0" encoding="ks_c_5601-1987"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="ConsoleTransfer"
|
||||
ProjectGUID="{8CF33995-4DDD-492E-9533-F73F82AEC607}"
|
||||
Keyword="MFCProj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="Debug"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../ConsoleApp(DN);../Common;"../Common/neon-0.25.4""
|
||||
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
UsePrecompiledHeader="3"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="4"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="Psapi.lib ../_lib/Debug/SPCComm.lib"
|
||||
OutputFile="../_Bin/SPConsole/Debug(DN)/SPCTran.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\ConsoleTransfer.DLL\Debug"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="FALSE"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1042"
|
||||
AdditionalIncludeDirectories="$(IntDir)"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="Release"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../ConsoleApp(DN);../Common;"../Common/neon-0.25.4""
|
||||
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
|
||||
MinimalRebuild="FALSE"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
UsePrecompiledHeader="3"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="Psapi.lib ../_lib/Release/SPCComm.lib"
|
||||
OutputFile="../_Bin/SPConsole/Release(DN)/SPCTran.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\ConsoleTransfer.DLL\Release"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="FALSE"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1042"
|
||||
AdditionalIncludeDirectories="$(IntDir)"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug_Opendisk|Win32"
|
||||
OutputDirectory="$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../ConsoleApp;../Common"
|
||||
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;_OPENDISK"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
UsePrecompiledHeader="3"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="4"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="Psapi.lib ../_lib/Debug/SPCComm.lib"
|
||||
OutputFile="../_Bin/SPConsole/Debug_OD/SPCTran.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\ConsoleTransfer.DLL\Debug"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="FALSE"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1042"
|
||||
AdditionalIncludeDirectories="$(IntDir)"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release_Opendisk|Win32"
|
||||
OutputDirectory="$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../ConsoleApp;../Common"
|
||||
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG;_OPENDISK"
|
||||
MinimalRebuild="FALSE"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
UsePrecompiledHeader="3"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="Psapi.lib ../_lib/Release/SPCComm.lib"
|
||||
OutputFile="../_Bin/SPConsole/Release_OD/SPCTran.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\ConsoleTransfer.DLL\Release"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="FALSE"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1042"
|
||||
AdditionalIncludeDirectories="$(IntDir)"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="소스 파일"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath=".\ConsoleTransfer.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\CustomControlSite.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\EnterSomethingDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\FileExistsDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\ImpIDispatch.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\MarkupSTL.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\MD5.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\MFC64bitFix.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\NoticeTrans.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\ConsoleApp(DN)\Options.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\RegUtil.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ResultDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\ConsoleApp(DN)\SocketUtil.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\stdafx.cpp">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug_Opendisk|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release_Opendisk|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\TextProgressCtrl.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TransferDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TranTabCtrl.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\WebBrowser2.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="리소스 파일"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
|
||||
<File
|
||||
RelativePath=".\res\ConsoleTransfer.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConsoleTransfer.rc">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\ConsoleTransfer.rc2">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Down.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Empty.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Up.ico">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="헤더 파일"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
<File
|
||||
RelativePath=".\ConsoleTransfer.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\CustomControlSite.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\EnterSomethingDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\FileExistsDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\ImpIDispatch.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\MarkupSTL.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\MD5.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\MFC64bitFix.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\NoticeStruct.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\NoticeTrans.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\ConsoleApp(DN)\Options.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\RegUtil.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Resource.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ResultDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\ConsoleApp(DN)\SocketUtil.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\stdafx.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\TextProgressCtrl.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TransferDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\TranTabCtrl.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\WebBrowser2.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath=".\res\ConsoleTransfer.manifest">
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
<Global
|
||||
Name="RESOURCE_FILE"
|
||||
Value="ConsoleTransfer.rc"/>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -0,0 +1,204 @@
|
||||
// CustomControlSite.cpp (IDispatch for Extending Dynamic HTML Object Model)
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// NOTE: THis line is a hardcoded reference to an MFC header file
|
||||
// this path may need to be changed to refer to the location of VC5 install
|
||||
// for successful compilation.
|
||||
#undef AFX_DATA
|
||||
#define AFX_DATA AFX_DATA_IMPORT
|
||||
#undef AFX_DATA
|
||||
#define AFX_DATA AFX_DATA_EXPORT
|
||||
|
||||
#include "ConsoleTransfer.h"
|
||||
#include "CustomControlSite.h"
|
||||
|
||||
BEGIN_INTERFACE_MAP(CCustomControlSite, COleControlSite)
|
||||
INTERFACE_PART(CCustomControlSite, IID_IDocHostUIHandler, DocHostUIHandler)
|
||||
END_INTERFACE_MAP()
|
||||
|
||||
ULONG FAR EXPORT CCustomControlSite::XDocHostUIHandler::AddRef()
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return pThis->ExternalAddRef();
|
||||
}
|
||||
|
||||
ULONG FAR EXPORT CCustomControlSite::XDocHostUIHandler::Release()
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return pThis->ExternalRelease();
|
||||
}
|
||||
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::QueryInterface(REFIID riid, void **ppvObj)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
HRESULT hr = (HRESULT)pThis->ExternalQueryInterface(&riid, ppvObj);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::GetHostInfo
|
||||
// *
|
||||
// * Purpose: Called at initialization
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::GetHostInfo( DOCHOSTUIINFO* pInfo )
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
pInfo->dwFlags = DOCHOSTUIFLAG_NO3DBORDER | DOCHOSTUIFLAG_SCROLL_NO;
|
||||
pInfo->dwDoubleClick = DOCHOSTUIDBLCLK_DEFAULT;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::ShowUI
|
||||
// *
|
||||
// * Purpose: Called when MSHTML.DLL shows its UI
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::ShowUI(
|
||||
DWORD dwID,
|
||||
IOleInPlaceActiveObject * /*pActiveObject*/,
|
||||
IOleCommandTarget * pCommandTarget,
|
||||
IOleInPlaceFrame * /*pFrame*/,
|
||||
IOleInPlaceUIWindow * /*pDoc*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
// We've already got our own UI in place so just return S_OK
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::HideUI
|
||||
// *
|
||||
// * Purpose: Called when MSHTML.DLL hides its UI
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::HideUI(void)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::UpdateUI
|
||||
// *
|
||||
// * Purpose: Called when MSHTML.DLL updates its UI
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::UpdateUI(void)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
// MFC is pretty good about updating it's UI in it's Idle loop so I don't do anything here
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::EnableModeless
|
||||
// *
|
||||
// * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::EnableModeless
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::EnableModeless(BOOL /*fEnable*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::OnDocWindowActivate
|
||||
// *
|
||||
// * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::OnDocWindowActivate
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::OnDocWindowActivate(BOOL /*fActivate*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::OnFrameWindowActivate
|
||||
// *
|
||||
// * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::OnFrameWindowActivate
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::OnFrameWindowActivate(BOOL /*fActivate*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::ResizeBorder
|
||||
// *
|
||||
// * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::ResizeBorder
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::ResizeBorder(
|
||||
LPCRECT /*prcBorder*/,
|
||||
IOleInPlaceUIWindow* /*pUIWindow*/,
|
||||
BOOL /*fRameWindow*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::ShowContextMenu
|
||||
// *
|
||||
// * Purpose: Called when MSHTML.DLL would normally display its context menu
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::ShowContextMenu(
|
||||
DWORD /*dwID*/,
|
||||
POINT* /*pptPosition*/,
|
||||
IUnknown* /*pCommandTarget*/,
|
||||
IDispatch* /*pDispatchObjectHit*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return S_OK; // We've shown our own context menu. MSHTML.DLL will no longer try to show its own.
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::TranslateAccelerator
|
||||
// *
|
||||
// * Purpose: Called from MSHTML.DLL's TranslateAccelerator routines
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::TranslateAccelerator(
|
||||
LPMSG lpMsg,
|
||||
/* [in] */ const GUID __RPC_FAR *pguidCmdGroup,
|
||||
/* [in] */ DWORD nCmdID)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::GetOptionKeyPath
|
||||
// *
|
||||
// * Purpose: Called by MSHTML.DLL to find where the host wishes to store
|
||||
// * its options in the registry
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::GetOptionKeyPath(BSTR* pbstrKey, DWORD)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CCustomControlSite::XDocHostUIHandler::GetDropTarget(
|
||||
/* [in] */ IDropTarget __RPC_FAR *pDropTarget,
|
||||
/* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CCustomControlSite::XDocHostUIHandler::GetExternal(
|
||||
/* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch)
|
||||
{
|
||||
// return the IDispatch we have for extending the object Model
|
||||
IDispatch* pDisp = (IDispatch*)theApp.m_pimpldisp;
|
||||
pDisp->AddRef();
|
||||
*ppDispatch = pDisp;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CCustomControlSite::XDocHostUIHandler::TranslateUrl(
|
||||
/* [in] */ DWORD dwTranslate,
|
||||
/* [in] */ OLECHAR __RPC_FAR *pchURLIn,
|
||||
/* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CCustomControlSite::XDocHostUIHandler::FilterDataObject(
|
||||
/* [in] */ IDataObject __RPC_FAR *pDO,
|
||||
/* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDORet)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
// CustomControlSite.h
|
||||
|
||||
#ifndef __CUSTOMSITEH__
|
||||
#define __CUSTOMSITEH__
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ImpIDispatch.h"
|
||||
#include <afxocc.h>
|
||||
#include <mshtmhst.h>
|
||||
|
||||
class CCustomControlSite:public COleControlSite
|
||||
{
|
||||
public:
|
||||
CCustomControlSite(COleControlContainer *pCnt):COleControlSite(pCnt){}
|
||||
|
||||
protected:
|
||||
DECLARE_INTERFACE_MAP();
|
||||
|
||||
BEGIN_INTERFACE_PART(DocHostUIHandler, IDocHostUIHandler)
|
||||
STDMETHOD(ShowContextMenu)(
|
||||
/* [in] */ DWORD dwID,
|
||||
/* [in] */ POINT __RPC_FAR *ppt,
|
||||
/* [in] */ IUnknown __RPC_FAR *pcmdtReserved,
|
||||
/* [in] */ IDispatch __RPC_FAR *pdispReserved);
|
||||
STDMETHOD(GetHostInfo)(
|
||||
/* [out][in] */ DOCHOSTUIINFO __RPC_FAR *pInfo);
|
||||
STDMETHOD(ShowUI)(
|
||||
/* [in] */ DWORD dwID,
|
||||
/* [in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
|
||||
/* [in] */ IOleCommandTarget __RPC_FAR *pCommandTarget,
|
||||
/* [in] */ IOleInPlaceFrame __RPC_FAR *pFrame,
|
||||
/* [in] */ IOleInPlaceUIWindow __RPC_FAR *pDoc);
|
||||
STDMETHOD(HideUI)(void);
|
||||
STDMETHOD(UpdateUI)(void);
|
||||
STDMETHOD(EnableModeless)(/* [in] */ BOOL fEnable);
|
||||
STDMETHOD(OnDocWindowActivate)(/* [in] */ BOOL fEnable);
|
||||
STDMETHOD(OnFrameWindowActivate)(/* [in] */ BOOL fEnable);
|
||||
STDMETHOD(ResizeBorder)(
|
||||
/* [in] */ LPCRECT prcBorder,
|
||||
/* [in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
|
||||
/* [in] */ BOOL fRameWindow);
|
||||
STDMETHOD(TranslateAccelerator)(
|
||||
/* [in] */ LPMSG lpMsg,
|
||||
/* [in] */ const GUID __RPC_FAR *pguidCmdGroup,
|
||||
/* [in] */ DWORD nCmdID);
|
||||
STDMETHOD(GetOptionKeyPath)(
|
||||
/* [out] */ LPOLESTR __RPC_FAR *pchKey,
|
||||
/* [in] */ DWORD dw);
|
||||
STDMETHOD(GetDropTarget)(
|
||||
/* [in] */ IDropTarget __RPC_FAR *pDropTarget,
|
||||
/* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget);
|
||||
STDMETHOD(GetExternal)(
|
||||
/* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch);
|
||||
STDMETHOD(TranslateUrl)(
|
||||
/* [in] */ DWORD dwTranslate,
|
||||
/* [in] */ OLECHAR __RPC_FAR *pchURLIn,
|
||||
/* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut);
|
||||
STDMETHOD(FilterDataObject)(
|
||||
/* [in] */ IDataObject __RPC_FAR *pDO,
|
||||
/* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDORet);
|
||||
END_INTERFACE_PART(DocHostUIHandler)
|
||||
};
|
||||
|
||||
class CCustomOccManager :public COccManager
|
||||
{
|
||||
public:
|
||||
CCustomOccManager(){}
|
||||
COleControlSite* CreateSite(COleControlContainer* pCtrlCont)
|
||||
{
|
||||
CCustomControlSite *pSite = new CCustomControlSite(pCtrlCont);
|
||||
return pSite;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,102 @@
|
||||
// EnterSomething.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleTransfer.h"
|
||||
#include "EnterSomethingDlg.h"
|
||||
|
||||
|
||||
// CEnterSomethingDlgDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CEnterSomethingDlg, CDialog)
|
||||
/*
|
||||
CEnterSomethingDlg::CEnterSomethingDlg(CWnd* pParent /*=NULL*./)
|
||||
: CDialog(CEnterSomethingDlg::IDD, pParent)
|
||||
{
|
||||
}
|
||||
*/
|
||||
CEnterSomethingDlg::CEnterSomethingDlg(UINT nID, UINT nTextID, TCHAR password, CWnd* pParent)
|
||||
: CDialog(CEnterSomethingDlg::IDD, pParent)
|
||||
{
|
||||
m_String = _T("");
|
||||
|
||||
m_Title.LoadString(nID);
|
||||
m_Text.LoadString(nTextID);
|
||||
m_passChar = password;
|
||||
m_nPreselectMin=-1;
|
||||
m_nPreselectMax=-1;
|
||||
}
|
||||
|
||||
CEnterSomethingDlg::CEnterSomethingDlg(UINT nID, LPCSTR pText, TCHAR password, CWnd* pParent)
|
||||
: CDialog(CEnterSomethingDlg::IDD, pParent)
|
||||
{
|
||||
m_String = _T("");
|
||||
|
||||
m_Title.LoadString(nID);
|
||||
m_Text = pText;
|
||||
m_passChar = password;
|
||||
m_nPreselectMin=-1;
|
||||
m_nPreselectMax=-1;
|
||||
}
|
||||
|
||||
CEnterSomethingDlg::~CEnterSomethingDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CEnterSomethingDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_EDIT, m_EditCtrl);
|
||||
DDX_Control(pDX, IDOK, m_OkCtrl);
|
||||
DDX_Text(pDX, IDC_EDIT, m_String);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CEnterSomethingDlg, CDialog)
|
||||
ON_EN_CHANGE(IDC_EDIT, OnChangeEdit)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CEnterSomethingDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CEnterSomethingDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
SetWindowText(m_Title);
|
||||
|
||||
//Disable the OK button if the edit field is empty
|
||||
m_OkCtrl.EnableWindow(m_String!=""?TRUE:FALSE);
|
||||
|
||||
m_EditCtrl.SetPasswordChar(m_passChar);
|
||||
|
||||
GetDlgItem(IDC_TEXT)->SetWindowText(m_Text);
|
||||
if (m_nPreselectMin!=-1)
|
||||
{
|
||||
m_EditCtrl.SetSel(m_nPreselectMin,m_nPreselectMax);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
m_EditCtrl.SetFocus();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zur?kgeben
|
||||
}
|
||||
|
||||
void CEnterSomethingDlg::OnOK()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
|
||||
if (m_String == "") {
|
||||
AfxMessageBox("문자를 입력하십시오.", MB_ICONEXCLAMATION);
|
||||
}
|
||||
|
||||
CDialog::OnOK();
|
||||
}
|
||||
|
||||
void CEnterSomethingDlg::OnChangeEdit()
|
||||
{
|
||||
//Disable the OK button if the edit field is empty
|
||||
UpdateData(TRUE);
|
||||
m_OkCtrl.EnableWindow(m_String!=""?TRUE:FALSE);
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CEnterSomething 대화 상자입니다.
|
||||
|
||||
class CEnterSomethingDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CEnterSomethingDlg)
|
||||
|
||||
public:
|
||||
// CEnterSomething(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
CEnterSomethingDlg(UINT nID, UINT nTextID, TCHAR password = NULL, CWnd* pParent = NULL);
|
||||
CEnterSomethingDlg(UINT nID, LPCSTR pText, TCHAR password = NULL, CWnd* pParent = NULL);
|
||||
virtual ~CEnterSomethingDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_ENTER_SOMETHING };
|
||||
CEdit m_EditCtrl;
|
||||
CButton m_OkCtrl;
|
||||
CString m_String;
|
||||
|
||||
public:
|
||||
int m_nPreselectMax;
|
||||
int m_nPreselectMin;
|
||||
|
||||
protected:
|
||||
CString m_Title;
|
||||
CString m_Text;
|
||||
TCHAR m_passChar;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
protected:
|
||||
virtual BOOL OnInitDialog();
|
||||
virtual void OnOK();
|
||||
afx_msg void OnChangeEdit();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,113 @@
|
||||
// FileExistsDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleTransfer.h"
|
||||
#include "FileExistsDlg.h"
|
||||
|
||||
|
||||
// CFileExistsDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CFileExistsDlg, CDialog)
|
||||
CFileExistsDlg::CFileExistsDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CFileExistsDlg::IDD, pParent)
|
||||
, m_sFile1(_T(""))
|
||||
, m_sSize1(_T(""))
|
||||
, m_sTime1(_T(""))
|
||||
, m_sFile2(_T(""))
|
||||
, m_sSize2(_T(""))
|
||||
, m_sTime2(_T(""))
|
||||
, m_nSelectedAction(0)
|
||||
, m_bAlways(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
CFileExistsDlg::~CFileExistsDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CFileExistsDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_FILEEXISTS_ICON1, m_stcIcon1);
|
||||
DDX_Control(pDX, IDC_FILEEXISTS_ICON2, m_stcIcon2);
|
||||
DDX_Text(pDX, IDC_FILEEXISTS_FILE1, m_sFile1);
|
||||
DDX_Text(pDX, IDC_FILEEXISTS_SIZE1, m_sSize1);
|
||||
DDX_Text(pDX, IDC_FILEEXISTS_DATE1, m_sTime1);
|
||||
DDX_Text(pDX, IDC_FILEEXISTS_FILE2, m_sFile2);
|
||||
DDX_Text(pDX, IDC_FILEEXISTS_SIZE2, m_sSize2);
|
||||
DDX_Text(pDX, IDC_FILEEXISTS_DATE2, m_sTime2);
|
||||
DDX_Radio(pDX, IDC_FILEEXISTS_ACTION1, m_nSelectedAction);
|
||||
DDX_Check(pDX, IDC_FILEEXISTS_ALWAYS, m_bAlways);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CFileExistsDlg, CDialog)
|
||||
ON_WM_DESTROY()
|
||||
ON_WM_CLOSE()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CFileExistsDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CFileExistsDlg::OnInitDialog()
|
||||
{
|
||||
USES_CONVERSION;
|
||||
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
SHFILEINFO shfi;
|
||||
DWORD dwSHAttr1, dwSHAttr2;
|
||||
|
||||
dwSHAttr1 = m_sSize1 == "" ? FILE_ATTRIBUTE_DIRECTORY : FILE_ATTRIBUTE_NORMAL;
|
||||
if (!SHGetFileInfo(m_sFile1.Mid(m_sFile1.ReverseFind('.')), dwSHAttr1, &shfi, sizeof(shfi), SHGFI_USEFILEATTRIBUTES | SHGFI_ICON))
|
||||
shfi.iIcon = 1;
|
||||
m_stcIcon1.SetIcon(shfi.hIcon);
|
||||
|
||||
dwSHAttr2 = m_sSize2 == "" ? FILE_ATTRIBUTE_DIRECTORY : FILE_ATTRIBUTE_NORMAL;
|
||||
if (!SHGetFileInfo(m_sFile2.Mid(m_sFile2.ReverseFind('.')), dwSHAttr2, &shfi, sizeof(shfi), SHGFI_USEFILEATTRIBUTES | SHGFI_ICON))
|
||||
shfi.iIcon = 1;
|
||||
m_stcIcon2.SetIcon(shfi.hIcon);
|
||||
|
||||
if (m_bDownload)
|
||||
GetDlgItem(IDC_FILEEXISTS_ACTION2)->SetWindowText("이어받기");
|
||||
else {
|
||||
GetDlgItem(IDC_FILEEXISTS_ACTION2)->SetWindowText("이어올리기");
|
||||
// GetDlgItem(IDC_FILEEXISTS_ACTION2)->EnableWindow(FALSE);
|
||||
}
|
||||
|
||||
if (dwSHAttr1 == FILE_ATTRIBUTE_DIRECTORY || dwSHAttr2 == FILE_ATTRIBUTE_DIRECTORY)
|
||||
GetDlgItem(IDC_FILEEXISTS_ACTION2)->EnableWindow(FALSE);
|
||||
|
||||
if (!m_bDownload && dwSHAttr1 != dwSHAttr2) {
|
||||
GetDlgItem(IDC_FILEEXISTS_ACTION1)->EnableWindow(FALSE);
|
||||
m_nSelectedAction = 2;
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zur?kgeben
|
||||
}
|
||||
|
||||
void CFileExistsDlg::OnDestroy()
|
||||
{
|
||||
HICON hIcon;
|
||||
|
||||
hIcon = m_stcIcon1.GetIcon();
|
||||
if (hIcon)
|
||||
DestroyIcon(hIcon);
|
||||
|
||||
hIcon = m_stcIcon2.GetIcon();
|
||||
if (hIcon)
|
||||
DestroyIcon(hIcon);
|
||||
|
||||
CDialog::OnDestroy();
|
||||
}
|
||||
|
||||
void CFileExistsDlg::OnClose()
|
||||
{
|
||||
m_nSelectedAction = FILEEXISTS_SKIP;
|
||||
|
||||
CDialog::OnClose();
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CFileExistsDlg 대화 상자입니다.
|
||||
|
||||
class CFileExistsDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CFileExistsDlg)
|
||||
|
||||
public:
|
||||
CFileExistsDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CFileExistsDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_FILE_EXISTS };
|
||||
CStatic m_stcIcon1;
|
||||
CStatic m_stcIcon2;
|
||||
CString m_sFile1;
|
||||
CString m_sSize1;
|
||||
CString m_sTime1;
|
||||
CString m_sFile2;
|
||||
CString m_sSize2;
|
||||
CString m_sTime2;
|
||||
int m_nSelectedAction;
|
||||
BOOL m_bAlways;
|
||||
|
||||
public:
|
||||
BOOL m_bDownload;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnDestroy();
|
||||
afx_msg void OnClose();
|
||||
};
|
||||
|
||||
|
||||
#define FILEEXISTS_OVERWRITE 1
|
||||
#define FILEEXISTS_RESUME 2
|
||||
#define FILEEXISTS_RENAME 3
|
||||
#define FILEEXISTS_SKIP 4
|
||||
#define FILEEXISTS_UPDATE 5
|
||||
@@ -0,0 +1,194 @@
|
||||
#define OP_SEQ_REQ 0x1000
|
||||
#define OP_SEQ_RSP 0x1001
|
||||
#define MAX_SIZE_OF_URI 1024
|
||||
#define MAX_SIZE_OF_TARGET 128
|
||||
#define RSP_CODE_DIST_SUCCESS 1000
|
||||
#define RSP_CODE_AUTH_SUCCESS 1001
|
||||
#define RSP_CODE_SVR_BUSY 4200
|
||||
#define RSP_CODE_INTERNAL_ERROR 4001
|
||||
#define RSP_CODE_UNKNOWN_ERROR 4002
|
||||
#define RSP_CODE_OP_FAILED 4003
|
||||
#define RSP_CODE_AUTH_FAILED 4004
|
||||
|
||||
#define RSP_CODE_INVALID_PROTO 4051
|
||||
#define RSP_CODE_INVALID_OP_CODE 4052
|
||||
#define RSP_CODE_INVALID_ATTR_VALUE 4053
|
||||
#define MAX_SIZE_OF_UA 128
|
||||
#define MAX_SIZE_OF_UP 256
|
||||
#define MAX_SIZE_OF_SP_ID 64
|
||||
#define MAX_SIZE_OF_SP_PASSWD 256
|
||||
#define MAX_SIZE_OF_OP_DESC 128
|
||||
#define MAX_SIZE_OF_SP_ID 64
|
||||
#define MAX_SIZE_OF_SP_PASSWD 256
|
||||
#define OP_NUM_AUTH 10
|
||||
#define OP_NUM_DN 201
|
||||
#define OP_NUM_DDI 202
|
||||
#define OP_NUM_DNC 203
|
||||
#define OP_NUM_DA 204
|
||||
#define OP_DN_MODE_REQ 0x00a0
|
||||
#define RCTS_NOTICE_PORT 13110
|
||||
#define MAX_SIZE_OF_TID 64
|
||||
#define MAX_SIZE_OF_SP_TID 33
|
||||
#define MAX_SIZE_OF_PHONE 16
|
||||
#define MAX_SIZE_OF_MAIL 64
|
||||
#define MAX_SIZE_OF_NAME 64
|
||||
#define MAX_SIZE_FILE_NAME 1024
|
||||
|
||||
typedef struct _s_rc_auth_md5_req_body {
|
||||
char sp_id_str[MAX_SIZE_OF_SP_ID];
|
||||
char sp_passwd_str[MAX_SIZE_OF_SP_PASSWD];
|
||||
} rc_auth_md5_req_body_t;
|
||||
|
||||
//Request Header
|
||||
typedef struct _s_tsvc_req_header {
|
||||
unsigned short op_num_w;
|
||||
unsigned short op_seq_w;
|
||||
} tsvc_req_header_t;
|
||||
|
||||
//Request auth Body
|
||||
typedef struct _s_tsvc_auth_info {
|
||||
char ua_str[MAX_SIZE_OF_SP_ID];
|
||||
char up_str[MAX_SIZE_OF_SP_PASSWD];
|
||||
} tsvc_auth_info_t;
|
||||
|
||||
//Request Directory Dist Info body
|
||||
typedef struct _s_tsvc_ddi_req_body {
|
||||
|
||||
// unsigned short op_mode_w;
|
||||
char uri_str[MAX_SIZE_OF_URI];
|
||||
|
||||
} tsvc_ddi_req_body_t;
|
||||
|
||||
typedef struct _s_tsvc_dn_req_body {
|
||||
unsigned short op_mode_w;
|
||||
char tid_str[MAX_SIZE_OF_TID];
|
||||
char sp_tid_str[MAX_SIZE_OF_SP_TID];
|
||||
char uri_str[MAX_SIZE_OF_URI];
|
||||
char source_url[MAX_SIZE_OF_TARGET];
|
||||
char target_url[MAX_SIZE_OF_TARGET];
|
||||
char target_str[MAX_SIZE_OF_TARGET];
|
||||
long long file_size;
|
||||
long long offset;
|
||||
} tsvc_dn_req_body_t;
|
||||
|
||||
//Response Header
|
||||
typedef struct _s_tsvc_rsp_header {
|
||||
unsigned short op_num_w;
|
||||
unsigned short op_seq_w;
|
||||
unsigned short rsp_cnt_w;
|
||||
unsigned int op_result_code_w;
|
||||
char op_result_desc_str[MAX_SIZE_OF_OP_DESC];
|
||||
} tsvc_rsp_header_t;
|
||||
|
||||
//Response Directory Dist Info Body
|
||||
typedef struct _s_tsvc_ddi_rsp_body {
|
||||
|
||||
int file_cnt;
|
||||
int dist_complete;
|
||||
int dist_now;
|
||||
int dist_fail;
|
||||
|
||||
} tsvc_ddi_rsp_body_t;
|
||||
|
||||
//Trans Complete
|
||||
typedef struct _s_tsvc_ddc_req_body {
|
||||
|
||||
char sp_tid_str[MAX_SIZE_OF_SP_TID];
|
||||
|
||||
char name_01[MAX_SIZE_OF_NAME];
|
||||
char phone_01[MAX_SIZE_OF_PHONE];
|
||||
char mail_01[MAX_SIZE_OF_MAIL];
|
||||
|
||||
char name_02[MAX_SIZE_OF_NAME];
|
||||
char phone_02[MAX_SIZE_OF_PHONE];
|
||||
char mail_02[MAX_SIZE_OF_MAIL];
|
||||
|
||||
char name_03[MAX_SIZE_OF_NAME];
|
||||
char phone_03[MAX_SIZE_OF_PHONE];
|
||||
char mail_03[MAX_SIZE_OF_MAIL];
|
||||
|
||||
} tsvc_ddc_req_body_t;
|
||||
|
||||
|
||||
//dist req again
|
||||
typedef struct _s_tsvc_da_req {
|
||||
|
||||
char sp_tid_str[MAX_SIZE_OF_SP_TID];
|
||||
unsigned int file_cnt;
|
||||
} tsvc_da_req_t;
|
||||
|
||||
|
||||
typedef struct _s_tsvc_da_contents {
|
||||
|
||||
char file_name[MAX_SIZE_FILE_NAME];
|
||||
bool bFolder;
|
||||
|
||||
} tsvc_da_contents_t;
|
||||
|
||||
|
||||
/*
|
||||
Sample
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
Socket socket_obj;
|
||||
tsvc_req_header_t tsvc_req_header;
|
||||
rc_auth_md5_req_body_t auth_req_body;
|
||||
tsvc_dn_req_body_t dn_req_body;
|
||||
tsvc_rsp_header_t *tsvc_rsp_header_ptr;
|
||||
char recv_buffer[8196];
|
||||
|
||||
if(argc < 3) {
|
||||
::fprintf(stderr, "%s ip_addr port\n", argv[0]);
|
||||
::exit(1);
|
||||
}
|
||||
|
||||
fprintf(stderr, "argv[1] = %s, argv[2] = %s\n", argv[1], argv[2]);
|
||||
Address serv_addr(argv[1], ::atoi(argv[2]));
|
||||
|
||||
try {
|
||||
tsvc_req_header.op_num_w = ::htons(10);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
::snprintf(auth_req_body.sp_id_str, MAX_SIZE_OF_SP_ID, "pooltest@test");
|
||||
::snprintf(auth_req_body.sp_passwd_str, MAX_SIZE_OF_SP_PASSWD, "alfkzmf");
|
||||
|
||||
socket_obj.open(Socket::TCP);
|
||||
socket_obj.connect(serv_addr);
|
||||
socket_obj.send((char *)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
socket_obj.send((char *)&auth_req_body, sizeof(auth_req_body));
|
||||
socket_obj.recv(recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
fprintf(stderr, "============================= LOGIN ==================================\n");
|
||||
fprintf(stderr, "op_num_w = %d\n", ::ntohs(tsvc_rsp_header_ptr->op_num_w));
|
||||
fprintf(stderr, "op_seq_w = %d\n", ::ntohs(tsvc_rsp_header_ptr->op_seq_w));
|
||||
fprintf(stderr, "rsp_cnt_w = %d\n", ::ntohs(tsvc_rsp_header_ptr->rsp_cnt_w));
|
||||
fprintf(stderr, "op_result_code_w = %d\n", ::ntohs(tsvc_rsp_header_ptr->op_result_code_w));
|
||||
fprintf(stderr, "op_result_desc_str = %s\n", tsvc_rsp_header_ptr->op_result_desc_str);
|
||||
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_DN);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
socket_obj.send((char *)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
|
||||
|
||||
//dn_req_body.op_mode_w = htons(0x1100);
|
||||
dn_req_body.op_mode_w = htons(OP_DN_MODE_REQ);
|
||||
//::snprintf(dn_req_body.uri_str, PATH_MAX, "%s", "/freezonetest72.cert");
|
||||
::snprintf(dn_req_body.uri_str, PATH_MAX, "%s", "/TEST_5G_BY_SDK");
|
||||
socket_obj.send((char *)&dn_req_body, sizeof(tsvc_dn_req_body_t));
|
||||
socket_obj.recv(recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
fprintf(stderr, "======================= COPY REQ ==================================\n");
|
||||
fprintf(stderr, "op_num_w = %d\n", ::ntohs(tsvc_rsp_header_ptr->op_num_w));
|
||||
fprintf(stderr, "op_seq_w = %d\n", ::ntohs(tsvc_rsp_header_ptr->op_seq_w));
|
||||
fprintf(stderr, "rsp_cnt_w = %d\n", ::ntohs(tsvc_rsp_header_ptr->rsp_cnt_w));
|
||||
fprintf(stderr, "op_result_code_w = %d\n", ::ntohs(tsvc_rsp_header_ptr->op_result_code_w));
|
||||
fprintf(stderr, "op_result_desc_str = %s\n", tsvc_rsp_header_ptr->op_result_desc_str);
|
||||
socket_obj.close();
|
||||
} catch (Exception e) {
|
||||
fprintf(stderr, "ERROR: %s, %s, %d\n", e.getMethod().c_str(), e.getMessage().c_str(), e.getCode());
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
*/
|
||||
@@ -0,0 +1,469 @@
|
||||
// NoticeTrans.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleTransfer.h"
|
||||
#include "NoticeTrans.h"
|
||||
#include ".\noticetrans.h"
|
||||
#include "../CommLib/CommLib.h"
|
||||
|
||||
// CNoticeTrans 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CNoticeTrans, CDialog)
|
||||
CNoticeTrans::CNoticeTrans(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CNoticeTrans::IDD, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
CNoticeTrans::CNoticeTrans(PTRANPARAM_STRUCT ptp, CString szTargetPath , CWnd* pParent /*=NULL*/ )
|
||||
: CDialog(CNoticeTrans::IDD, pParent)
|
||||
{
|
||||
|
||||
m_szTargetPath = szTargetPath;
|
||||
m_NoticeLastFileTrans = false;
|
||||
// m_szTargetPath.Replace("'", "\'");
|
||||
|
||||
m_ptp = ptp;
|
||||
}
|
||||
|
||||
CNoticeTrans::CNoticeTrans(PTRANPARAM_STRUCT ptp, int nNoticeLastFileTrans , CWnd* pParent /*=NULL*/ )
|
||||
: CDialog(CNoticeTrans::IDD, pParent)
|
||||
{
|
||||
|
||||
m_szTargetPath = "";
|
||||
m_NoticeLastFileTrans = true;
|
||||
|
||||
m_ptp = ptp;
|
||||
}
|
||||
|
||||
|
||||
|
||||
CNoticeTrans::~CNoticeTrans()
|
||||
{
|
||||
delete m_ptp;
|
||||
}
|
||||
|
||||
void CNoticeTrans::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_PROGRESS1, m_NoticeProgress);
|
||||
DDX_Control(pDX, IDC_NOTICE_MSGBOX, m_NoticeText);
|
||||
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CNoticeTrans, CDialog)
|
||||
ON_MESSAGE(WMU_NOTICE_TRANS, OnNoticeTrans)
|
||||
ON_MESSAGE(WMU_NOTICE_LAST_FILE_TRANS, OnNoticeLastFileTrans)
|
||||
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
|
||||
// ON_STN_CLICKED(IDC_NOTICE_MSGBOX, OnStnClickedNoticeMsgbox)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CNoticeTrans 메시지 처리기입니다.
|
||||
void CNoticeTrans::NoticeTrans(void)
|
||||
{
|
||||
tsvc_req_header_t tsvc_req_header;
|
||||
tsvc_auth_info_t auth_req_body;
|
||||
tsvc_dn_req_body_t dn_req_body;
|
||||
tsvc_rsp_header_t *tsvc_rsp_header_ptr;
|
||||
char recv_buffer[8196];
|
||||
int result_code;
|
||||
CString ip;
|
||||
CString this_guid;
|
||||
|
||||
|
||||
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (sock == INVALID_SOCKET) {
|
||||
SetNoticeStep(101);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
|
||||
SetNoticeStep(100);
|
||||
|
||||
bool bRet = false;
|
||||
DWORD dwWritten;
|
||||
char s[1024];
|
||||
|
||||
sockaddr_in sa;
|
||||
sa.sin_family = AF_INET;
|
||||
|
||||
ip = m_sutil.get_first_rcts(m_ptp->szRCTSAddress);
|
||||
if (ip.GetLength()>0)
|
||||
sa.sin_addr.s_addr = m_sutil.conv_addr(ip.GetString());
|
||||
else
|
||||
goto EXIT_FUNCTION;
|
||||
|
||||
//sa.sin_addr.s_addr = conv_addr("222.122.181.9");
|
||||
|
||||
sa.sin_port = htons(RCTS_NOTICE_PORT);
|
||||
|
||||
/*
|
||||
int nNonBlocking = 1;
|
||||
ioctlsocket(sock, FIONBIO, (u_long FAR*)&nNonBlocking);
|
||||
*/
|
||||
|
||||
|
||||
connect(sock, (SOCKADDR*)&sa, sizeof(sa));
|
||||
|
||||
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_AUTH);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
|
||||
::sprintf(auth_req_body.ua_str, m_ptp->szUserId);
|
||||
::sprintf(auth_req_body.up_str, m_ptp->szPassword);
|
||||
|
||||
m_sutil._sh_send(sock, (char*)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
m_sutil._sh_send(sock, (char*)&auth_req_body, sizeof(auth_req_body));
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
|
||||
// 인증
|
||||
if (RSP_CODE_AUTH_SUCCESS==result_code)
|
||||
{
|
||||
SetNoticeStep(200);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetNoticeStep(201);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_DN);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
|
||||
memset(&dn_req_body , 0x00 , sizeof(dn_req_body));
|
||||
dn_req_body.op_mode_w = htons(OP_DN_MODE_REQ);
|
||||
::sprintf(dn_req_body.uri_str ,"%s", m_szTargetPath);
|
||||
::strncpy(dn_req_body.sp_tid_str , m_ptp->szTransGuid , MAX_SIZE_OF_SP_TID-1);
|
||||
|
||||
m_sutil._sh_send(sock,(char *)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
m_sutil._sh_send(sock,(char *)&dn_req_body, sizeof(tsvc_dn_req_body_t));
|
||||
|
||||
SetNoticeStep(300);
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
int result_opn = ntohs(tsvc_rsp_header_ptr->op_num_w);
|
||||
|
||||
//배포
|
||||
if (RSP_CODE_DIST_SUCCESS==result_code)
|
||||
{
|
||||
SetNoticeStep(400);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
SetNoticeStep(401);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
|
||||
EXIT_FUNCTION:
|
||||
|
||||
if (sock != INVALID_SOCKET)
|
||||
closesocket(sock);
|
||||
|
||||
PostMessage(WM_CLOSE);
|
||||
}
|
||||
|
||||
void CNoticeTrans::LastFileTransComplete()
|
||||
{
|
||||
tsvc_req_header_t tsvc_req_header;
|
||||
tsvc_auth_info_t auth_req_body;
|
||||
tsvc_dn_req_body_t dn_req_body;
|
||||
tsvc_ddc_req_body_t dnc_req_body;
|
||||
tsvc_rsp_header_t *tsvc_rsp_header_ptr;
|
||||
char recv_buffer[8196];
|
||||
int result_code;
|
||||
CString ip;
|
||||
CString this_guid;
|
||||
|
||||
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (sock == INVALID_SOCKET) {
|
||||
SetNoticeStep(103);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
|
||||
SetNoticeStep(102);
|
||||
|
||||
bool bRet = false;
|
||||
DWORD dwWritten;
|
||||
char s[1024];
|
||||
|
||||
sockaddr_in sa;
|
||||
sa.sin_family = AF_INET;
|
||||
|
||||
ip = m_sutil.get_first_rcts(m_ptp->szRCTSAddress);
|
||||
if (ip.GetLength()>0)
|
||||
sa.sin_addr.s_addr = m_sutil.conv_addr(ip.GetString());
|
||||
else
|
||||
goto EXIT_FUNCTION;
|
||||
|
||||
sa.sin_port = htons(RCTS_NOTICE_PORT);
|
||||
|
||||
connect(sock, (SOCKADDR*)&sa, sizeof(sa));
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 인증
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_AUTH);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
|
||||
::sprintf(auth_req_body.ua_str, m_ptp->szUserId);
|
||||
::sprintf(auth_req_body.up_str, m_ptp->szPassword);
|
||||
|
||||
m_sutil._sh_send(sock, (char*)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
m_sutil._sh_send(sock, (char*)&auth_req_body, sizeof(auth_req_body));
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
|
||||
if (RSP_CODE_AUTH_SUCCESS==result_code)
|
||||
{
|
||||
SetNoticeStep(202);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetNoticeStep(203);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 인증 끝
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 전송완료알림//////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_DNC);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
|
||||
m_sutil._sh_send(sock,(char *)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
SetNoticeStep(302);
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 전송완료알림 끝////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 관리자 정보
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
memset(&dnc_req_body , 0x00 , sizeof(dnc_req_body));
|
||||
::strncpy(dnc_req_body.sp_tid_str , m_ptp->szTransGuid , MAX_SIZE_OF_SP_TID-1);
|
||||
|
||||
FillAdminInfo(&dnc_req_body);
|
||||
|
||||
m_sutil._sh_send(sock,(char *)&dnc_req_body, sizeof(tsvc_dn_req_body_t));
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
|
||||
if (RSP_CODE_DIST_SUCCESS==result_code)
|
||||
{
|
||||
SetNoticeStep(402);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetNoticeStep(403);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 관리자 정보 끝
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
EXIT_FUNCTION:
|
||||
|
||||
if (sock != INVALID_SOCKET)
|
||||
closesocket(sock);
|
||||
|
||||
PostMessage(WM_CLOSE);
|
||||
}
|
||||
|
||||
|
||||
BOOL CNoticeTrans::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
m_NoticeProgress.SetRange(0, 100);
|
||||
m_NoticeProgress.SetStep(1);
|
||||
|
||||
if (m_NoticeLastFileTrans)
|
||||
this->PostMessage(WMU_NOTICE_LAST_FILE_TRANS , NULL , NULL);
|
||||
else
|
||||
this->PostMessage(WMU_NOTICE_TRANS , NULL , NULL);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
|
||||
LRESULT CNoticeTrans::OnNoticeTrans(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
SetNoticeStep(0);
|
||||
|
||||
while (FALSE==IsWindowVisible())
|
||||
{
|
||||
m_sutil.MessagePump(100);
|
||||
}
|
||||
|
||||
this->NoticeTrans();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CNoticeTrans::OnNoticeLastFileTrans(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
SetNoticeStep(2);
|
||||
|
||||
while (FALSE==IsWindowVisible())
|
||||
{
|
||||
m_sutil.MessagePump(100);
|
||||
}
|
||||
|
||||
this->LastFileTransComplete();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void CNoticeTrans::OnBnClickedCancel()
|
||||
{
|
||||
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
||||
OnCancel();
|
||||
}
|
||||
|
||||
void CNoticeTrans::SetNoticeStep(int nStep)
|
||||
{
|
||||
if (0==nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(10);
|
||||
m_NoticeText.SetWindowText("배포 요청중입니다...(0/4 요청준비)");
|
||||
}
|
||||
if (2==nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(10);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(0/4 요청준비)");
|
||||
}
|
||||
else if (100 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(20);
|
||||
m_NoticeText.SetWindowText("배포 요청중입니다...(1/4 사용자인증)");
|
||||
|
||||
}
|
||||
else if (102 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(20);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(1/4 사용자인증)");
|
||||
|
||||
}
|
||||
else if (200 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(40);
|
||||
m_NoticeText.SetWindowText("배포 요청중입니다...(2/4 인증성공)");
|
||||
|
||||
}
|
||||
else if (201 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(40);
|
||||
m_NoticeText.SetWindowText("배포 요청을 중단합니다...(2/4 인증실패)");
|
||||
m_sutil.MessagePump(500);
|
||||
}
|
||||
else if (202 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(40);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(2/4 인증성공)");
|
||||
|
||||
}
|
||||
else if (203 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(40);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(2/4 인증실패)");
|
||||
}
|
||||
else if (300 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(70);
|
||||
m_NoticeText.SetWindowText("배포 요청중입니다...(3/4 배포요청)");
|
||||
|
||||
}
|
||||
else if (302 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(70);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(3/4 알림요청)");
|
||||
|
||||
}
|
||||
else if (303 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(70);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(3/4 요청실패)");
|
||||
|
||||
}
|
||||
else if (400 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(100);
|
||||
m_NoticeText.SetWindowText("배포를 시작합니다...(4/4 요청성공)");
|
||||
m_sutil.MessagePump(500);
|
||||
}
|
||||
else if (401 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(100);
|
||||
m_NoticeText.SetWindowText("배포 요청을 중단합니다...(4/4 요청실패)");
|
||||
m_sutil.MessagePump(500);
|
||||
}
|
||||
else if (402 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(100);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(4/4 요청성공)");
|
||||
m_sutil.MessagePump(500);
|
||||
}
|
||||
else if (403 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(100);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(4/4 요청실패)");
|
||||
m_sutil.MessagePump(500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CNoticeTrans::FillAdminInfo(tsvc_ddc_req_body_t* pDncInfo)
|
||||
{
|
||||
|
||||
strncpy(pDncInfo->name_01 ,m_ptp->name_01 , MAX_SIZE_OF_NAME-1) ;
|
||||
strncpy(pDncInfo->name_02 ,m_ptp->name_02 , MAX_SIZE_OF_NAME-1) ;
|
||||
strncpy(pDncInfo->name_03 ,m_ptp->name_03 , MAX_SIZE_OF_NAME-1) ;
|
||||
|
||||
strncpy(pDncInfo->phone_01 ,m_ptp->phone_01 , MAX_SIZE_OF_PHONE-1) ;
|
||||
strncpy(pDncInfo->phone_02 ,m_ptp->phone_02 , MAX_SIZE_OF_PHONE-1) ;
|
||||
strncpy(pDncInfo->phone_03 ,m_ptp->phone_03 , MAX_SIZE_OF_PHONE-1) ;
|
||||
|
||||
strncpy(pDncInfo->mail_01 ,m_ptp->mail_01 , MAX_SIZE_OF_MAIL-1) ;
|
||||
strncpy(pDncInfo->mail_02 ,m_ptp->mail_02 , MAX_SIZE_OF_MAIL-1) ;
|
||||
strncpy(pDncInfo->mail_03 ,m_ptp->mail_03 , MAX_SIZE_OF_MAIL-1) ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
#pragma once
|
||||
|
||||
#include "TransferDlg.h"
|
||||
#include "../ConsoleApp(DN)/Struct.h"
|
||||
#include "afxcmn.h"
|
||||
#include "NoticeStruct.h"
|
||||
#include "SocketUtil.h"
|
||||
|
||||
#define WMU_NOTICE_TRANS (WM_USER+1000)
|
||||
#define WMU_NOTICE_LAST_FILE_TRANS (WM_USER+2000)
|
||||
|
||||
// CNoticeTrans 대화 상자입니다.
|
||||
|
||||
class CNoticeTrans : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CNoticeTrans)
|
||||
|
||||
public:
|
||||
CNoticeTrans(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
CNoticeTrans(PTRANPARAM_STRUCT ptp, CString szTargetPath , CWnd* pParent = NULL);
|
||||
CNoticeTrans(PTRANPARAM_STRUCT ptp, int LastFileTrans , CWnd* pParent = NULL);
|
||||
virtual ~CNoticeTrans();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_SEND_TRANSINFO};
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
CString m_szTargetPath;
|
||||
bool m_NoticeLastFileTrans;
|
||||
PTRANPARAM_STRUCT m_ptp;
|
||||
|
||||
void NoticeTrans(void);
|
||||
void LastFileTransComplete();
|
||||
void FillAdminInfo( tsvc_ddc_req_body_t*);
|
||||
|
||||
|
||||
CSocketUtil m_sutil;
|
||||
|
||||
public:
|
||||
// afx_msg void OnNMCustomdrawProgress1(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
CProgressCtrl m_NoticeProgress;
|
||||
CStatic m_NoticeText;
|
||||
|
||||
virtual BOOL OnInitDialog();
|
||||
// afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
|
||||
afx_msg void OnNMCustomdrawProgress1(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
// afx_msg void OnActivateApp(BOOL bActive, DWORD dwThreadID);
|
||||
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||
afx_msg void OnSetFocus(CWnd* pOldWnd);
|
||||
afx_msg LRESULT OnNoticeTrans(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnNoticeLastFileTrans(WPARAM, LPARAM);
|
||||
afx_msg void OnBnClickedCancel();
|
||||
// afx_msg void OnStnClickedNoticeMsgbox();
|
||||
void SetNoticeStep(int nStep);
|
||||
|
||||
};
|
||||
@@ -0,0 +1,20 @@
|
||||
// NoticeTransASocket.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleTransfer.h"
|
||||
#include "NoticeTransASocket.h"
|
||||
|
||||
|
||||
// CNoticeTransASocket
|
||||
|
||||
CNoticeTransASocket::CNoticeTransASocket()
|
||||
{
|
||||
}
|
||||
|
||||
CNoticeTransASocket::~CNoticeTransASocket()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// CNoticeTransASocket 멤버 함수입니다.
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
|
||||
// CNoticeTransASocket 명령 대상입니다.
|
||||
|
||||
class CNoticeTransASocket : public CAsyncSocket
|
||||
{
|
||||
public:
|
||||
CNoticeTransASocket();
|
||||
virtual ~CNoticeTransASocket();
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
// NoticeTransSocket.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleTransfer.h"
|
||||
#include "NoticeTransSocket.h"
|
||||
|
||||
|
||||
// CNoticeTransSocket
|
||||
|
||||
CNoticeTransSocket::CNoticeTransSocket()
|
||||
{
|
||||
}
|
||||
|
||||
CNoticeTransSocket::~CNoticeTransSocket()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// CNoticeTransSocket 멤버 함수입니다.
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
|
||||
// CNoticeTransSocket 명령 대상입니다.
|
||||
|
||||
class CNoticeTransSocket : public CSocket
|
||||
{
|
||||
public:
|
||||
CNoticeTransSocket();
|
||||
virtual ~CNoticeTransSocket();
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
// ResultDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleTransfer.h"
|
||||
#include "ResultDlg.h"
|
||||
#include ".\resultdlg.h"
|
||||
|
||||
|
||||
// CResultDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CResultDlg, CDialog)
|
||||
CResultDlg::CResultDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CResultDlg::IDD, pParent)
|
||||
, m_strResult(_T(""))
|
||||
, m_strFailedFiles(_T(""))
|
||||
|
||||
{
|
||||
m_bAlreadyShow = false;
|
||||
}
|
||||
|
||||
CResultDlg::~CResultDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CResultDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Text(pDX, IDC_RESULT_STATIC, m_strResult);
|
||||
DDX_Text(pDX, IDC_FAILED_FILES_EDIT, m_strFailedFiles);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CResultDlg, CDialog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// Attributes
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CResultDlg::SetResult(INT nTotalCount, INT nFailedCount, CString strFailedFiles)
|
||||
{
|
||||
m_strResult.Format(_T("총 %ld개 업로드, 성공 : %ld개, 실패 : %ld개"), nTotalCount, nTotalCount - nFailedCount, nFailedCount);
|
||||
m_strFailedFiles = strFailedFiles;
|
||||
m_bAlreadyShow = true;
|
||||
}
|
||||
|
||||
|
||||
// CResultDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CResultDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
UpdateData(FALSE);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CResultDlg::OnOK()
|
||||
{
|
||||
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
|
||||
CDialog::OnOK();
|
||||
GetParent()->PostMessage(WM_CLOSE);
|
||||
}
|
||||
|
||||
void CResultDlg::OnCancel()
|
||||
{
|
||||
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
|
||||
CDialog::OnCancel();
|
||||
GetParent()->PostMessage(WM_CLOSE);
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CResultDlg 대화 상자입니다.
|
||||
|
||||
class CResultDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CResultDlg)
|
||||
|
||||
public:
|
||||
CResultDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CResultDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_RESULT_DLG };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
virtual BOOL OnInitDialog();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
bool IsAlreadyShow() { return m_bAlreadyShow; }
|
||||
void SetResult(INT nTotalCount, INT nFailedCount, CString strFailedFiles = _T(""));
|
||||
|
||||
// Data Members
|
||||
private:
|
||||
CString m_strResult;
|
||||
CString m_strFailedFiles;
|
||||
bool m_bAlreadyShow;
|
||||
protected:
|
||||
virtual void OnOK();
|
||||
virtual void OnCancel();
|
||||
};
|
||||
@@ -0,0 +1,44 @@
|
||||
// TranTabCtrl.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleTransfer.h"
|
||||
#include "TranTabCtrl.h"
|
||||
#include ".\trantabctrl.h"
|
||||
|
||||
|
||||
// CTranTabCtrl
|
||||
|
||||
IMPLEMENT_DYNAMIC(CTranTabCtrl, CTabCtrl)
|
||||
CTranTabCtrl::CTranTabCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
CTranTabCtrl::~CTranTabCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CTranTabCtrl, CTabCtrl)
|
||||
ON_WM_CTLCOLOR()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
|
||||
// CTranTabCtrl 메시지 처리기입니다.
|
||||
|
||||
|
||||
HBRUSH CTranTabCtrl::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
||||
{
|
||||
HBRUSH hbr = CTabCtrl::OnCtlColor(pDC, pWnd, nCtlColor);
|
||||
|
||||
if (GetDlgItem(IDC_STC_STATUS) != pWnd) {
|
||||
if (nCtlColor == CTLCOLOR_STATIC) {
|
||||
pDC->SetBkMode(TRANSPARENT);
|
||||
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: 기본값이 적당하지 않으면 다른 브러시를 반환합니다.
|
||||
return hbr;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CTranTabCtrl
|
||||
|
||||
class CTranTabCtrl : public CTabCtrl
|
||||
{
|
||||
DECLARE_DYNAMIC(CTranTabCtrl)
|
||||
|
||||
public:
|
||||
CTranTabCtrl();
|
||||
virtual ~CTranTabCtrl();
|
||||
|
||||
protected:
|
||||
|
||||
public:
|
||||
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,224 @@
|
||||
#pragma once
|
||||
#include "afxwin.h"
|
||||
|
||||
#include <afxole.h> // MFC OLE 클래스입니다.
|
||||
#include <afxodlgs.h> // MFC OLE 대화 상자 클래스입니다.
|
||||
#include <afxdisp.h> // MFC 자동화 클래스입니다.
|
||||
|
||||
#include "TranTabCtrl.h"
|
||||
#include "WebBrowser2.h"
|
||||
#include "TextProgressCtrl.h"
|
||||
#include "RegUtil.h"
|
||||
#include "../ConsoleApp(DN)/Struct.h"
|
||||
#include "../ConsoleApp(DN)/SocketUtil.h"
|
||||
|
||||
#include "MD5.h"
|
||||
#include "ResultDlg.h"
|
||||
|
||||
typedef struct {
|
||||
bool bFolder;
|
||||
CString sText;
|
||||
CString sSrcPath;
|
||||
CString sDstPath;
|
||||
__int64 nSize;
|
||||
__int64 nTransferredSize;
|
||||
CString sLastModified;
|
||||
int nState; // -1:전송중, 0:전송전, 1:완료, 2:에러, 3:건너뜀, 4:중지, 5:일시정지
|
||||
} TRANFILE_STRUCT, *PTRANFILE_STRUCT;
|
||||
|
||||
typedef struct {
|
||||
bool doRetry;
|
||||
int retryCnt;
|
||||
PTRANFILE_STRUCT retryFile;
|
||||
} RETRY_TFINFO , *PRETRY_TFINFO;
|
||||
|
||||
enum TRANFILE_STATE {
|
||||
TFS_TRANSFERRING = -1,
|
||||
TFS_READY = 0,
|
||||
TFS_COMPLETE,
|
||||
TFS_ERROR,
|
||||
TFS_SKIPED,
|
||||
TFS_STOP,
|
||||
TFS_PAUSE,
|
||||
};
|
||||
|
||||
#define WMU_TRANSFER_IS_READY (WM_USER + 1)
|
||||
#define WMU_TRANSFER (WM_USER + 2)
|
||||
#define WMU_TRANSFER_COMPLETED (WM_USER + 3)
|
||||
#define WMU_TRANSFER_ERROR (WM_USER + 4)
|
||||
#define WMU_TRANSFER_CLOSE (WM_USER + 5)
|
||||
|
||||
#define TIMER_ID_CLOSE 1
|
||||
#define TIMER_ID_UPDATESTATUS 2
|
||||
#define TIMER_ID_TRANSFER 3
|
||||
|
||||
#define LOG_PATH1 "C:\\TEMP"
|
||||
#define LOG_PATH2 "C:\\TEMP\\SP-CONSOLE"
|
||||
#define LOG_FILE "upload_fail.log"
|
||||
#define DEBUG_FILE "debug.log"
|
||||
#define LOG_UPLOAD "upload.log"
|
||||
|
||||
// CTransferDlg 대화 상자입니다.
|
||||
|
||||
class CTransferDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CTransferDlg)
|
||||
|
||||
public:
|
||||
CTransferDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CTransferDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_TRANSFER };
|
||||
|
||||
protected:
|
||||
HCOMMLIB m_hcl;
|
||||
|
||||
map<CString,int> m_mapTranFile;
|
||||
CPtrArray m_paTranFile;
|
||||
|
||||
CString m_sTitle;
|
||||
|
||||
bool m_bPaused;
|
||||
bool m_bResume;
|
||||
bool m_bStop;
|
||||
|
||||
CWinThread* m_pthread;
|
||||
|
||||
bool m_bUpdating;
|
||||
bool m_bUpdateMode;
|
||||
|
||||
int m_nTotalCount;
|
||||
UINT64 m_nTotalSize;
|
||||
UINT64 m_nTotalTransferred;
|
||||
double m_nTransferSpeed;
|
||||
UINT64 m_nSpeedTransferred;
|
||||
DWORD m_nSpeedTick;
|
||||
int m_iTransfer;
|
||||
CTime m_tmStart;
|
||||
__int64 m_nElapsed;
|
||||
DWORD m_dwOldTick;
|
||||
|
||||
double m_nGapTransfer;
|
||||
|
||||
int m_nSelectedCount;
|
||||
UINT64 m_nSelectedSize;
|
||||
|
||||
UINT64 m_nCurrentFileSize;
|
||||
UINT64 m_nBaseFileSize;
|
||||
UINT64 m_nTransferredSize;
|
||||
|
||||
int m_nWriteAction;
|
||||
BOOL m_bWriteApplyAll;
|
||||
|
||||
UINT m_nTimer;
|
||||
|
||||
CString m_sSkippedFolder;
|
||||
|
||||
DWORD m_dwError;
|
||||
CString m_sError;
|
||||
CString m_szTargetPath;
|
||||
CString m_szHashedTargetPath;
|
||||
|
||||
CSocketUtil m_sutil;
|
||||
|
||||
PTRANFILE_STRUCT m_retry_file;
|
||||
PRETRY_TFINFO m_retry_tfinfo;
|
||||
|
||||
CString m_strFailedFiles;
|
||||
int m_nFailedFileCount;
|
||||
|
||||
public:
|
||||
CWebBrowser2 m_wbAdvert;
|
||||
CTranTabCtrl m_tab;
|
||||
CButton m_btnDelFile;
|
||||
CString m_sFolder;
|
||||
CListCtrl m_list;
|
||||
CStatic m_stcStatus;
|
||||
CStatic m_grpNow;
|
||||
CStatic m_stcSpeedTitle;
|
||||
CStatic m_stcSpeed;
|
||||
CStatic m_stcSaveFileTitle;
|
||||
CStatic m_stcSaveFile;
|
||||
CTextProgressCtrl m_prsNow;
|
||||
CStatic m_grpTotal;
|
||||
CStatic m_stcETimeTitle;
|
||||
CStatic m_stcETime;
|
||||
CStatic m_stcLTimeTitle;
|
||||
CStatic m_stcLTime;
|
||||
CStatic m_stcFileCountTitle;
|
||||
CStatic m_stcFileCount;
|
||||
CTextProgressCtrl m_prsTotal;
|
||||
CButton m_btnStart;
|
||||
CButton m_btnPause;
|
||||
CButton m_btnClose;
|
||||
|
||||
TRANPARAM_STRUCT m_tp;
|
||||
LPSTR m_pszFileList;
|
||||
bool m_pause_disabled;
|
||||
|
||||
CResultDlg m_dlgResult;
|
||||
|
||||
protected:
|
||||
void InitTransferEnv();
|
||||
|
||||
int GetAction(CString sOldObj, CString sOldMTime, UINT64 nOldSize, CString sNewObj, CString sNewMTime, UINT64 nNewSize);
|
||||
|
||||
bool AppendRemoteFile(CString sPath);
|
||||
bool AppendLocalFile(CString sPath, int nDepth);
|
||||
void AppendFile(CString sPath, UINT64 nSize, CString sLastModified, int nDepth, int iPos = -1);
|
||||
|
||||
void ShowFileCount();
|
||||
void ShowTotalProgress();
|
||||
|
||||
void LoadWritePolicy();
|
||||
|
||||
void ShowProgressStatus(UINT64 nTransferred);
|
||||
|
||||
static UINT LoadTransferFile(LPVOID);
|
||||
static void TransferCallbackProc(LPVOID, __int64 nTransfered);
|
||||
|
||||
void RedrawControl1();
|
||||
void RedrawControl2();
|
||||
|
||||
void FileOptLogsRequest(PTRANFILE_STRUCT);
|
||||
void SendMailWhenUploadFail(const char*);
|
||||
void WriteWhenUploadFail(const char* ,const char*);
|
||||
void WriteDebugLog(const char* ,const char*,const char*);
|
||||
|
||||
public:
|
||||
void TransCompleteWithDistribute();
|
||||
void Pause(bool bPause = true);
|
||||
void Resume();
|
||||
|
||||
void ShowStatus(bool bSelected = false, bool bUpdate = true, bool bAllSelected = false);
|
||||
|
||||
DECLARE_EVENTSINK_MAP()
|
||||
void DocumentCompleteWBAdvert(LPDISPATCH pDisp, VARIANT* URL);
|
||||
void NavigateErrorWBAdvert(LPDISPATCH pDisp, VARIANT* URL, VARIANT* Frame, VARIANT* StatusCode, BOOL* Cancel);
|
||||
|
||||
CString GetHashedPath(CString strPath);
|
||||
void AddFailedFile(CString strPathName, bool bDirectory);
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnClose();
|
||||
afx_msg void OnTimer(UINT nIDEvent);
|
||||
afx_msg void OnBtnDelfile();
|
||||
afx_msg void OnBtnStart();
|
||||
afx_msg void OnBtnPause();
|
||||
afx_msg void OnBtnClose();
|
||||
afx_msg void OnListItemChanged(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnListKeydown(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg LRESULT OnTransferIsReady(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnTransfer(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnTransferCompleted(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnTransferError(WPARAM, LPARAM);
|
||||
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
|
||||
|
||||
};
|
||||
@@ -0,0 +1,180 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// 한국어 resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
|
||||
#pragma code_page(949)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_OLE_RESOURCES\r\n"
|
||||
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
|
||||
"\r\n"
|
||||
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"
|
||||
"LANGUAGE 18, 1\r\n"
|
||||
"#pragma code_page(949)\r\n"
|
||||
"#include ""res\\ConsoleTransfer.rc2"" // Microsoft Visual C++에서 편집되지 않은 리소스\r\n"
|
||||
"#include ""afxres.rc"" // 표준 구성 요소\r\n"
|
||||
"#endif\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDR_MAINFRAME ICON "res\\ConsoleTransfer.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
|
||||
WS_SYSMENU
|
||||
CAPTION "ConsoleTransfer 정보"
|
||||
FONT 9, "MS Shell Dlg", 0, 0, 0x1
|
||||
BEGIN
|
||||
ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20
|
||||
LTEXT "ConsoleTransfer Version 1.0",IDC_STATIC,40,10,119,8,
|
||||
SS_NOPREFIX
|
||||
LTEXT "Copyright (C) 2005",IDC_STATIC,40,25,119,8
|
||||
DEFPUSHBUTTON "확인",IDOK,178,7,50,16,WS_GROUP
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,1,2
|
||||
PRODUCTVERSION 1,0,1,2
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "041203b5"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "KT & Netomi Corporation."
|
||||
VALUE "FileDescription", "System Hosting Active-X Control Enterprise Version File Transfer"
|
||||
VALUE "FileVersion", "1.0.1.2"
|
||||
VALUE "InternalName", "ConsoleTransfer.exe"
|
||||
VALUE "LegalCopyright", "KT & Netomi Corporation. All rights reserved."
|
||||
VALUE "OriginalFilename", "ConsoleTransfer.exe"
|
||||
VALUE "ProductName", "System Hosting"
|
||||
VALUE "ProductVersion", "1.0.1.2"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x412, 949
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
IDD_ABOUTBOX, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 228
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 48
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_ABOUTBOX "ConsoleTransfer 정보(&A)..."
|
||||
END
|
||||
|
||||
#endif // 한국어 resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#define _AFX_NO_SPLITTER_RESOURCES
|
||||
#define _AFX_NO_OLE_RESOURCES
|
||||
#define _AFX_NO_TRACKER_RESOURCES
|
||||
#define _AFX_NO_PROPERTY_RESOURCES
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
|
||||
LANGUAGE 18, 1
|
||||
#pragma code_page(949)
|
||||
#include "res\ConsoleTransfer.rc2" // Microsoft Visual C++에서 편집되지 않은 리소스
|
||||
#include "afxres.rc" // 표준 구성 요소
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 7.2 KiB |
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity
|
||||
version="1.0.0.0"
|
||||
processorArchitecture="X86"
|
||||
name="Microsoft.Windows.ConsoleTransfer"
|
||||
type="win32"
|
||||
/>
|
||||
<description>ConsoleApp Tranfer</description>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="X86"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
</assembly>
|
||||
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// ConsoleTransfer.RC2 - resources Microsoft Visual C++에서 직접 편집하지 않는 리소스
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#error 이 파일은 Microsoft Visual C++에서 편집할 수 없습니다.
|
||||
#endif //APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// 여기에 수동으로 편집한 리소스를 추가합니다.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
@@ -0,0 +1,84 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by ConsoleTransfer.rc
|
||||
//
|
||||
#define VS_VERSION_INFO1 2
|
||||
#define ID_ADD 3
|
||||
#define IDC_RDO_WRITEPOLICY1 202
|
||||
#define IDC_RDO_WRITEPOLICY2 203
|
||||
#define IDC_RDO_AFTERWORK1 204
|
||||
#define IDC_RDO_WRITEPOLICY3 204
|
||||
#define IDC_RDO_AFTERWORK2 205
|
||||
#define IDC_RDO_WRITEPOLICY4 205
|
||||
#define IDC_CHK_SHOWALLFILE 205
|
||||
#define IDC_RDO_AFTERWORK3 206
|
||||
#define IDC_RDO_WRITEPOLICY5 206
|
||||
#define IDC_RDO_AFTERWORK4 207
|
||||
#define IDC_FILEEXISTS_ALWAYS 207
|
||||
#define IDC_TREE 208
|
||||
#define IDC_CHK_FORCEKILL 210
|
||||
#define IDC_FILEEXISTS_FILE1 1070
|
||||
#define IDC_FILEEXISTS_SIZE1 1071
|
||||
#define IDC_FILEEXISTS_DATE1 1072
|
||||
#define IDC_FILEEXISTS_FILE2 1073
|
||||
#define IDC_FILEEXISTS_SIZE2 1074
|
||||
#define IDC_FILEEXISTS_DATE2 1075
|
||||
#define IDC_FILEEXISTS_ICON1 1076
|
||||
#define IDC_FILEEXISTS_ICON2 1077
|
||||
#define IDC_FILEEXISTS_ACTION1 1079
|
||||
#define IDC_FILEEXISTS_ACTION2 1080
|
||||
#define IDC_FILEEXISTS_ACTION3 1081
|
||||
#define IDC_FILEEXISTS_ACTION4 1082
|
||||
#define IDC_TEXT 1085
|
||||
#define IDC_EDIT 1086
|
||||
#define IDC_WB_ADVERT 1100
|
||||
#define IDC_TAB 1101
|
||||
#define ID_START 1102
|
||||
#define ID_PAUSE 1103
|
||||
#define ID_CLOSE 1104
|
||||
#define IDC_BTN_DELFILE 1201
|
||||
#define IDC_STC_DELTEXT 1202
|
||||
#define IDC_LIST 1203
|
||||
#define IDC_STC_STATUS 1204
|
||||
#define IDC_GRP_NOW 1205
|
||||
#define IDC_STC_SPEED_TITLE 1206
|
||||
#define IDC_STC_SPEED 1207
|
||||
#define IDC_STC_SAVEFILE_TITLE 1208
|
||||
#define IDC_STC_SAVEFILE 1209
|
||||
#define IDC_PRS_NOW 1210
|
||||
#define IDC_GRP_TOTAL 1211
|
||||
#define IDC_STC_ETIME_TITLE 1212
|
||||
#define IDC_STC_ETIME 1213
|
||||
#define IDC_STC_LTIME_TITLE 1214
|
||||
#define IDC_STC_LTIME 1215
|
||||
#define IDC_STC_FILE_COUNT_TITLE 1216
|
||||
#define IDC_STC_FILE_COUNT 1217
|
||||
#define IDC_PRS_TOTAL 1218
|
||||
#define IDS_INPUTDLGTITLE_RENAME 10000
|
||||
#define IDS_INPUTDLGTEXT_RENAME 10001
|
||||
#define IDD_NOTICETRANS 14001
|
||||
#define IDC_PROGRESS1 14001
|
||||
#define IDC_NOTICE_MSGBOX 14002
|
||||
#define IDC_FILEEXISTS_ACTION5 14003
|
||||
#define IDD_ENTER_SOMETHING 14004
|
||||
#define IDC_FAILED_FILES_EDIT 14004
|
||||
#define IDD_FILE_EXISTS 14005
|
||||
#define IDC_RESULT_STATIC 14005
|
||||
#define IDD_RESULT_DLG 14006
|
||||
#define IDD_TRANSFER 14007
|
||||
#define IDD_SEND_TRANSINFO 14008
|
||||
#define IDI_ICON3 14012
|
||||
#define IDR_MAINFRAME 14012
|
||||
#define IDI_ICON1 14013
|
||||
#define IDS_ERRORMSG_ENTERSOMETHING 20000
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 14014
|
||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||
#define _APS_NEXT_CONTROL_VALUE 14006
|
||||
#define _APS_NEXT_SYMED_VALUE 14007
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
// stdafx.cpp : 표준 포함 파일을 포함하는 소스 파일입니다.
|
||||
// ConsoleTransfer.pch는 미리 컴파일된 헤더가 됩니다.
|
||||
// stdafx.obj는 미리 컴파일된 형식 정보를 포함합니다.
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
// stdafx.h : 잘 변경되지 않고 자주 사용하는
|
||||
// 표준 시스템 포함 파일 및 프로젝트 관련 포함 파일이
|
||||
// 들어 있는 포함 파일입니다.
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef VC_EXTRALEAN
|
||||
#define VC_EXTRALEAN // Windows 헤더에서 거의 사용되지 않는 내용을 제외시킵니다.
|
||||
#endif
|
||||
|
||||
// 아래 지정된 플랫폼보다 우선하는 플랫폼을 대상으로 하는 경우 다음 정의를 수정하십시오.
|
||||
// 다른 플랫폼에 사용되는 해당 값의 최신 정보는 MSDN을 참조하십시오.
|
||||
#ifndef WINVER // Windows 95 및 Windows NT 4 이후 버전에서만 기능을 사용할 수 있습니다.
|
||||
#define WINVER 0x0400 // Windows 98과 Windows 2000 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32_WINNT // Windows NT 4 이후 버전에서만 기능을 사용할 수 있습니다.
|
||||
#define _WIN32_WINNT 0x0400 // Windows 98과 Windows 2000 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32_WINDOWS // Windows 98 이후 버전에서만 기능을 사용할 수 있습니다.
|
||||
#define _WIN32_WINDOWS 0x0410 // Windows Me 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32_IE // IE 4.0 이후 버전에서만 기능을 사용할 수 있습니다.
|
||||
#define _WIN32_IE 0x0400 // IE 5.0 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
|
||||
#endif
|
||||
|
||||
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 일부 CString 생성자는 명시적으로 선언됩니다.
|
||||
|
||||
// MFC의 공통 부분과 무시 가능한 경고 메시지에 대한 숨기기를 해제합니다.
|
||||
#define _AFX_ALL_WARNINGS
|
||||
|
||||
#include <afxwin.h> // MFC 핵심 및 표준 구성 요소
|
||||
#include <afxext.h> // MFC 익스텐션
|
||||
#include <afxdisp.h> // MFC 자동화 클래스
|
||||
|
||||
#include <afxdtctl.h> // Internet Explorer 4 공용 컨트롤에 대한 MFC 지원
|
||||
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <afxcmn.h> // Windows 공용 컨트롤에 대한 MFC 지원
|
||||
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||
|
||||
#include <map>
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
#include "MFC64bitFix.h"
|
||||
#include "../CommLib/CommLib.h"
|
||||
#include <afxsock.h>
|
||||
|
||||
/*
|
||||
#ifdef _DEBUG
|
||||
# pragma comment(lib, "SPCCommd.lib")
|
||||
#else
|
||||
# pragma comment(lib, "SPCComm.lib")
|
||||
#endif
|
||||
*/
|
||||
|
||||
#ifdef _OPENSIDK
|
||||
#define APP_TITLE "Opendisk Console"
|
||||
#define CFG_FILENAME "OD-Console.xml"
|
||||
#else
|
||||
#define APP_TITLE "SP-Console (단방향 전용)"
|
||||
#define INI_FILENAME "SP-Console.ini"
|
||||
#define CFG_FILENAME "SP-Console.xml"
|
||||
#endif
|
||||
|
||||
#define VK_A 65
|
||||
|
||||
Reference in New Issue
Block a user