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

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

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

デスクトップの全ウィンドウのタイトル文字列を取得したい


(過去ログ 1 を表示中)

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

■963 / inTopicNo.1)  デスクトップの全ウィンドウのタイトル文字列を取得したい
  
□投稿者/ いば 准尉(28回)-(2005/08/03(Wed) 15:16:34)

分類:[C#] 


分類:[C#] 

【環境】Visual C#.NET

 WindowsXP home edtion
 Microsoft Visual C# .NET 69504-335-0000007-18085
 Crystal Reports for Visual Studio .NET AAP5G-JS00000-U7000B4

【問題】デスクトップの全ウィンドウをタイトル文字列を取得したい

 現在、親システムからDLL形式で呼ばれるコマンドを作成しています。
 親システムのメニューから[file]-[execute]-[Command_Name.DLL]で
 実行するイメージです。

 やりたい事は、コマンドの二重起動を禁止する事なのですが、じゃん
 ぬねっと様のサンプルソースを使ってもうまく実装することができません。

 ■[TIPS] 二重起動を禁止する
 http://jeanne.wankuma.com/tips/process/01-previnstance.html

 ■[TIPS] 二重起動を確実に禁止する
 http://jeanne.wankuma.com/tips/process/02-mutex.html

 理由は、親システムのプロセスを取得してしまっていて、コマンド自身の
 フォームを取得できないからです。

 そこで、少し苦しいですが、「同名タイトルのウィンドウが起動して
 いたら自分自身は起動しない」という方法を採ろうとして下記ソース
 を組んだのですが、これではトップレベルのウィンドウしか見つかり
 ません。

 foreach (Process p in Process.GetProcesses()) {
   if (p.MainWindowHandle != IntPtr.Zero) {
     Console.WriteLine(p.ProcessName + " : " + p.MainWindowTitle);
   }
 }

 どなたか、親子関係を無視して、現在Windowsデスクトップに表示されている
 全てのウィンドウを取得する方法をご存知でしたら、教えていただけますで
 しょうか。

 よろしくお願いします。


0
引用返信 編集キー/
■980 / inTopicNo.2)  Re[1]: 回避しました
□投稿者/ いば 少尉(30回)-(2005/08/05(Fri) 16:56:12)

分類:[C#] 

プログラムの二重起動を防ぎたいのが目的だったので、
とりあえずファイルの存在チェックで回避しました。
(ファイルが存在していれば起動していると見なすという感じ)
お騒がせしました。

0
引用返信 編集キー/
■981 / inTopicNo.3)  Re[2]: 回避しました
□投稿者/ いば 少尉(31回)-(2005/08/05(Fri) 16:56:54)

分類:[C#] 

 

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -