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

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

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

Re[9]: コントロールパネルを開く


(過去ログ 89 を表示中)

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

■52955 / inTopicNo.1)  コントロールパネルを開く
  
□投稿者/ りーあ (1回)-(2010/08/30(Mon) 16:30:08)

分類:[C#] 

Visual Studio 2005で、
C#を使ってコーディングしています。

Windows CE デバイスで作成しているのですが、
メイン画面(Form)にボタンをいくつか置き、
ボタンが押されるとコントロールパネルのある画面を開くような
プログラムを作りたいと思っています。

わかりにくいかと思うので、
簡単に説明すると、
Button1をクリックすると、コントロールパネルの
タスクバーとスタートメニューを開く
を開きたいです。

そこで、いろいろ調べた結果
System.Diagnostics.Process.Start("rundll32.exe","shell32.dll","Options_RunDLL 1");
という一行を入れればいいのでは?となりました。

ですが、どこに記述していいのかわからず
苦戦しています。

button1_Clickメソッドの中に記述してみたのですが、
エラーが2件出てしまいました。

'System.Diagnostics.Process.Start(System.Diagnostics.ProcessStartInfo)'に最も適しているオーバーロードメソッドには無効な引数がいくつか含まれています。

引数'1':'string'から'System.Diagnostics.ProcessStartInfo'に変換できません。

この2件なのですが、どこが間違っているのでしょうか?
また、コーディング自体が間違っているのでしょうか?

回答よろしくお願いいたします。
引用返信 編集キー/
■52958 / inTopicNo.2)  Re[1]: コントロールパネルを開く
□投稿者/ マサヤ (126回)-(2010/08/30(Mon) 17:02:00)
2010/08/30(Mon) 17:05:19 編集(投稿者)

エラーメッセージを見ますと引数を一つしか設定できない関数に3つも入ってるのはいけませんよ、ってことじゃないですか?
あと、引数が複数の場合(コンストラクタが異なる場合)は第一引数がSystem.Diagnostics.ProcessStartInfoという型になっていないといけないのではないのでしょうか?
private void button1_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("control.exe");
}
これでコンパネが開きます。
参照URL
http://dobon.net/vb/dotnet/process/opencontrolpanel.html
引用返信 編集キー/
■52959 / inTopicNo.3)  Re[1]: コントロールパネルを開く
□投稿者/ 魔界の仮面弁士 (1776回)-(2010/08/30(Mon) 17:10:09)
No52955 (りーあ さん) に返信
> System.Diagnostics.Process.Start("rundll32.exe","shell32.dll","Options_RunDLL 1");
Process.Start("rundll32.exe", "shell32.dll,Options_RunDLL 1"); ではなく?

> という一行を入れればいいのでは?となりました。
そもそも、Process.Start( string, string, string ) なメソッドは無いハズですが…。
http://msdn.microsoft.com/ja-jp/library/system.diagnostics.process.start%28VS.80%29.aspx
引用返信 編集キー/
■52960 / inTopicNo.4)  Re[2]: コントロールパネルを開く
□投稿者/ りーあ (2回)-(2010/08/30(Mon) 17:11:05)
2010/08/30(Mon) 17:11:57 編集(投稿者)
2010/08/30(Mon) 17:11:49 編集(投稿者)

マサヤさん
ありがとうございます。

> エラーメッセージを見ますと引数を一つしか設定できない関数に3つも入ってるのはいけませんよ、ってことじゃないですか?

タスクバーの画面だけでなく、
引数が一つの他の画面を開こうとしても
同じエラーが出てしまいます・・・。

> あと、引数が複数の場合(コンストラクタが異なる場合)は第一引数がSystem.Diagnostics.ProcessStartInfoという型になっていないといけないのではないのでしょうか?
System.Diagnostics.ProcessStartInfoの型というのは、
どのようにすればわかるのでしょうか?

> private void button1_Click(object sender, EventArgs e)
> {
> System.Diagnostics.Process.Start("control.exe");
> }
> これでコンパネが開きます。

この記述をさせていただきましたが、
同じエラーが出てしまいました・・・。
引用返信 編集キー/
■52962 / inTopicNo.5)  Re[3]: コントロールパネルを開く
□投稿者/ 魔界の仮面弁士 (1777回)-(2010/08/30(Mon) 17:16:56)
No52960 (りーあ さん) に返信
>> System.Diagnostics.Process.Start("control.exe");
> 同じエラーが出てしまいました・・・。

Process.Start( string ) という静的メソッドも使えません。この場合には

 Process.Start( ProcessStartInfo )
 Process.Start( string, string )

のいずれかで対応してください。(あるいはインスタンスメソッドで)
引用返信 編集キー/
■52964 / inTopicNo.6)  Re[2]: コントロールパネルを開く
□投稿者/ りーあ (3回)-(2010/08/30(Mon) 17:18:32)
魔界の仮面弁士 さん
ありがとうございます。

>>System.Diagnostics.Process.Start("rundll32.exe","shell32.dll","Options_RunDLL 1");
> Process.Start("rundll32.exe", "shell32.dll,Options_RunDLL 1"); ではなく?

この書き方でエラーが消えました!
ありがとうございました!
ですが・・・画面がButton1をクリックしても表示されません・・・
他に原因があるのでしょうか?

private void button1_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("rundll32.exe", "shell32.dll,Options_RunDLL 1");
}

と記述してあるだけです。
引用返信 編集キー/
■52965 / inTopicNo.7)  Re[4]: コントロールパネルを開く
□投稿者/ Blue (33回)-(2010/08/30(Mon) 17:41:29)
ファイル名を指定して実行で

control.exe

だけでコンパネが表示できるのであれば、引数はいらないということになります。
よって

Process.Start メソッド (String, String)
の第二引数はargment(=引数)なので、空文字を指定して

System.Diagnostics.Process.Start("control.exe", "");

で出来ませんか?
引用返信 編集キー/
■52966 / inTopicNo.8)  Re[3]: コントロールパネルを開く
□投稿者/ 魔界の仮面弁士 (1778回)-(2010/08/30(Mon) 17:45:55)
No52964 (りーあ さん) に返信
> ですが・・・画面がButton1をクリックしても表示されません・・・
であれば、その環境では rundll32.exe shell32.dll,Options_RunDLL 1 が
サポートされていないのでしょう。そのコマンドで起動できる(であろう)という情報は、
どこから得たものなのでしょうか?


「コントロールパネルのある画面」というのが何を指しているのかが分かりませんが、
開きたい内容によって、指定すべき文字列も異なりますし、そもそも、
使用可能なコントロールパネルのアイテムは、デバイスによっても異なります。

とりあえず、一般的なアイテムであればこういった指定が可能です。
http://www.xs4all.nl/~itsme/projects/xda/xda-controlpanel.html
http://analyzer.cocolog-nifty.com/bottle/2008/02/post_1d5d.html

たとえば手元の環境では、下記のような呼び出しが行えました。

 // メモリ カード
 Process.Start(@"\Windows\ctlpnl.exe", "cplmain.cpl,4,1");

 // 実行中のプログラム一覧
 Process.Start(@"\Windows\ctlpnl.exe", "cplmain.cpl,4,2");
引用返信 編集キー/
■52967 / inTopicNo.9)  Re[5]: コントロールパネルを開く
□投稿者/ 魔界の仮面弁士 (1779回)-(2010/08/30(Mon) 17:47:45)
No52965 (Blue さん) に返信
> System.Diagnostics.Process.Start("control.exe", "");
> で出来ませんか?

標準的なデバイスでは、control.exe は搭載されていないと思います。
引用返信 編集キー/
■52974 / inTopicNo.10)  Re[5]: コントロールパネルを開く
□投稿者/ りーあ (5回)-(2010/08/31(Tue) 08:50:49)
Blue さん
ありがとうございます

> ファイル名を指定して実行で
>
> control.exe
>
> だけでコンパネが表示できるのであれば、引数はいらないということになります。
> よって
>
> Process.Start メソッド (String, String)
> の第二引数はargment(=引数)なので、空文字を指定して
>
> System.Diagnostics.Process.Start("control.exe", "");
>
> で出来ませんか?

この書き方で、エラーが消えました。
ありがとうございました!
引用返信 編集キー/
■52975 / inTopicNo.11)  Re[4]: コントロールパネルを開く
□投稿者/ りーあ (7回)-(2010/08/31(Tue) 09:01:41)
魔界の仮面弁士 さん
ありがとうございます。

> であれば、その環境では rundll32.exe shell32.dll,Options_RunDLL 1 が
> サポートされていないのでしょう。そのコマンドで起動できる(であろう)という情報は、
> どこから得たものなのでしょうか?

Windows CEデバイスで作ってみろと言われ
そこからいろいろ調べていきました。
http://dobon.net/vb/dotnet/process/opencontrolpanel.html
このサイトを見てそのまま写した形になりました。

> 「コントロールパネルのある画面」というのが何を指しているのかが分かりませんが、
> 開きたい内容によって、指定すべき文字列も異なりますし、そもそも、
> 使用可能なコントロールパネルのアイテムは、デバイスによっても異なります。

ある画面というのは
タスクバーの設定画面
サウンドの設定画面
デバイス名の設定画面
パワーマネージメントの設定画面
画面の設定画面
輝度の設定画面
所有者情報の設定画面
の7つになります。
いくつもあったのである画面という呼び方をさせてもらいました。

> とりあえず、一般的なアイテムであればこういった指定が可能です。
> http://www.xs4all.nl/~itsme/projects/xda/xda-controlpanel.html
> http://analyzer.cocolog-nifty.com/bottle/2008/02/post_1d5d.html
>
> たとえば手元の環境では、下記のような呼び出しが行えました。
>
>  // メモリ カード
>  Process.Start(@"\Windows\ctlpnl.exe", "cplmain.cpl,4,1");
>
>  // 実行中のプログラム一覧
>  Process.Start(@"\Windows\ctlpnl.exe", "cplmain.cpl,4,2");

ありがとうございます!
ここも調べてみたいと思います。
引用返信 編集キー/
■52976 / inTopicNo.12)  Re[6]: コントロールパネルを開く
□投稿者/ りーあ (8回)-(2010/08/31(Tue) 09:05:21)
魔界の仮面弁士 さん

> ■No52965 (Blue さん) に返信
>>System.Diagnostics.Process.Start("control.exe", "");
>>で出来ませんか?
>
> 標準的なデバイスでは、control.exe は搭載されていないと思います。

そうなんですか!
もともとコントロールパネルは表示しないようになっていましたが
説明のために使用させていただきました。

画面の設定画面を表示する為にこの書き方を使用しました。
エラーが出なくなったので、書き方は正しいのだと思いますが
やはり画面が表示されません・・・
Windows CEだからでしょうか?
引用返信 編集キー/
■52977 / inTopicNo.13)  Re[7]: コントロールパネルを開く
□投稿者/ 魔界の仮面弁士 (1780回)-(2010/08/31(Tue) 10:24:06)
No52976 (りーあ さん) に返信
>>標準的なデバイスでは、control.exe は搭載されていないと思います。
> そうなんですか!
Windows CE のバージョンは何でしょうか?

手元の Pocket PC や Windows Mobile 6 環境を見る限りでは、
ctlpnl.exe はありましたが、control.exe は見当たりませんでした。


> エラーが出なくなったので、書き方は正しいのだと思いますが
> やはり画面が表示されません・・・
存在しない exe を Process.Start すると、Win32Exception の例外が
発生するかと思いますが、そのような気配もありませんか?

例外が出ないなら、そちらの環境には control.exe があるのかも知れません。
とはいえそれで画面が表示されないところを見ると、今回の目的には使えない
(もしくは、呼び出し方が間違っている)のかも知れませんが…。
http://msdn.microsoft.com/en-us/library/ms838639.aspx
http://msdn.microsoft.com/en-us/library/ms926152.aspx
引用返信 編集キー/
■52979 / inTopicNo.14)  Re[8]: コントロールパネルを開く
□投稿者/ りーあ (10回)-(2010/08/31(Tue) 10:56:58)
No52977 (魔界の仮面弁士 さん) に返信
> ■No52976 (りーあ さん) に返信
> >>標準的なデバイスでは、control.exe は搭載されていないと思います。
>>そうなんですか!
> Windows CE のバージョンは何でしょうか?

Windows CE 5.0を使用しています。

>>エラーが出なくなったので、書き方は正しいのだと思いますが
>>やはり画面が表示されません・・・
> 存在しない exe を Process.Start すると、Win32Exception の例外が
> 発生するかと思いますが、そのような気配もありませんか?

エラー表示には何も表示されませんでした。

> 例外が出ないなら、そちらの環境には control.exe があるのかも知れません。
> とはいえそれで画面が表示されないところを見ると、今回の目的には使えない
> (もしくは、呼び出し方が間違っている)のかも知れませんが…。

Process.Start(@"\Windows\ctlpnl.exe", "cplmain.cpl,4");
この書き方で、画面を表示することが出来ました!
そこで質問なのですが、タスクバーの設定は
開くことが出来ないということでしょうか?

また、URLを貼ってくださった
http://www.xs4all.nl/~itsme/projects/xda/xda-controlpanel.html
"mycpl.cpl,2"という書き方では表示されませんでした・・・
引用返信 編集キー/
■52981 / inTopicNo.15)  Re[6]: コントロールパネルを開く
□投稿者/ りーあ (11回)-(2010/08/31(Tue) 11:30:22)
Windowsアプリケーションで作成してみました。
System.Diagnostics.Process.Start("mmsys.cpl", "");
これでやってみるとサウンドの設定画面が表示されました。
Windows CEで作成したのがいけなかったみたいです。

ですが、Windows CEで作れといわれたので
なんとかしなければなりません・・・

また、Windows CEだと自分が考えているものが
表示されません・・・
サウンド設定では、ボリュームの設定をしたいのですが、
Windows CEだとボリュームの設定は表示されていません。
Windows アプリケーションだと表示されているのですが・・・
それは仕様なのでしょうか?
引用返信 編集キー/
■52996 / inTopicNo.16)  Re[7]: コントロールパネルを開く
□投稿者/ りーあ (13回)-(2010/08/31(Tue) 17:30:43)
> また、Windows CEだと自分が考えているものが
> 表示されません・・・
> サウンド設定では、ボリュームの設定をしたいのですが、
> Windows CEだとボリュームの設定は表示されていません。
> Windows アプリケーションだと表示されているのですが・・・
> それは仕様なのでしょうか?

この件に関しては解決いたしました。

タスクバーと「スタート」メニューのプロパティ
の画面は、開くことは出来ないのでしょうか?

Process.Start("rundll32.exe", "shell32.dll,Options_RunDLL 1");
この一文で表示されると思っていたのですが、
実行してみると、予期せぬエラーが表示されてしまいます。
原因はどこにあるのでしょうか?

よろしくお願い致します。
引用返信 編集キー/
■53005 / inTopicNo.17)  Re[8]: コントロールパネルを開く
□投稿者/ りーあ (14回)-(2010/09/01(Wed) 10:24:19)
おはようございます。

> タスクバーと「スタート」メニューのプロパティ
> の画面は、開くことは出来ないのでしょうか?
>
> Process.Start("rundll32.exe", "shell32.dll,Options_RunDLL 1");
> この一文で表示されると思っていたのですが、
> 実行してみると、予期せぬエラーが表示されてしまいます。
> 原因はどこにあるのでしょうか?

実行すると、Main画面が表示され、
Button4(タスクバーと「スタート」メニューのプロパティ表示)をクリックすると
予期せぬエラーが表示されます。
おそらく、開けないということを言っているのだと思うのですが、
どこが原因で開けないのかがわかりません。


予期せぬエラーを下に記述しておきます。
Initiallzation_Utilityはプロジェクト名です。

Error
An unexpected error has occurred in Initiallzation_Utility.exe.
Select Quit and then restart this program,or select Details for more information.

Detailsを選択すると以下のエラー詳細が表示されます。

Error
Initiallzation_Utility.exe
Win32Exception

at
System.Diagnostics.Process.StartWithShellExecuteEX()
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start()
at
Initialization_Utility.Main.button4_Click()
at
System.Windows.Dorms.Control.OnClick()
at
System.Windows.Forms.Button.OnClick()
at
System.Windows.Forms.ButtonBase.WnProc()
at
System.Windows.Forms.Control._InternalWnroc()
at
Microsoft.AGL.Forms.EVL.EnterMainLoop()
at
System.Windows.Forms.Application.Run()
at Initialization_Utility.Program.Main()
引用返信 編集キー/
■53023 / inTopicNo.18)  Re[9]: コントロールパネルを開く
□投稿者/ りーあ (16回)-(2010/09/01(Wed) 15:35:51)
>>タスクバーと「スタート」メニューのプロパティ
>>の画面は、開くことは出来ないのでしょうか?

この件に関しては、
出来ないということになりましたので、
解決済みにさせていただきます。
ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -