工控编程吧
标题:
209上位机VC MFC获取系统目录及程序自身目录
[打印本页]
作者:
qq263946146
时间:
2016-2-28 20:41
标题:
209上位机VC MFC获取系统目录及程序自身目录
(, 下载次数: 0)
上传
点击文件名下载附件
209上位机VC MFC获取系统目录及程序自身目录
功能展示
程序开发中时常要向系统的特殊目录复制文件,比如要将程序安装到program files目录里,要向system32目录复制文件,我们就得用代码获取这些目录路径,当前例程实现常用目录的获取如程序自身目录,系统程序安装目录,WINDOW目录,SYSTEM32目录,效果如图;
要点提示
一.系统的任何特殊目录都可以用函数SHGetSpecialFolderPath()获取;SHGetSpecialFolderPath函数原型 :ulongSHGetSpecialFolderPath(long hwndOwner,ref string lpszPath,int nFolder,booleanfCreate )
参数说明:
hwndOwner :可用GetDesktopWindowAPI取一个窗口句柄。或直接传null.
lpszPath:返回路径的缓冲区
nFolder:标识代号
fCreate:true :如果文件夹不存在则创建,false:不创建;
参数nFolder的取值有很多,不同的取值,参数lpszPath得到的目录都不一样,如nFolder =CSIDL_DESKTOP时lpszPath为桌面目录;
二.程序自身的目录获取可以用函数GetModuleFileName();
函数原型
WORD GetModuleFileName(HMODULE hModule, LPTSTR lpFilename, DWORD nSize);
参数定义:
HMODULE hModule 装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前应用程序全路径。
LPTSTR lpFileName 是你存放返回的名字的内存块的指针,是一个输出参数
DWORD nSize,装载到缓冲区lpFileName的最大值;
如果函数失败,返回值将为0,可以用函数GetLastError可获得具体的异常代码
实现功能
1.新建基于对话框的应用程序
2.拖拽一列表框ID为IDC_LIST1,用于显示获取的目录;
依次拖拽按钮控件<本程序目录><本程序目录1 >< SYSTEM目录>< WINDOW目录><程序安装目录>关联函数实现相对应功能,程序安装目录指的是系统默认的程序安装目录如C:\\programe files; 按钮代码函数体为:
void CGkbc8Dlg::OnMypath()
{
m_List.ResetContent();//清空内容
m_List.SetHorizontalExtent(600);//让过长内容可见
//<>
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);//自身目录获取方法1
m_List.InsertString(0,path);//写入列表框
ShellExecute(NULL,"Open",path,NULL,NULL,SW_SHOWNORMAL);//打开文件夹
}
void CGkbc8Dlg::OnMypath1()
{
char ch[MAX_PATH];
GetModuleFileName(NULL,ch,MAX_PATH);
CString sPath(ch);
sPath = sPath.Left(sPath.ReverseFind('\\'));
m_List.InsertString(0,sPath);//写入列表框
ShellExecute(NULL,"Open",sPath,NULL,NULL,SW_SHOWNORMAL);//打开文件夹
}
复制代码
void CGkbc8Dlg::OnSystem()
{
char cPath[MAX_PATH];
GetSystemDirectory(cPath,MAX_PATH);
m_List.InsertString(0,cPath);//写入列表框
ShellExecute(NULL,"Open",cPath,NULL,NULL,SW_SHOWNORMAL);//打开文件夹
}
void CGkbc8Dlg::OnWindow()
{
char cPath[MAX_PATH];
GetWindowsDirectory(cPath,MAX_PATH);
m_List.InsertString(0,cPath);//写入列表框
ShellExecute(NULL,"Open",cPath,NULL,NULL,SW_SHOWNORMAL);//打开文件夹
}
void CGkbc8Dlg::OnProgram()
{
TCHAR cPath[MAX_PATH];
SHGetSpecialFolderPath(NULL,cPath,CSIDL_DESKTOP, FALSE);//桌面目录
m_List.InsertString(0,cPath);//写入列表框
ShellExecute(NULL,"Open",cPath,NULL,NULL,SW_SHOWNORMAL);//打开文件夹
//
SHGetSpecialFolderPath(NULL,cPath,0X0026, FALSE);//CSIDL_PROGRAM_FILES---0X0026
m_List.InsertString(0,cPath);//写入列表框
ShellExecute(NULL,"Open",cPath,NULL,NULL,SW_SHOWNORMAL);//
}
复制代码
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/7645d6bea0328008b8fe33955a456814/0/0/w_19rszqe9ed.swf-albumId=5385292409-tvId=5385292409-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4