- PR -

VisualStudio2005にてC#開発について

1
投稿者投稿内容
kata
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 69
投稿日時: 2008-12-22 16:34
kataと申します。

C#に関してご教示いただきたいと思います。

◆開発環境
WindowsXP Pro
VisualStudio2005

にてWindowsCE5.0アプリケーションを作成しているのですが、
以下の内容でつまずいてしまいました。

◆ソース
using System;
using System.Diagnostics;

public class EnumWindows
{
static void Main()
{
foreach (Process p in Process.GetProcesses())
{
if (p.MainWindowHandle != IntPtr.Zero)
{
Console.WriteLine(p.ProcessName
+ " : " + p.MainWindowTitle);
}
}
// 出力例:
// vim : VIM - C:\\\\c#\\\\tips\\\\enumwin\\\\enumwin.cs
// explorer : C:\\\\bin
// NetCaptor : NetCaptor
// OUTLOOK : 予定表 - Microsoft Outlook
// cmd : コマンド プロンプト - enumwin
// iexplore : @IT:Insider.NET - Microsoft Internet Explorer
}
}

起動中プロセスを表示させたいのですが、
ソリューションのビルドをすると以下のエラーが表示されてしまいました。

エラー 1 'System.Diagnostics.Process' に 'GetProcesses' の定義がありません。
エラー 2 'System.Diagnostics.Process' に 'ProcessName' の定義がありません。
エラー 3 'System.Diagnostics.Process' に 'MainWindowTitle' の定義がありません。

新規プロジェクト作成で、「WindowsCE5.0」を選んだときだけエラーとなり、
「Windows」を選んだときは問題なくソリューションのビルドができました。

何が原因で上記エラーが表示されるのか分からず困っています。
ご教示の程よろしくお願い致します。

[ メッセージ編集済み 編集者: kata 編集日時 2008-12-22 16:35 ]
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-12-22 17:01
ヘルプ読むとプラットフォームに「Windows CE」とは書いてありませんね。
kata
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 69
投稿日時: 2008-12-22 17:59
burton999様
情報ありがとうございます。

引用:

ヘルプ読むとプラットフォームに「Windows CE」とは書いてありませんね。



以下のサイトでよろしかったでしょうか?
http://msdn.microsoft.com/ja-jp/library/1f3ys1f9(VS.80).aspx

確かにプラットフォームに「WindowsCE」とは記載されていませんでした・・・。

困りました・・・。

それでは質問の仕方を変えさせていただきます。
やりたいことは、WindowsCE5.0でIEの2重起動を防止したいと思っています。

以下のサイトを参考に作成していました。
http://dobon.net/vb/dotnet/process/checkprevinstance.html
http://jeanne.wankuma.com/tips/csharp/process/previnstance.html

プログラム構想としては、
@プロセス確認
AIEのプロセスが既に起動中のときはBへ。起動していないときはCへ
B起動中のIEをアクティブにする。
CIEを起動させる
DプログラムEXIT

といった流れを考えていました。

@のプロセス確認(GetProcesses)がWindowsの仕様により不可能ということですので、
他に代替案はどのような方法がありますでしょうか?

C#自体の開発に携わって間もないのでアイデアが浮かびません。
些細なことでも構いませんのでアドバイスをいただければ幸いです。

よろしくお願い致します。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-12-22 18:07
二重起動を確実に禁止する
http://jeanne.wankuma.com/tips/csharp/process/mutex.html

は読まれましたでしょうか?
System.Threading.MutexはWindowsCEでもサポートしているようですね。
nas
会議室デビュー日: 2008/08/01
投稿数: 7
投稿日時: 2008-12-23 11:35
以下のサンプルが参考になりませんでしょうか?
Microsoft .NET Compact Framework ベースのプロセス マネージャ アプリケーションの作成

足りない所は、WindowsCEのAPIを探すしかないと思います。
(ウィンドウ前面表示は SetForegroundWindow かな?)

尚、APIの定義を探す時はここが便利そうです。
PInvoke.net
kata
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 69
投稿日時: 2008-12-24 17:30
burton999様、nas様

情報ありがとうございました。

引用:

http://jeanne.wankuma.com/tips/csharp/process/mutex.html

Microsoft .NET Compact Framework ベースのプロセス マネージャ アプリケーションの作成

PInvoke.net



上記URLを参考にさせていただき、
なんとか形にしてみたいと思います。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)