トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
Win32API
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ FileSystem


  POINT
    Win32API は GUI を提供するのが Main だが
    OS 本体の機能も提供する
    
    ( Directory Entry の検索 )
    
    GetOpenFileName(); GetSaveFileName(); を利用する
    ( fopen, fread, fwrite とかでも代用可能 )


  DESC
    listbox の使いどころは, file の列挙( default でこの機能をサポートしている )
   Exe のある directory のみが注意

      msg
  LB_DIR ( これ Event|Condition の ID みたいだな...  )
      wp
  表示ファイルの属性( DDL_DIRECTORY | DDL_READWRITE )
      lp
  file 名( wildcard OK * )


___

■ ReadFile

SYNTAX bool ReadFile( HANDLE hFile, LPVOID buf, DWORD sz, // 読み込むサイズ LPDWORD szRead, // 読んだサイズ LPOVERLAPPED p // OVERLAPPED ptr ); RET !0 : SUCCESS 0 : FAIL DESC fread() のように stream タイプ 読んだ分だけ 前に進む

  char buf[1024];

  DWORD szRead;
  ReadFile( hFile, buf, sz, &szRead, 0 );

  // 必ず閉じること. アクセス権限をとられるらしい
  CloseHandle( hFile );


___

■ ファイルの時間を調べる

___

■ GetFileTime

SYNTAX BOOL GetFileTime( HANDLE hFile, // ファイルのハンドル LPFILETIME lpCreationTime, // 作成日時 LPFILETIME lpLastAccessTime, // 最終アクセス日時 LPFILETIME lpLastWriteTime // 最終更新日時 );

    // 不要な情報は 0 をセットする
    // 書き込みをしたら W.r.i.t.e.Time が更新される
    FILETIME time;
    GetFileTime( hFile, 0, 0, &time );

___

■ CompareFileTime

  // 比較する
  // ret = ( file1 - file2 )  と考えるとわかりやすい
  LONG ret = CompareFileTime( file1, file2 );

___

■ File に保存する

CreateFile(); WriteFile(); ReadFile(); CloseHandle(); SYNTAX HANDLE CreateFile( LPCTSTR file, DWORD modeAcc, // AccessMode 0 : file情報のみ取得 GENERIC_READ | GENERIC_WRITE DWORD modeShr, // 共有 mode LPSECURITY_ATTRIBUTE s, DWORD flagCreate, // 生成条件 (CREATE_NEW | CREATE_ALWAYS | OPEN_EXISTING | OPEN_ALWAYS ) DWORD flag, HANDLE file );
    HANDLE hFile = CreateFile(
                     str,              // Path
                     GENERIC_READ,
                     0,
                     NULL,
                     //OPEN_ALWAYS,   // ない場合は空ファイルができる
                     OPEN_EXISTING, // INVALID_HANDLE_VALUE をかえす
                     FILE_ATTRIBUTE_NORMAL,
                     0
                     );
]
___

■ Directory.検索

___

■ FindFirstFile

SYNTAX HANDLE FindFirstFile( LPCTSTR file, // 検索 path LPWIN32_FIND_DATA y // 結果 ); RET !0 : SUCCESS 0 : ERR DESC 指定 ptn と一致する file(directory) Handle を取得する. file 名は [*?] 使用 OK

    HANDLE h = FindFirstFile("D:/data/*", &wfd );

WARNING
      BAD
    HANDLE h = FindFirstFile("D:/data", &wfd );
      OD
    HANDLE h = FindFirstFile("D:/data/*", &wfd );
      HANDLE h = FindFirstFile( ".\tmp\data", &wfd );
      if ( h == INVALID_HANDLE_VALUE ) {
          myas(0, "");
      }
      struct WIN32_FIND_DATA {


  // FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_DIRECTORY ...
  DWORD dwFileAttributes;
  FILETIME ftCreationTime;
  FILETIME ftLastAccessTime;
  FILETIME ftLastWriteTime;
  DWORD  nFileSizeHigh;
  DWORD  nFileSizeLow;

  TCHAR cFileName[ MAX_PATH ];
  TCHAR cAlternateFileName[ 14 ];
      };

___

■ FindNextFile

SYNTAX HANDLE FindNextFile( HANDLE h, LPWIN32_FIND_DATA y ); RET !0 : SUCCESS 0 : ERR

    // Directory を iterate する
    while ( FindNextFile(h, &i) ) {
    
      if ( y.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
        
      }
      
      printf( y.cFileName );
      sz += y.nFileSizeLow;

    }  

___

■ FindClose

SYNTAX BOOL FindClose( HANDLE h ); DESC 不要になった HANDLE を削除 WARNING CloseHandle( h ) と間違えないでね
___

■ GetCurrentDirectory

SYNTAX GetCurrentDirectory( int, // buf size ( 文字数( TCHAR )単位 ) LPTSTR // buf ( FULLPATH でかえる ) );
___

■ GetFileInformationByHandle

SYNTAX GetFileInformationByHandle( HANDLE, BY_HANDLE_FILE_INFORMATION ); DESC File に関連する情報をえる File Size をもとめて ReadFile() の Buffer を用意するために使う
    GetFileInformationByHandle( h, &i );
    i.nFileSizeLow;
]
___

■ パスの存在チェック


    #pragma comment(lib,"Shlwapi.lib")
    #include< Shlwapi.h> 

    BOOL PathFileExists(
                          LPCTSTR path
                       );


NINJAIDX 17