- PR -

プリンタとFAXフォルダを開く

投稿者投稿内容
未記入
会議室デビュー日: 2008/05/19
投稿数: 7
投稿日時: 2008-09-04 19:37
プリンタとFAXフォルダというフォルダーがコントロールパネル以下に
在ると思うのですが、これを開く方法はどうすれば良いのでしょうか?

Environment.SpecialFolder 列挙体 のメンバーも調べて
見たのですが、プリンタとFAXフォルダはもちろん、
コントロールパネルのエントリーも見当たりません。

何か情報等お持ちの方がいらっしゃったら、
教えてください。

言語:C#
環境:.Net Framework2.0
w033
会議室デビュー日: 2008/09/04
投稿数: 1
投稿日時: 2008-09-04 20:49
こんにちは。

コンパネの本体は、フォルダではなく「c:\WINDOWS\system32」にある
「control.exe」と、拡張子「cpl」のファイルです。
(cplはすべてsystem32というわけではないらしいですが)
プリンタとFAXフォルダなら以下のコマンドで開けますよ。

c:\WINDOWS\system32\control.exe printers

# Windows2000以降のOS。MEは不明。
#「c:\WINDOWS」フォルダ名は適当に読み変えてください。
未記入
会議室デビュー日: 2008/05/19
投稿数: 7
投稿日時: 2008-09-04 21:13
w033さん語返信有難うございます。

foreach (Environment.SpecialFolder sp in Enum.GetValues(typeof(Environment.SpecialFolder)))
{
  if (sp.ToString() == "System")
  {
    string sys32Path = Environment.GetFolderPath(sp);
    string program  = sys32Path + @"\\\\control.exe";

    Process extProcess = new Process();
    extProcess.StartInfo.FileName = program;
    extProcess.StartInfo.Arguments = "printers"
    extProcess.Start(); //プロセス開始
    break;
  }
}

とりあえず、こんな感じで対処しましたが、
もっと洗練された実装方法は無いのでしょうかね?

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-09-05 03:53
引用:

未記入さんの書き込み (2008-09-04 21:13) より:

もっと洗練された実装方法は無いのでしょうかね?


どのあたりが気になるのかを書いてくださらないと良くわからないです。

引用:

foreach (Environment.SpecialFolder sp in Enum.GetValues(typeof(Environment.SpecialFolder)))
{
  if (sp.ToString() == "System")


何だか回りくどいことをしていますね。 文字列 System 決めうちにするくらいなら意味がないように思えます。

引用:

string program  = sys32Path + @"\\\\control.exe";


System.IO.Path.Combine メソッドを使用します。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Azulean
大ベテラン
会議室デビュー日: 2008/01/04
投稿数: 123
お住まい・勤務地: 大阪府
投稿日時: 2008-09-05 06:59
プリンタとFAXのウィンドウが開くだけなら、次のコマンドを実行することでもできそうですね。

explorer ::{2227A280-3AEA-1069-A2DE-08002B30309D}
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-09-05 09:09
shell:PrintersFolder

これも使えるのかな?
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2008-09-05 12:52
こんにちは。

引用:

未記入さんの書き込み (2008-09-04 21:13) より:
とりあえず、こんな感じで対処しましたが、
もっと洗練された実装方法は無いのでしょうかね?



COMの参照設定で
「Microsoft Shell Controls And Automation」を追加しておいて

こんな感じはどうですか?

コード:

Shell32.Shell shell = new Shell32.ShellClass();
shell.Open(Shell32.ShellSpecialFolderConstants.ssfPRINTERS);




[ メッセージ編集済み 編集者: Tdnr_Sym 編集日時 2008-09-05 12:57 ]
未記入
会議室デビュー日: 2008/05/19
投稿数: 7
投稿日時: 2008-09-06 02:05
じゃんぬねっとさん。

>どのあたりが気になるのかを書いてくださらないと良くわからないです。

  foreach (Environment.SpecialFolder sp in Enum.GetValues(typeof(Environment.SpecialFolder)))
  {
    if (sp.ToString() == "System")

正にここですね。Environment.SpecialFolder から "System" を直接
とる方法は同記述すれば良いのでしょうか?


Tdnr_Symさん。
「Microsoft Shell Controls And Automation」
まさにこれがベストです。

皆さん。有難う御座います。

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