忍者ブログ
NINJA
[1] [2] [3] [4] [5] [6] [7] [8] [9]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

テキストファイルを出力する

BOOL xxxxxx::WriteTextData( CString strFileName, CStringArray& strArrTextData )
{
    CStdioFile    fout;
    CString        str;

    if( !fout.Open( strFileName, CFile::modeCreate | CFile::modeWrite | CFile::typeText ) ){
        ::AfxMessageBox(_T("ファイルの保存に失敗しました。") );
        return FALSE;
    }

    for( int i = 0; i < strArrTextData.GetSize(); i++ ){
        fout.WriteString( strArrTextData.GetAt(i) );
        fout.WriteString( _T("\n") );
    }

    fout.Close();

    return TRUE;
}




PR
フォルダを作成する。


BOOL xxxxxx::CreateFolder(LPCTSTR lpFolderName)
{

    // 指定したフォルダをチェックと作成
    CString folder = _T("");
    LPSECURITY_ATTRIBUTES lpSecurity;

    CStringArray splitFolder;
    this->SplitFolder( lpFolderName, splitFolder );

    for( int i = 0; i < splitFolder.GetSize() - 1; i++ ){
        folder += splitFolder.GetAt(i);

        if( !this->CheckFolderPath( folder ) ){
            if(::CreateDirectory( /*(LPCWSTR)*/folder, NULL ) == NULL ){
                ::AfxMessageBox( _T("フォルダの作成に失敗しました。") );
                return FALSE;
            }
        }
        folder += _T("\\");
    }
    return TRUE;
}

ドライブ情報を取得する。


void xxxxxx::GetDriveInformation( CString strDrive, CString* strDriveName )
{
    CUtils    mc_utils;

    CString        DiskSerialNumber;    // Diskシリアル番号
    CString        VolumeName;            // 指定ドライブのボリューム名
    CString        FormatStyle;        // フォーマット形式

    CString        FindDrive= strDrive;    //デフォルト値

    UINT        oldMode=SetErrorMode(SEM_NOOPENFILEERRORBOX);

    TCHAR    lpNameBuffer[255],                //指定したDISKのボリューム名
            lpFileSystemNameBuffer[255];    //フォーマット形式

    DWORD    SerialNumber= 0,            // ボリュームシリアルナンバーを格納する変数へのポインタ
            MaximumComponentLength,        // ファイル名構成要素の最大長を格納する変数へのポインタ
            lpFileSystemFlags;            // ファイルシステムフラグを格納する変数へのポインタ

    if (FindDrive == ""){
        /*ドライブ指定*/
        FindDrive = "c:\\";
    }

    if(::GetVolumeInformation(    FindDrive,
                                lpNameBuffer,
                                255,&SerialNumber,
                                &MaximumComponentLength,
                                &lpFileSystemFlags,lpFileSystemNameBuffer,255) == 0)
    {
        return;
    }
    else{
        CString wStr = _T("");
        wStr.Format( _T("%u") ,SerialNumber);            //unsigned
        DiskSerialNumber    = wStr;                //Diskシリアル番号
        VolumeName            = lpNameBuffer;        //Cドライブのボリューム名
        FormatStyle            = lpFileSystemNameBuffer;    //フォーマット形式
    }
    SetErrorMode(oldMode);
    mc_utils.LpstrToString( (char*)mc_utils.CStringToLptstr( lpNameBuffer), *strDriveName );
}

有効なドライブを取得する。

void xxxxxx::GetDrive( CStringArray& strArrDrive, int iDriveType )
{

    //0:ALL
    //1:ハードディスク
    //2:リムーバブルディスク( FD / MO 等 )
    //3:CD-ROM/CD-RW
    int        iDTypes    = iDriveType;        // 検索対象:HDD
    DWORD    drv;
    char    SvDrv[8];

    CStringArray    CSAdrives;

    drv = GetLogicalDrives();

    if(drv==0)    return;

    for (int lpcnt = 0;lpcnt < 26;lpcnt++){ //a->Zまで
        if (drv & (1L << lpcnt)){    //i番目のビットを取り出し(マスク)

            wsprintfW( (LPWSTR)SvDrv, _T("%c:\\"),lpcnt + 'A');
            switch( iDTypes )
            {
            case 0://ALL DriveGet
                    //pListView->AddString(SvDrv);
                    strArrDrive.Add( (LPCTSTR)SvDrv );
                    break;
                case 1:
                    // HDD
                    if ( GetDriveTypeW( (LPCWSTR)SvDrv) == DRIVE_FIXED ){
                        strArrDrive.Add( (LPCTSTR)SvDrv );
                    }
                    break;
                case 2:
                    // リムーバルディスク
                    if ( GetDriveTypeW((LPCWSTR)SvDrv) == DRIVE_REMOVABLE){
                        strArrDrive.Add( (LPCTSTR)SvDrv );
                    }
                    break;
                case 3:
                    // CD-ROM
                    if ( GetDriveTypeW((LPCWSTR)SvDrv) == DRIVE_CDROM ){
                        strArrDrive.Add( (LPCTSTR)SvDrv );
                    }
                    break;
                default:
                    strArrDrive.Add( (LPCTSTR)SvDrv );
                    break;
            }
        }
    }
}


ドライブの空き容量を確認する。


void xxxxxx::GetDriveVolum( CString strDrive, int& iFreeBytes )
{
    DWORDLONG dwlFreeBytesAvailableToCaller;
    DWORDLONG dwlTotalNumberOfBytes;
    DWORDLONG dwlTotalNumberOfFreeBytes;

    CString strTemp;

    //**************************************************************
    // strDrive  :指定ドライブ
    // &dwlFreeBytesAvailableToCaller :ユーザー割り当て空き容量
    // &dwlTotalNumberOfBytes    :ディスク総容量
    // &dwlTotalNumberOfFreeBytes :ディスク実空き容量
    //**************************************************************

    //ディスクの空き容量などを表示
    if(GetDiskFreeSpaceEx(strDrive,
        reinterpret_cast<PULARGE_INTEGER>(&dwlFreeBytesAvailableToCaller),
        reinterpret_cast<PULARGE_INTEGER>(&dwlTotalNumberOfBytes),
        reinterpret_cast<PULARGE_INTEGER>(&dwlTotalNumberOfFreeBytes)))
    {
        strTemp.Format(_T("ユーザー割り当て空き容量 :%dMB\nディスク総容量 :%dMB\nディスク実空き容量 :%dMB"),
        static_cast<int>(dwlFreeBytesAvailableToCaller/1024/1024),
        static_cast<int>(dwlTotalNumberOfBytes/1024/1024),
        static_cast<int>(dwlTotalNumberOfFreeBytes/1024/1024));
    }

    iFreeBytes = static_cast<int>(dwlTotalNumberOfFreeBytes/1024/1024);
}


カレンダー
05 2025/06 07
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
フリーエリア
最新CM
最新TB
プロフィール
HN:
No Name Ninja
性別:
非公開
バーコード
ブログ内検索
アーカイブ
P R
忍者画像RSS
Powered by ニンジャブログ  Designed by ゆきぱんだ
Copyright (c) Visual Studio C++のお勉強 All Rights Reserved
忍者ブログ / [PR]