2006年04月16日

ウィンドウの列挙

プログラミングのカテゴリがあるのに一度も投稿してなかった、、、。
というわけで一つくらい記事を投稿してみますw。
わかんない(めんどくさい)ところがあるので、誰かおせーて。
ウィンドウの列挙をしたいんですが、列挙するだけなら簡単。
↓であっさり子ウィドウまで取れます。

#include
#include

#define MAX_BUFFER 1024

BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) {
    char Buffer[MAX_BUFFER];
    if (GetWindowTextA(hwnd, Buffer, sizeof(Buffer))) {
        printf("\t%s\n",Buffer);
    } else {
        printf("\t''\n");
    }

    return TRUE;
}

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
    char Buffer[MAX_BUFFER];
    if (GetWindowTextA(hwnd, Buffer, sizeof(Buffer))) {
        printf("%s\n",Buffer);
    } else {
        printf("''\n");
    }
    
    EnumChildWindows(hwnd, EnumChildProc, 0);
    return TRUE;
}

int main (int argc, char *argv[]) {
    EnumWindows(EnumWindowsProc, 0);
    return 0;
}

コレだと親ウィンドウと子ウィンドウを列挙できます。
「親と子」の親子関係も表示できます(子にはタブがつく)。
でも、残念ながら「子と子」の親子関係が取れません。

IsChildを使えばSpy++みたいに綺麗なネスト構造
が作れるんだろうなぁ、、、と思いながらめんどくさいから
作ってません(エヘッ♪

なんとかシンプル&美しくプログラミングできませんかねぇ。
上手くやる方法がありそうな気がしますが、、、。

誰かおせーて。

posted by TOSSY at 15:05 | ☔ | Comment(0) | TrackBack(0) | プログラミング
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。