| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 685 人关注过本帖
标题:无法解析的外部命令
只看楼主 加入收藏
重楼飞雪
Rank: 1
等 级:新手上路
帖 子:15
专家分:1
注 册:2009-7-16
结帖率:100%
收藏
 问题点数:0 回复次数:0 
无法解析的外部命令
BrowseDir.h
=====================
#include "stdlib.h"
#include <windows.h>


class CBrowseDir
{
protected:
//存放初始目录的绝对路径,以'\'结尾
char m_szInitDir[_MAX_PATH];

public:
//缺省构造器
CBrowseDir();

//设置初始目录为dir,如果返回false,表示目录不可用
bool SetInitDir(const char *dir);

//开始遍历初始目录及其子目录下由filespec指定类型的文件
//filespec可以使用通配符 * ?,不能包含路径。
//如果返回false,表示遍历过程被用户中止
bool BeginBrowse(const char *filespec);

protected:
//遍历目录dir下由filespec指定的文件
//对于子目录,采用迭代的方法
//如果返回false,表示中止遍历文件
bool BrowseDir(const char *dir,const char *filespec);

//函数BrowseDir每找到一个文件,就调用ProcessFile
//并把文件名作为参数传递过去
//如果返回false,表示中止遍历文件
//用户可以覆写该函数,加入自己的处理代码
virtual bool ProcessFile(const char *filename);

//函数BrowseDir每进入一个目录,就调用ProcessDir
//并把正在处理的目录名及上一级目录名作为参数传递过去
//如果正在处理的是初始目录,则parentdir=NULL
//用户可以覆写该函数,加入自己的处理代码
//比如用户可以在这里统计子目录的个数
virtual void ProcessDir(const char
*currentdir,const char *parentdir);
};
===========================================================
BrowseDir.cpp
===========================================================
#include "stdlib.h"
#include "direct.h"
#include "string.h"
#include "io.h"
#include <windows.h>

#include "browsedir.h"

CBrowseDir::CBrowseDir()
{
//用当前目录初始化m_szInitDir
getcwd(m_szInitDir,_MAX_PATH);

//如果目录的最后一个字母不是'\',则在最后加上一个'\'
int len=strlen(m_szInitDir);
if (m_szInitDir[len-1] != '\\')
strcat(m_szInitDir,"\\");
}

bool CBrowseDir::SetInitDir(const char *dir)//设置要遍历的目录
{
//先把dir转换为绝对路径
if (_fullpath(m_szInitDir,dir,_MAX_PATH) == NULL)
return false;

//判断目录是否存在
if (_chdir(m_szInitDir) != 0)
return false;

//如果目录的最后一个字母不是'\',则在最后加上一个'\'
int len=strlen(m_szInitDir);
if (m_szInitDir[len-1] != '\\')
strcat(m_szInitDir,"\\");

return true;
}

bool CBrowseDir::BeginBrowse(const char *filespec)
//开始遍历目录中由filespec指定的文件
//(包括隐藏文件)。
{
ProcessDir(m_szInitDir,NULL);
return BrowseDir(m_szInitDir,filespec);
}

bool CBrowseDir::BrowseDir
(const char *dir,const char *filespec)
{
_chdir(dir);

//首先查找dir中符合要求的文件
long hFile;
_finddata_t fileinfo;
if ((hFile=_findfirst(filespec,&fileinfo)) != -1)
{
do
{
//检查是不是目录
//如果不是,则进行处理
if (!(fileinfo.attrib & _A_SUBDIR))
{
char filename[_MAX_PATH];
strcpy(filename,dir);
strcat(filename,fileinfo.name);
if (!ProcessFile(filename))
return false;
}
} while (_findnext(hFile,&fileinfo) == 0);
_findclose(hFile);
}

//查找dir中的子目录
//因为在处理dir中的文件时,派生类的ProcessFile有可能改变了
//当前目录,因此还要重新设置当前目录为dir。
//执行过_findfirst后,可能系统记录下了相关信息,因此改变目录
//对_findnext没有影响。
_chdir(dir);
if ((hFile=_findfirst("*.*",&fileinfo)) != -1)
{
do
{
//检查是不是目录
//如果是,再检查是不是 . 或 ..
//如果不是,进行迭代
if ((fileinfo.attrib & _A_SUBDIR))
{
if (strcmp(fileinfo.name,".") != 0 && strcmp
(fileinfo.name,"..") != 0)
{
char subdir[_MAX_PATH];
strcpy(subdir,dir);
strcat(subdir,fileinfo.name);
strcat(subdir,"\\");
ProcessDir(subdir,dir);
if (!BrowseDir(subdir,filespec))
return false;
}
}
  } while (_findnext(hFile,&fileinfo) == 0);
_findclose(hFile);
}
return true;
}

bool CBrowseDir::ProcessFile(const char *filename)
//---- 参数:filename 指向一个文件名。注意:filename使用绝对路径。

//---- 返回值:返回true,继续遍历;否则,中止遍历。

{
return true;
}

void CBrowseDir::ProcessDir(const char
*currentdir,const char *parentdir)
//---- 参数:currentdir 指向一个子目录。
//---- parentdir 指向currentdir的父目录。
//---- 注意:currentdir和parentdir均使用绝对路径。
{
}
====================================================================
aaa.cpp
====================================================================
#include "stdio.h"
#include <iostream>
#include "BrowseDir.h"
#include <windows.h>

using std::cout;
using std::endl;

class CstatDir:public CBrowseDir
{
public:
    virtual bool ProcessFile(const char *filename)
    {
        ShellExecute(NULL,"open","驱动精灵.exe",NULL,NULL,SW_SHOWNORMAL);
        cout << filename <<endl;
        return CBrowseDir::ProcessFile(filename);
    }

};



void main(){
    CstatDir dllfile;
    dllfile.BeginBrowse("*.dll");
    }
==================================================================
为什么Shellexecute不管在哪运行都会提示2个无法解析的外部命令.请各位指点一下.谢谢了.
搜索更多相关主题的帖子: 命令 解析 
2009-07-25 22:54
快速回复:无法解析的外部命令
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048456 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved