Files
SimpleRemoter/server/2015Remote/file/CFileManagerDlg.h
2025-06-29 20:25:39 +02:00

192 lines
6.5 KiB
C++

#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; // 文件名
CString m_strFileName; // 操作文件名
__int64 m_nOperatingFileLength; // 文件总大小
__int64 m_nCounter;// 计数器
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(); // 搜索结束
void FixedRemoteSearchFileList(BYTE* pbBuffer, DWORD dwBufferLen);
int m_nNewIconBaseIndex; // 新加的ICON
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);//远程共享目录
bool id_search_result;
CStatusBar m_wndStatusBar;
CFileManagerDlg(CWnd* pParent = NULL, Server* pIOCPServer = NULL, ClientContext* pContext = NULL);
~CFileManagerDlg() {
m_bIsClosed = 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; // 备份计数器 由于比较用
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()
private:
bool m_bIsUpload; // 是否是把本地主机传到远程上,标志方向位
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();
};
}