はじめまして。ヒサと申します。
Win2000/VC++6.0を使って、MFCで開発しています。
Windowsタスクマネージャのアプリケーション画面に出ているような
アプリケーション(タスク)の一覧を取得するには、
どのような方法があるでしょうか?
どなたかご教授願いますでしょうか。
よろしくお願いします。
EnumWindows で過去のログを検索してみましょう。
概要はMSDNを参照してください。
Bunさんありがとうございます。
もう少し教えてください。
EnumWindowsパラメータのコールバック関数内で
アプリケーション(タスク)の一覧を取得するのでしょうか?
どのような方法で行うのでしょうか?
単純にコールバック関数をカウントすると大きな値になってしまいます。
よろしくお願いします。
EnumProcesses()、 EnumProcessModules()、 GetModuleFileNameEx()、
GetModuleBaseName()
このあたりを使うようです。
やったことがないので、できるかどうかわかりませんが(自信なし)
NTの例が下記のページで紹介されています。
http://www.microsoft.com/japan/support/kb/articles/J041/6/32.htm
>EnumWindowsパラメータのコールバック関数内で
>アプリケーション(タスク)の一覧を取得するのでしょうか?
EnumWindowsは,トップレベルウィンドウを列挙するAPIです。
疑似コードを書くと,
BOOL EnumWindows(WNDENUMPROC ep, LPARAM lp)
{
for (全てのトップレベルウィンドウについて) {
if (!(*ep)(あるトップレベルウィンドウのハンドル, lp)) return FALSE;
}
return TRUE;
}
ということを行っています。
タスクというのは,
・OWNERがいない(GetWindow(hWnd, GW_OWNER) == NULL))
・可視(IsWindowVisible(hWnd) == TRUE)
・タイトル有り(GetWindowTextLength(hWnd) > 0)
の条件を満たす物ですから,それを満たすウィンドウをコールバック中で記録してやれば
よいです。
>単純にコールバック関数をカウントすると大きな値になってしまいます。
何をやったのでしょう……?
>NTの例が下記のページで紹介されています。
えーっと,KB JP175030(旧 J041632)では,タスクの列挙はほとんど扱っていないんです
よね……。
ここのコードはGetVersionExでプラットフォームをチェックしているので,95系・NT系ど
ちらでも動きます。
ちなみに,ToolHelp APIはNT系でもWindows 2000からサポートされるようになったので,
NT 4.0及びそれ以前のOSを切り捨てればToolHelpのみで列挙可能です。
Bunさん、YuOさんありがとうございました。
YuOさんの方法でうまく動作しました。
>ToolHelp APIはNT系でもWindows 2000からサポートされるようになったので,
>NT 4.0及びそれ以前のOSを切り捨てればToolHelpのみで列挙可能です。
ふーん、そうなんですか。
解決後ですけど
このような情報はどちらから取得されているのでしょうか?
>このような情報はどちらから取得されているのでしょうか?
どこかの掲示板かMLでみかけたのだと思います。
すでにどこから,などの事は忘れましたが,確認はMSDN引けばできますし。
CreateToolhelp32Snapshot
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/toolhelp_5450.asp
> Windows NT/2000/XP: Included in Windows 2000 and later.
> Windows 95/98/Me: Included in Windows 95 and later.
Yu0さん
>どこかの掲示板かMLでみかけたのだと思います。
そういうことですね。
>> Windows NT/2000/XP: Included in Windows 2000 and later.
了解です。
情報ありがとうございました。
>タスクというのは,
>・OWNERがいない(GetWindow(hWnd, GW_OWNER) == NULL))
>・可視(IsWindowVisible(hWnd) == TRUE)
>・タイトル有り(GetWindowTextLength(hWnd) > 0)
>の条件を満たす物ですから
すみません、もーいっちょ。m(__)m
この条件はどこで見つけられたのでしょうか?
>この条件はどこで見つけられたのでしょうか?
こっちは書籍です。
Win32 プログラミングテクニック VC++5.0対応
油谷実紀・平見知久著 秀和システム ISBN4-87966-752-8
Knowledge Base等の公式の物は探したんですが,見つかりませんでした。
>Knowledge Base等の公式の物は探したんですが,見つかりませんでした。
わざわざ、すみません。
ありがとうございました。m(__)m