⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cnutility.cpp

📁 这是一个远程控制程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:
//---------------------------------------------------------------------------

#pragma hdrstop

#include "CNUtility.h"
#include "CNRegistry.h"
#include "CNStringList.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
TCNString CN_IntToHex(int Value, int Digits)
{
        TCNString sTmp;
        char buf[10];
        sprintf(buf,"%X",Value);

        sTmp = buf;

        for(register i = 0; i < Digits; i++)
        {
                if( sTmp.Length() < Digits) sTmp = "0" + sTmp;
        }

        return sTmp;
}
TCNString CN_Trim(const TCNString S)
{
        int i,j;
        TCNString Tmp;

        j = S.Length() -1;
        i = 0;
        while ((i <= j) && (S[i] <= ' ')) i++;

        if( i > j)
        {
                Tmp = "";
        }
        else
        {
                while( S[j] <= ' ') j--;

                Tmp = S.SubString(i,(j-i) + 1);
        }
        return Tmp;
}
TCNString CN_TrimLeft(const TCNString S)
{
        int I, L;
        TCNString sTmp;

        L = S.Length() - 1;
        I = 0;
        while ((I <= L) && (S[I] <= ' ')) I++;

        if( I > L )
        {
                sTmp = "";
        }
        else
        {
                sTmp = S.SubString(I, L-I + 1);
        }

        return sTmp;
}
TCNString CN_TrimRight(const TCNString S)
{
        int I;
        TCNString sTmp;
        I = S.Length() - 1;
        while ((I >= 0) && (S[I] <= ' ')) I--;
        if( I < 0)
        {
                sTmp = "";
        }
        else
        {
                sTmp = S.SubString(0,I + 1);
        }
        return sTmp;
}
TCNString CN_IntToStr(int Value)
{
        TCNString sTmp;

        char buf[32];
        itoa(Value,buf,10);
        sTmp = buf;

        return sTmp;
}
int CN_StrToInt(const TCNString S)
{
        return atoi(S.c_str());
}
int CN_StrToIntDef(const TCNString S, int Default)
{
        char c;
        TCNString sTmp;
        int Value = 0;
        int n;

        if( S.IsEmpty()) return Default;

        sTmp = S;

        if( (sTmp.Pos("0x") != -1) || (sTmp.Pos("0X") != -1) )
        {
                sTmp = S.SubString(2,S.Length() - 2);
                sTmp = sTmp.UpperCase();
                for( register i = 0; i < sTmp.Length(); i++)
                {
                        c = sTmp[i];
                        if( c >= '0' && c <= '9')
                        {
                                n = c - '0';
                        }
                        else if( c >= 'A' && c <= 'F')
                        {
                                n = c - 'A' + 10;
                        }
                        else
                        {
                                n = 0;
                        }
                        Value = (Value << 4) + n;
                }
        }
        else
        {
                Value = CN_StrToInt(S);
        }
        return Value;
}


TCNString CN_GetLocalIPAddress(void)
{
        TCNString strIP;

        struct hostent *p;

        char hostname[ 80 ];
        gethostname(hostname,80);
        p = gethostbyname(hostname);
        strIP = inet_ntoa( *((in_addr *)p->h_addr) );

        return strIP;

}
TCNString CN_GetLocalHostName(void)
{
        char hostname[ 80 ];
        gethostname(hostname,80);
        return TCNString(hostname);
}
TCNString CN_AdjustPath(TCNString &Path)
{
        Path = Path.Trim();

        if( Path[Path.Length()] != '\\') Path += "\\";

        return Path;
}
TCNString SPACE(TCNString Str, int n)
{
        TCNString Tmp = "";
        if( Str.Length() < n)
        {
                n = n - Str.Length()  -1;
                for(register i = 0; i < n; i ++)
                {
                        Tmp += ' ';
                }
        }
        Tmp += ' ';
        return Tmp;
}
TCNString CN_GetFileAttr(DWORD FileAttr)
{
        TCNString Attr = "";
        if( (FileAttr & FILE_ATTRIBUTE_READONLY) == FILE_ATTRIBUTE_READONLY) Attr = Attr + "R";
        if( (FileAttr & FILE_ATTRIBUTE_ARCHIVE)  == FILE_ATTRIBUTE_ARCHIVE)  Attr = Attr + "A";
        if( (FileAttr & FILE_ATTRIBUTE_SYSTEM)   == FILE_ATTRIBUTE_SYSTEM)   Attr = Attr + "S";
        if( (FileAttr & FILE_ATTRIBUTE_HIDDEN)   == FILE_ATTRIBUTE_HIDDEN)   Attr = Attr + "H";
        if( (FileAttr & FILE_ATTRIBUTE_DIRECTORY)== FILE_ATTRIBUTE_DIRECTORY)Attr = Attr + "D";

        return Attr;
}
DWORD  CN_GetFileAttr(TCNString FAttr)
{
        //TODO: Add your source code here
        DWORD Attr = 0;
        if( FAttr.Pos('D') > 0) Attr |= FILE_ATTRIBUTE_DIRECTORY;
        if( FAttr.Pos('H') > 0) Attr |= FILE_ATTRIBUTE_HIDDEN;
        if( FAttr.Pos('S') > 0) Attr |= FILE_ATTRIBUTE_SYSTEM;
        if( FAttr.Pos('A') > 0) Attr |= FILE_ATTRIBUTE_ARCHIVE;
        if( FAttr.Pos('R') > 0) Attr |= FILE_ATTRIBUTE_READONLY;
        return Attr;
}
TCNString CN_SplitterText(TCNString * Text,char spChar)
{
        //TODO: Add your source code here
        TCNString Result = "";

        *Text = Text->Trim();

        register char *s = Text->c_str();

        while(*s )
        {
                if( *s == spChar) { s ++; break; }
                
                Result += *s ++;
        }
        *Text = s;
        return Result;
}
bool  CN_IsIPAddress( TCNString ss)
{
        TCNString s,s1;
        int ii,p;                

        s1 = ss;


        for( ii = 1 ; ii <= 3; ii++)
        {
                p = s1.Pos('.');
                if( p == 0) return FALSE;
                s = s1.SubString(0, p);
                s1= s1.SubString(p + 1, s1.Length() - p -1);
                p = CN_StrToIntDef(s, -1);
                if( p < 0 || p > 255) return FALSE;
        }
        p = CN_StrToIntDef( s1 , -1);
        if( p < 0 || p > 255) return FALSE;

        return TRUE;
}
BOOL CN_CreateDir(TCNString Dir)
{
        SECURITY_ATTRIBUTES Attributes;

        Attributes.nLength = sizeof(SECURITY_ATTRIBUTES);
        Attributes.lpSecurityDescriptor = NULL;
        Attributes.bInheritHandle = TRUE;

        return CreateDirectory(Dir.c_str(),&Attributes);
}
BOOL CN_RemoveDir(TCNString Dir)
{
        return RemoveDirectory(Dir.c_str());
}
BOOL CN_RenameFile(TCNString SourceFile,TCNString DestFile)
{
        return MoveFile(SourceFile.c_str(),DestFile.c_str());
}
TCNString CN_ExtractFilePath(TCNString FileName)
{
        TCNString sTmp;
        register i;
        for(i = FileName.Length()-1; i > 0; i --)
        {
                if( FileName[i] == '\\') break;
        }
        sTmp = FileName.SubString(0,i);

        return sTmp;
}
TCNString CN_ExtractFileName(TCNString FullFileName)
{
        TCNString sTmp;
        register i;
        for(i = FullFileName.Length()-1; i > 0; i --)
        {
                if( FullFileName[i] == '\\') break;
        }
        sTmp = FullFileName.SubString(i + 1,FullFileName.Length() - i - 1);

        return sTmp;
}
TCNString  CN_DeleteFile(TCNString FileName)
{
        HANDLE h;
        WIN32_FIND_DATA r;
        bool Found = false;

        TCNString Path = CN_ExtractFilePath(FileName);

        CN_AdjustPath(Path);

        TCNString CanNotDelFile = "";

        h = FindFirstFile(FileName.c_str(),&r);

        if( h != INVALID_HANDLE_VALUE) Found = true;

        while(Found )
        {
                if( (r.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY)
                {
                        FileName = Path + r.cFileName;
                        FileName = FileName.Trim();
                        SetFileAttributes(FileName.c_str(),0x00000020);  //去掉只读属性
                        if(!DeleteFile(FileName.c_str()))
                        {
                                CanNotDelFile = CanNotDelFile + r.cFileName + ",";
                        }
                }
                Found = FindNextFile(h,&r);
        }
        FindClose(h);
        return CanNotDelFile;
}
void  CN_DelAllFileInPath(TCNString Path)
{
        //TODO: Add your source code here
        HANDLE h;
        WIN32_FIND_DATA r;

        bool Found = false;

        CN_AdjustPath(Path);

        h = FindFirstFile(TCNString(Path + "*.*").c_str(),&r);

        if( h != INVALID_HANDLE_VALUE) Found = true;

        while(Found )
        {
                if( ((r.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)  == FILE_ATTRIBUTE_DIRECTORY) &&
                    (strcmp(r.cFileName,".")  != 0) &&
                    (strcmp(r.cFileName,"..") != 0))
                {
                        CN_DelAllFileInPath(Path + r.cFileName);
                }
                else if((strcmp(r.cFileName,".")  != 0) &&
                        (strcmp(r.cFileName,"..") != 0))
                {
                        SetFileAttributes(TCNString(Path + r.cFileName).c_str(),0x00000020);  //去掉只读属性
                        DeleteFile(TCNString(Path + r.cFileName).c_str());      //删除文件
                }
                Found = FindNextFile(h,&r);
        }
        SetFileAttributes(Path.c_str(),0x00000020);  //去掉只读属性
        RemoveDirectory(Path.c_str());
        FindClose(h);
}
int CN_GetFileSize( TCNString FileName)
{
        HANDLE h;
        WIN32_FIND_DATA r;
        bool Found = false;

        DWORD FileSize = 0;

        h = FindFirstFile(FileName.c_str(),&r);

        if( h != INVALID_HANDLE_VALUE) Found = true;

        while(Found )
        {
                FileSize = (r.nFileSizeHigh << sizeof(DWORD)) + r.nFileSizeLow;
        }
        FindClose(h);
        return FileSize;
}
bool CN_IsFolder(TCNString CurPath,TCNString FileName)
{
        HANDLE h;
        WIN32_FIND_DATA r;
        h = FindFirstFile(FileName.c_str(),&r);
        if( h == INVALID_HANDLE_VALUE)
        {
                FindClose(h);
                return false;
        }
        FindClose(h);
        return ( (r.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY);
}
bool CN_IsInvalidateFileName(TCNString FileName)
{
        if( FileName.Pos('/') > 0 || FileName.Pos('\\') > 0 || FileName.Pos(':') > 0 ||
            FileName.Pos('*') > 0 || FileName.Pos('?')  > 0 || FileName.Pos('"') > 0 ||
            FileName.Pos('<') > 0 || FileName.Pos('>')  > 0 || FileName.Pos('|') > 0 )
        {
                return TRUE;
        }
        return FALSE;
}
bool CN_ExecFile(TCNString FileName)
{
        int Err;
        bool Result ;

        Err = WinExec(FileName.c_str(),TRUE);
        switch( Err)
        {
                case 0:
                case ERROR_BAD_FORMAT:
                case ERROR_FILE_NOT_FOUND:
                case ERROR_PATH_NOT_FOUND:Result = FALSE;break;
                default:                  Result = TRUE; break;
        }

        return Result;
}
BOOL CN_DirectoryExists(TCNString Name)
{
        long Attr = GetFileAttributes(Name.c_str());

        return (Attr != -1) && ( (Attr & FILE_ATTRIBUTE_DIRECTORY) != 0);
}
BOOL CN_FileExists(TCNString Name)
{
        WIN32_FIND_DATA r;
        return (FindFirstFile(Name.c_str(),&r) != INVALID_HANDLE_VALUE);
}

//从磁盘目录导入
void CN_CopyDirTo(TCNString FromDirName,TCNString ToDirName, bool Flag)
{
        //TODO: Add your source code here
        HANDLE h;
        WIN32_FIND_DATA r;
        bool Found = FALSE;

        CN_AdjustPath(FromDirName);
        CN_AdjustPath(ToDirName);

        h = FindFirstFile(TCNString(FromDirName + "*.*").c_str(),&r);

        if( h != INVALID_HANDLE_VALUE) Found = TRUE;

        while(Found )
        {
                if( (r.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) &&
                    (strcmp(r.cFileName,".")  != 0) &&
                    (strcmp(r.cFileName,"..") != 0))
                {
                        if(!CN_DirectoryExists(ToDirName + r.cFileName))//如果目标目录不存在
                        {
                                CreateDirectory( TCNString(ToDirName + r.cFileName).c_str(),NULL); //创建目录
                        }
                        CN_CopyDirTo( FromDirName + r.cFileName ,ToDirName + r.cFileName , Flag);
                }
                else if((strcmp(r.cFileName,".")  != 0) &&
                        (strcmp(r.cFileName,"..") != 0))
                {
                        if( Flag )      //如果是移动文件方式
                        {
                                MoveFile(TCNString(FromDirName + r.cFileName).c_str(),
                                         TCNString(ToDirName + r.cFileName).c_str());
                        }
                        else
                        {
                                CopyFile(TCNString(FromDirName + r.cFileName).c_str(),
                                         TCNString(ToDirName + r.cFileName).c_str(),FALSE);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -