現在走っているプログラム(WIN32 API)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
オカピーα
記事: 120
登録日時: 8年前

現在走っているプログラム(WIN32 API)

#1

投稿記事 by オカピーα » 8年前

おはようございます。
WIN32 APIで、現在実行中のプログラムを列挙するにはどうしたらいいのでしょう?
誰か教えてください
C,C++,C#,これらを極めることを「3C政策」と言う

アバター
パコネコ
記事: 139
登録日時: 9年前
住所: 大阪

Re: 現在走っているプログラム(WIN32 API)

#2

投稿記事 by パコネコ » 8年前

勘違いでしたら申し訳ありません。スルーしていただいて結構です。
もしかして、タスクマネージャーでいいんでしょうか?
一応正しい出し方として特定のボタンを同時押しで出てきてくれます。
(正直言って裏でうごいている分は、多すぎてどれがどれだかわかりませんが・・・)
「Ctrl+Shift+Esc 」
http://ja.wikipedia.org/wiki/Windows_%E ... 3%E3%83%BC
↑タスクマネージャーのウィキ
ニャン!!\(゜ロ\)(/ロ゜)/

non
記事: 1097
登録日時: 9年前

Re: 現在走っているプログラム(WIN32 API)

#3

投稿記事 by non » 8年前

検索したらこんなページを見つけました。
http://support.microsoft.com/kb/175030/ja
中身はわかりません。
non

たろ

Re: 現在走っているプログラム(WIN32 API)

#4

投稿記事 by たろ » 8年前

以前、タスクマネージャっぽいアプリを自作しようとして途中で放り出したことがありました。。
その時ネットで調べた情報で、WinXPでの話ですが参考までに。

「現在走っているプログラムを列挙」は、「現在実行中のプロセス一覧」という意味でしょうか。

プロセス一覧を取得する方法としてマイクロソフトが正式にオススメしているのは、
nonさんのリンクの通りだと思います。
(ToolHelp32ライブラリまたはPSAPIライブラリを使う方法)

ただ、タスクマネージャ相当の情報を得たい場合、これらのライブラリだとけっこう面倒です。

標準のタスクマネージャや、その他の同様のフリーソフト等は、NtQuerySystemInformation
という非公式APIを使っていると思われます。ntdll.dllに入っているこの関数、個人的に試しに
使ってみたところ、一気にいろいろな情報が取得できて、まさにタスクマネージャのためにある
関数という感じでした。なぜ非公式なのかはわかりません。

あと、私が引っかかった点ですが、EnablePrivilege関数でSE_DEBUG_NAME特権を有効に
しないと、情報を取得できないプロセスがありました。
http://dixq.net/forum/viewtopic.php?f=3&t=6984

YuO
記事: 941
登録日時: 9年前
住所: 東京都世田谷区

Re: 現在走っているプログラム(WIN32 API)

#5

投稿記事 by YuO » 8年前

たろ さんが書きました:標準のタスクマネージャや、その他の同様のフリーソフト等は、NtQuerySystemInformation
という非公式APIを使っていると思われます。ntdll.dllに入っているこの関数、個人的に試しに
使ってみたところ、一気にいろいろな情報が取得できて、まさにタスクマネージャのためにある
関数という感じでした。なぜ非公式なのかはわかりません。
非公開ではないと思いますが,利用は非推奨だとは思います (APIの先頭にそう書いてあるので)。
MSDN: NtQuerySystemInformation function

Ntなんとか,というAPIは大抵DDK用の,低レベルAPIになります (NtCreateFile API等)。
Device Driver向けのAPIであるが故に,SDKには入っていないのだと思いますよ。

オカピーα
記事: 120
登録日時: 8年前

Re: 現在走っているプログラム(WIN32 API)

#6

投稿記事 by オカピーα » 8年前

NtQuerySystemInformation

このライブラリの使い方がサッパリです(笑)
どなたかご教授ください
C,C++,C#,これらを極めることを「3C政策」と言う

オカピーα
記事: 120
登録日時: 8年前

Re: 現在走っているプログラム(WIN32 API)

#7

投稿記事 by オカピーα » 8年前

僕の意図としては、今指定のウィンドウを透明化するプログラムを作っていまして、この「ウィンドウを指定する」というところで、現在走っているプログラムのウィンドウの名前を全て取得し、ユーザーに選ばせる、というのを想定しています。
どうしたらいいですか?
C,C++,C#,これらを極めることを「3C政策」と言う

ISLe
記事: 2648
登録日時: 9年前
連絡を取る:

Re: 現在走っているプログラム(WIN32 API)

#8

投稿記事 by ISLe » 8年前

EnumWindows APIでウィンドウを列挙できます。

アバター
沖 滉均
記事: 237
登録日時: 9年前
住所: K県F市

Re: 現在走っているプログラム(WIN32 API)

#9

投稿記事 by 沖 滉均 » 8年前

オカピーさん、この件には関係ありませんが前のトピックでも指摘した点です。
いくつかのトピック未解決状態ですが解決していないのでしょうか?
解決しない状態で次々とトピを立てるのはあまりよろしくない行為です。
もしくは前のトピでも書きましたが、解決済みなら解決チェックをしてください。
There is no royal road to learning.
codeタグで指定できる言語
画像

閉鎖

“C言語何でも質問掲示板” へ戻る