C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
GetCurrentProcessについて
(過去ログ 4 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 5 記事 (1 - 5 表示)] <<
0
>>
■4847
/ inTopicNo.1)
GetCurrentProcessについて
▼
■
□投稿者/ Ozy
二等兵(6回)-(2006/07/07(Fri) 17:26:16)
分類:[C#]
分類:[C#]
こんにちは。
GetCurrentProcessについて質問があります。
実行中のプロセスハンドルを取得するのに、
System.Diagnostics.Process.GetCurrentProcess().Handle
と、
kernel32.dllに含まれるAPI
GetCurrentProcess()
がありますが、ボタンをクリックするとこれらで取得した
ハンドルを表示するプログラムを書いてみると、
前者は取得ごとに値が違っていて、後者は必ず-1が返ってきます。
となると、DuplicateHandleのようにプロセスハンドルが要求される
APIを使用するにはどのようにすれば良いのでしょうか?
ネットで調べる限り、どちらでも良いような記述ばかりなので
悩んでおります。
よろしくお願いいたします。。。
0
引用返信
編集キー/
編集
■4851
/ inTopicNo.2)
Re[1]: GetCurrentProcessについて
▲
▼
■
□投稿者/ ぽぴ王子
一等兵(26回)-(2006/07/07(Fri) 17:48:29)
分類:[C#]
こんにちは。
私もあまり詳しくないので、他の方の正確な回答を待った方がいいかもしれませんが、MS
DN で確認する限りでは DuplicateHandle を使うときのハンドルは GetCurrentProcess
の戻り値を使うということが書かれています。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdllpro/html/_win32_getcurrentprocess.asp
また、WIN32API へ渡すハンドルは WIN32API で取得するのが吉かと。
(GetCurrentProcess().Handle が信用できないわけではないですが、なにぶんマネージ
ドの世界の話ですし)
0
引用返信
編集キー/
編集
■4852
/ inTopicNo.3)
Re[1]: GetCurrentProcessについて
▲
▼
■
□投稿者/ Hongliang
軍曹(63回)-(2006/07/07(Fri) 17:56:27)
分類:[C#]
そんなもんです。別に変わったからどうこうということはありません。
ただし、Process.GetCurrentProcess で取得した Process のハンドルは、その Process オブジェクトが Dispose されたときに無効になる点に注意。
例えば
IntPtr GetHandle() {
return Process.GetCurrentProcess().Handle;
}
なんてメソッドは、GetCurrentProcess()で取得された Process オブジェクトがフォーカスが外れてしばらくしたら GC によって回収され、そこで Dispose されてハンドルが無効になります。
// 取得直後は有効なのでバグの元。
0
引用返信
編集キー/
編集
■4855
/ inTopicNo.4)
Re[2]: GetCurrentProcessについて
▲
▼
■
□投稿者/ Ozy
二等兵(7回)-(2006/07/07(Fri) 19:24:14)
分類:[C#]
なるほど・・・。
となると、WIN32APIのGetCurrentProcess()で-1が返ってくるのが
気になります。ハンドルが負の値で返ってくるのはおかしいような
気がするのですが、別に問題ないのでしょうか?
この辺の疑問を持った経緯というのは、
CreaetPipe,DuplicateHandleで
入出力パイプを作って、
CreateProcessで別のプロセスを実行したあと
ReadFileで出力を取得しようとするとフリーズする現象が起こって
しまったため原因を調べていたところ、GetCurrentProcessで得た値が
-1になっていることに気付いて、ここが問題かな?と思ったのです。
0
引用返信
編集キー/
編集
■4857
/ inTopicNo.5)
Re[3]: GetCurrentProcessについて
▲
▼
■
□投稿者/ Ozy
二等兵(8回)-(2006/07/07(Fri) 20:40:13)
分類:[C#]
GetCurrentProcess云々というのはC#の話題ではないような気がするので、
一応解決ということで。
どうもありがとうございました!
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-