C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

GetCurrentProcessについて


(過去ログ 4 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■4847 / inTopicNo.1)  GetCurrentProcessについて
  
□投稿者/ Ozy 二等兵(6回)-(2006/07/07(Fri) 17:26:16)
Ozy さんの Web サイト

分類:[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)
ぽぴ王子 さんの Web サイト

分類:[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)
Hongliang さんの Web サイト

分類:[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)
Ozy さんの Web サイト

分類:[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)
Ozy さんの Web サイト

分類:[C#] 

GetCurrentProcess云々というのはC#の話題ではないような気がするので、
一応解決ということで。

どうもありがとうございました!

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -