(1)函数说明
我们很多时候需要在一个目录下添加一个文件下或者删除一个文件夹。需要用到的API是:
获取当前目录的绝对路径:
DWORD GetCurrentDirectory( DWORD nBufferLength, LPSTR lpBuffer );
创建特定目录下的某文件夹:
BOOL CreateDirectory( LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes );
删除特定目录下的某文件夹:
BOOL RemoveDirectoryA( LPCSTR lpPathName );
其中lpBuffer 是存储字符串路径的缓冲区,nBufferLength是缓冲区长度;lpPathName是绝对路径的字符串,lpSecurityAttributes是创建文件夹的安全属性,可设为NULL。
另有目录下文件的操作函数:
删除文件,lpFileName是文件路径:
BOOL WINAPI DeleteFile(__in LPCTSTR lpFileName);
移动文件,前参数是源文件路径,后参数是目的文件路径:
BOOL WINAPI MoveFile(__in LPCTSTR lpExistingFileName, __in LPCTSTR lpNewFileName);
复制文件,参数同上一样,bFailIfExists标示目标文件是否存在:
BOOL WINAPI CopyFile(__in LPCTSTR lpExistingFileName, __in LPCTSTR lpNewFileName, __in BOOL bFailIfExists);
(2)实例
方法是设定一个EditBox控件,按CTRL+W为该控件添加两个成员变量,一个是CString变量name,另一个是CEdit变量m_name。另设定两个按钮,一个是创建,一个是删除。两个按钮的操作代码如下:
void CWin32applicationDlg::OnCreate()
{
char Buf[256]; //定义路径存储缓冲区
::GetCurrentDirectory(256,Buf); //获得绝对路径,并存储在Buf
m_name.GetWindowText(name); //获取编辑框中的字符串,即文件夹名字并存储在name
strcat(Buf,"//"); //在路径后追加/
strcat(Buf,name); //在路径后追加文件夹名,成完整绝对路径
if(CreateDirectory(Buf,NULL)) //如果创建成功
{
MessageBox("文件夹创建成功");
return;
}
}
void CWin32applicationDlg::OnDelete()
{
char Buf[256];
::GetCurrentDirectory(256,Buf);
m_name.GetWindowText(name);
strcat(Buf,"//");
strcat(Buf,name);
if(RemoveDirectory(Buf)) //如果删除成功
{
MessageBox("文件夹删除成功");
return;
}
}
=========================================================================================
关于信息输出调试函数MessageBox。它带参数可以带char*的字符串,也可以直接带CString类型变量。如果想像printf那样输出数值信息,采用如下方式:
int k=3;
CString s;
s.Format("%d",k);
MessageBox(s);
============================================================================================
问题:用vc6.0建立一个mfc,里面有两个控件。一个编辑框,一个是确定按钮。我用system("shutdown.exe -s -t xx"); XX表示时间。我想让用户在编辑框输入时间,然后把时间带进system函数中的XX位置。例如:编辑框中输入50,则执行;system("shutdown.exe -s -t 50");
按钮函数:
void CTestDlg::OnOK() { int iTime=GetDlgItemInt(IDC_EDIT1);//IDC_EDIT1是编辑框的ID CString strCommand; strCommand.Format("shutdown -s -t %d",iTime); system(strCommand); CDialog::OnOK(); }
执行批处理:
system("d:\\1.bat");
文件路径视具体情况,可放在exe同目录下用文件名全名就行,不用目录。如果考虑到运行时隐藏DOS的黑界面,用:
ShellExecute(NULL, _T("OPEN"), "d:\\1.bat", "", "d:\\", SW_HIDE);
参考原文:http://bbs.csdn.net/topics/380108604
参考原文:http://bbs.csdn.net/topics/190062479