掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
OpenProcessによるハンドルの取得について (ID:49019)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
通りすがり様、take様、ご回答ありがとうございます。 >通りすがり様 >そもそもEnumProcessesが返す値はどうなっていますか? 参考にした過去ログのプログラムでは、ループに入る前にEnumProcessesを以下のように実行しています。 ループが実行されていると言うことは、ここでtrue(0以外?)が返っているのだと思います。 if not EnumProcesses(@ProcessIDs,SizeOf(ProcessIDs),Num4) then begin ShowMessage('EnumProcesses Failed!'); Exit; end; またこの前に以下の2行を追加し引数を確認したところ、それぞれ804と29374392でした。 (最初の@ProcessIDsについては、ポインタのキャストの仕方が良く分かりませんでした。) showmessage(IntToStr(SizeOf(ProcessIDs))); showmessage(IntToStr(Num4)); これについて変化を見たところ、SizeOf(ProcessIDs)は再起動してもexeから起動しても804で変化せず、 Num4は随時変化しました。また、その後ろの NumProcess := Num4 div SizeOf(DWORD); は、その時々の起動中のプロセス数を返します。 ProcessIDsが変化しないことが要因なのでしょうか?? >take様 >取得方法はMr.XRAY様のページが参考になるかと Mr.XRAY様のプロジェクトを参考にさせていただきました。 Mr.XRAY様のプロジェクトに包含されているexeファイルは、どれも正常に動作しました。 また、take様のご指摘通り、管理者権限で実行した場合とそうでない場合で、列挙されるプロセスは変化しました。 ただ、Mr.XRAY様のプロジェクトを自分の環境で開きコンパイルすると、プロセス名は全て C 一文字 (恐らくドライブレター?)になってしまいました。 氏のプロジェクトはWindows 7 U64(SP1) + Delphi XE Proということでしたが、私のDelphiは7なので、 コンパイラの問題によるということでしょうか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.