A. VC++ MFC 讀文件 共享為例
方法一:
CFile file;
if ( file.Open("c://data.txt",CFile::modeRead))
{
AfxMessageBox("OK");
file.Close();
} else {
AfxMessageBox("文件已被打開或打開失敗!");
}
方法二:
HANDLE hFile;
hFile = CreateFile("d://pos.txt",GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_DELETE,NULL,OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if(hFile == INVALID_HANDLE_VALUE )
{
AfxMessageBox("該文件已被打開或打開失敗!")
return 0;
}
.....
CloseHandle(hFile);
B. MFC程序問題——如何通過點擊按鈕彈出文件目錄瀏覽,選擇目錄
給你一個控制台版本的瀏覽目錄范常式序,把main中的代碼復制過去就行了。
#include <wtypes.h>
#include <atlbase.h>
#include <shlobj.h>
#include <iostream>
using namespace std;
//顯示文件夾瀏覽對話框
//用shell提供的SHBrowseForFolder,需要一個指向BROWSEINFO結構的指針
/* BROWSEINFO結構
HWND hwndOwner,指定對話框的父窗口的句柄
LPCITEMIDLIST pidlRoot,指定打開瀏覽的根目錄,若為NULL,表示桌面
LPSTR pszDisplayName,指定一個緩沖區,接收用戶選擇的目錄的顯示名稱
LPCSTR lpszTitle,樹形視圖上方顯示的文字
UINT ulFlags,指定屬性
BFFCALLBACK Lpfn,指定回調函數,發生某些事件時,指定的函數被調用,允許程序進一步定製對話框的行為
LPARAM lParam,若指定回調函數,參數值傳遞給回調函數
int iImage,代表用戶選擇的文件夾對象的圖標在系統圖標列表中的索引 */
int main()
{
BROWSEINFO bi;
::ZeroMemory(&bi,sizeof(bi)); //將bi結構清零
char szSelPath[MAX_PATH]; //被選擇文件夾對象名稱的緩沖區
bi.pszDisplayName=szSelPath;
LPITEMIDLIST pNetHoodIDL;
::SHGetSpecialFolderLocation(NULL,CSIDL_HISTORY,&pNetHoodIDL); //根文件夾為歷史文件夾
bi.pidlRoot=pNetHoodIDL;
bi.lpszTitle="Luoguohui "; //提示字元串
bi.ulFlags=BIF_BROWSEINCLUDEFILES| //允許選擇文件對象
BIF_EDITBOX| //顯示編輯框
BIF_STATUSTEXT| //顯示狀態文本
BIF_VALIDATE; //校驗編輯框中的輸入
LPITEMIDLIST pidlSel=::SHBrowseForFolder(&bi); //打開文件夾瀏覽對話框
if(pidlSel!=NULL)
{
cout<<"Selected:"<<szSelPath<<endl;
CComPtr<IMalloc> pMalloc;
::SHGetMalloc(&pMalloc);
pMalloc->Free(pidlSel); //釋放資源
}
return 0;
}
C. C++ MFC 根據路徑復制區域網中其他電腦中的文件到本機指定位置
我感覺可以通過映射網路驅動器的方式啊,不知道你們那邊能不能這樣用。
對於訪問,尤其是多台機器訪問另一台機器固定路徑下的文件,可以通過映射網路驅動器的方式實現,映射完成後,該文件就相當於放在本地的磁碟上,該怎麼操作就不用說了吧。
E
D. MFC通過IP訪問共享文件夾
首先確認共享完成,伺服器共享的話,一般都是關閉了簡單共享,也就是不但需要共享,還要在文件夾的安全選項里添加用戶。
共享完成後,在別的同一網段或下級網段的機可以直接通過運行 \\伺服器IP\文件夾共享名
來打開
E. MFC中怎樣將某個或某個文件夾共享到網路中
這個太強了吧 相當於做ftp伺服器軟體了
FTP,歸根到底,只是基於TCP/IP協議的一個擴充,定義了一套規范,用於文件傳輸文件。例如各種應答碼。
你的問題是要寫出一個FTP伺服器端,那就應該從理解FTP協議上入手。
簡單舉例來說,你的程序應該實現如下功能(以主動模式為例):
1,監聽21埠。
2,接收到數據後,根據FTP協議判斷是否為FTP請求。
3,若是,取得客戶機埠,根據FTP協議,返回應答碼至客戶機該埠。
4,伺服器指定本機隨機埠(<1024),根據FTP協議,通知客戶端准備接受數據。
F. MFC-7340列印機區域網內如何共享
將列印機連接A PC電腦,並列印出測試頁。然後設置共享列印機。然後在別的PC電腦找列印機名字,添加就好。電腦在同區域網內。
假設B電腦需要共享其列印機,在B電腦「開始」-「設置」-「列印和傳真」-「添加列印機」-選「網路列印機或連接列印機的電腦」下一步-選「瀏覽列印機」,等出現需要共享的列印機,雙擊它並根據提示直接安裝其驅動即可。
實現操作成功前必須保證A電腦和B電腦同在一個區域網和使用同一個工作組,否則不能在瀏覽列印機時找不到需要共享的列印機。
檢驗兩台電腦是否在同一個區域網和工作組只需打開網上鄰居,如能找到對方電腦的共享文件夾,就可以了。如不能則要到「我的電腦」右擊「屬性」-計算機名修改和A電腦相同的工作組即可
G. MFC 讀取http文件伺服器上的文件列表,並選擇文件進行下載
你需要學會動態網頁製作,至少簡單的生成TXT文本,就是網站WEB程序讀取目錄中的文件列表,以TXT或XML輸出
你還需要學會MFC網路編程,就是MFC程序訪問/下載某個網址的網頁,其實就是讀取/下載網站WEB程序動態生成的TXT或者XML內容
當然你也可以靜態生成TXT或者XML放置在WEB伺服器上
顯示的話,就是ListControl,ListView一類,可自繪
下載文件和下載/讀取網頁基本相同,只是網頁是文本是string(當然原始也是BYTE[]),而文件就是很多個位元組是BYTE[]
總結的話,就是一個是伺服器端要放置有提供文件列表內容的文件
再一個就是MFC網路訪問/讀取這個文件,解析得到文件列表
學會使用ListControl
和讀取網頁一樣,按位元組接收即可
H. MFC打開區域網smb路徑
ShellExecute(NULL,_T("explore"),_T("\192.168.1.102"),NULL,NULL,SW_SHOWNORMAL);
這樣試試
I. C++,MFC工程如何瀏覽一個文件,復制到另外一個文件夾
主要有兩個難點:
1、如何選擇文件;
2、選擇好文件之後,如果復制;
1st、關於文件選擇,可參考下面這段代碼:
CString CDcPackerDlg::BootOpenDialog() //返回選擇的文件名稱
{
CString strFile = _T("");
CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.cfg)|*.cfg|All Files (*.*)|*.*||"), NULL);
if (dlgFile.DoModal())
{
strFile = dlgFile.GetPathName();
}
return strFile;
}
//載入文件按鈕
void CDcPackerDlg::OnBnClickedSelectdec()
{
// TODO: Add your control notification handler code here
m_strDescPath = ""; //類的成員變數
//"打開文件"對話框,選擇文件,返回其路徑
m_strDescPath = BootOpenDialog();
}
2nd、文件復制:
2.1 獲得程序目錄
CString strPath = "", strDir = "";
char filepath[MAX_PATH];
GetMoleFileName(NULL, filepath, MAX_PATH);
strDir.Format("%s", filepath);
strPath = strDir.Left(strDir.ReverseFind('\\'));
2.2 復制文件
在MFC下可以用CopyFile()函數,定義如下:
BOOL CopyFile(
LPCTSTR lpExistingFileName, //原文件地址,包括文件名
LPCTSTR lpNewFileName, ////目的文件地址,包括文件名
BOOL bFailIfExists //如果目的文件存在的操作
);
3rd、自己把上面給的代碼組裝一下,就可以滿足你的要求了。
J. MFC怎樣創建能同時瀏覽文件夾和文件的對話框
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO)); //指定存放文件的默認文件夾路徑
bi.lpszTitle="請選擇文件夾"; //添加提示語句
bi.ulFlags=0x0040 | BIF_EDITBOX; //添加「新建文件夾項」
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//以默認路徑打開瀏覽文件夾對話框
TCHAR * savepath = new TCHAR[MAX_PATH];
CString savepath2="";
if(pidl != NULL)
{
SHGetPathFromIDList(pidl,savepath);//把文件夾路徑存放在savepath中
savepath2.Format(_T("%s"),savepath);
savepath2=savepath2+"\\";//在路徑後增加斜杠
if(SUCCEEDED(SHGetMalloc(&pMalloc)))//網上說pidl指向的對象用完應該釋放
{
pMalloc->Free(pidl);
pMalloc->Release();
}
} MessageBox(savepath2);//顯示所選文件夾路徑
這是修改後的代碼,添加了第三四行,親測可用