ホーム > カテゴリ > C/C++ >

フォルダを監視する(C/C++版)

フォルダを監視するサンプルです。

サンプルの実行画面

ソースコード

[Sample90.c]

//--------------------------------------------------------------------------------------
//  ■フォルダを監視する■ Sample NO.90
//
//--------------------------------------------------------------------------------------

#include <windows.h>

#define IDD_DIALOG 101
#define IDB_1     1000

//コールバックプロシージャ
LRESULT CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

/////////////////////////////////////////////////////////////////////////////////
//
//  WinMain  
//
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{    
 DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), 0, (DLGPROC)DialogProc);
 return (0);
}

/////////////////////////////////////////////////////////////////////////////////
//
//  DialogProc  
//
LRESULT CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   HANDLE  hForder;
   DWORD   Result;
  
  switch (uMsg) 
    {
     case WM_COMMAND:   
         switch (LOWORD(wParam)) 
         {            
                case IDB_1:
                    MessageBox(hwnd,"10秒以内にC:\\Windowsフォルダ内の何らかのファイルを更新またはファイル名を変更した下さい。","説明",MB_OK);
                    //C:\Windowsフォルダ内のファイルを監視するハンドルを取得(フラグによってサブフォルダなども監視可能)
                    hForder=  FindFirstChangeNotification("C:\\Windows",FALSE,
                                                FILE_NOTIFY_CHANGE_FILE_NAME  |
                                                FILE_NOTIFY_CHANGE_ATTRIBUTES);
                   if (hForder!=INVALID_HANDLE_VALUE)
                   {
                     //監視開始
                     Result= WaitForSingleObject(hForder,10000);
                     if (Result==WAIT_TIMEOUT)
                         MessageBox(hwnd,"タイムアウト - 10秒の間、ファイルに変更はありませんでした。","失敗",MB_OK);
                     else if (Result==WAIT_OBJECT_0)  
                         MessageBox(hwnd,"チェンジ - フォルダ内の何らかのファイルが変更されました。-","成功",MB_OK);
                   }
                   //解放
                   FindCloseChangeNotification(hForder);
                   
                   break;
                case 2:
                    EndDialog(hwnd, 2); 
                    break;    
                default: return FALSE;    
         }
     default: return FALSE; 
   } 
 return TRUE;
}



ソースコード一式のダウンロード

capi_sample90.zip 1,412 バイト

動作環境

このサンプルは 「Windows98」及び「Microsoft Visual C++5.0」「Borland C++ Compiler 5.5」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。

Visual C++5.0でのコンパイル

VC5.0でサンプルをコンパイルする場合は新規プロジェクト(Win32Application)を作成後、各ファイルを追加してビルドしてください。

Borland C++ Compiler 5.5でのコンパイル

BCC5.5でサンプルをコンパイルする場合は「bcc32.exe」で*.c又は*.cppファイルをコンパイルします。リソースがある場合は「brc32.exe」で*resファイルを付与してください。

サンプルについて

このWindows APIサンプル集(C/C++版)は2000年頃にC/C++言語の学習の為に作成したものです。コードはエレガントではなく「初心者レベルのコーディング」です。仕事などの業務で利用する際にはエラー処理やメモリ解放などの再確認を必ずして下さい。





関連記事



公開日:2015年03月19日
記事NO:00546


この記事を書いた人

💻 ITスキル・経験
サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。

画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ
プチモンテ代表、アーティスト名:プチモンテ
🎵 音楽制作
BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~

オリジナル曲を始めました✨

YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte

【男性ボーカル】DA・KA・RA | 新たな明日が風と共に訪れる

【男性、女性ボーカル】時空を超越する先に | 時空と風の交響曲

【女性、男性ボーカル】絆 | 穏やかな心に奏でる旋律