none
NotePad, WordPad の起動オプションを知りたい RRS feed

  • 質問

  • visual studio とは直接関係ないのですが、c# のプログラム中から、NotePad
    もしくは WordPad を呼び出そうとしています。その際、起動オプションも一緒
    に指定しようと思うのですが、


    メニューバーというのかな?、ウィンドウ左上のアイコンの右に、任意のファ
    イル名を表示させるようなオプションをご存じないですか?


    通常、両エディタでファイルを開くとファイル名がメニューバーに表示されます。

     

     

    NotePad の起動オプションに関しては一部説明されている方がいらっしゃいま
    したが、その中に、要求するオプションはありませんでした。

    2008年7月3日 11:10

回答

  • タイトル(キャプション)の内容だけ変えたいなら WinAPIのSetWindowTextあたりで変更できますが ・・・

    Processクラスなどから起動しておいて ProcessのMainWindowHandleをつかって SetWindowTextを呼び出せばいいようです

     

    Code Snippet

    private void button1_Click(object sender, EventArgs e)

    {

        System.Diagnostics.Process oPro = new System.Diagnostics.Process();

        oPro.StartInfo.FileName = "notepad.exe";

        oPro.StartInfo.Arguments = "..\\..\\sample.txt";

        oPro.Start();

        oPro.WaitForInputIdle();

        // ココで任意の文字列に変更

        SetWindowText(oPro.MainWindowHandle, "C#からこんにちは");

    }

    [DllImport("USER32.DLL", EntryPoint="SetWindowTextW", CharSet=CharSet.Unicode)]

    public static extern int SetWindowText( IntPtr hWnd, String strText );

     

     

    ただし『名前をつけて保存』や『上書き保存』などのファイル名は面倒見てくれません ・・・ 当たり前ですが

     

    メモ帳の起動オプションは /P /PT /A /Wの4種類のようですよ ・・・ バイナリエディタで見る限り

    /A /Wは Ansi/Unicodeのようです、/Pは印刷かな? /PTは不明です ・・・

    2008年7月3日 22:06

すべての返信

  •  custar さんからの引用

    NotePad の起動オプションに関しては一部説明されている方がいらっしゃいま
    したが、その中に、要求するオプションはありませんでした。

    メモ帳がそんな凝った作りになってるとは思えないなぁ…。

    その表示したいファイル名のファイルをどこかに作って、メモ帳の引数に渡すしか思い当たらないなぁ。

     

    メモ帳であれば開いたのを確認した後、実際のファイルは消しちゃうとかも手ですけど。排他されないので。

     

    #さらにダメなアイデアとしてSetWindowTextで書き換えるとか。色々と穴があるのでアレですが。
    2008年7月3日 13:54
    モデレータ
  • Azulean さん、毎度ありがとうございます。

     

    なるべくシンプルにやろうと思っていますが、

    両ソフトとも古いですから無理っぽいですね。

     

     

    2008年7月3日 15:21
  • タイトル(キャプション)の内容だけ変えたいなら WinAPIのSetWindowTextあたりで変更できますが ・・・

    Processクラスなどから起動しておいて ProcessのMainWindowHandleをつかって SetWindowTextを呼び出せばいいようです

     

    Code Snippet

    private void button1_Click(object sender, EventArgs e)

    {

        System.Diagnostics.Process oPro = new System.Diagnostics.Process();

        oPro.StartInfo.FileName = "notepad.exe";

        oPro.StartInfo.Arguments = "..\\..\\sample.txt";

        oPro.Start();

        oPro.WaitForInputIdle();

        // ココで任意の文字列に変更

        SetWindowText(oPro.MainWindowHandle, "C#からこんにちは");

    }

    [DllImport("USER32.DLL", EntryPoint="SetWindowTextW", CharSet=CharSet.Unicode)]

    public static extern int SetWindowText( IntPtr hWnd, String strText );

     

     

    ただし『名前をつけて保存』や『上書き保存』などのファイル名は面倒見てくれません ・・・ 当たり前ですが

     

    メモ帳の起動オプションは /P /PT /A /Wの4種類のようですよ ・・・ バイナリエディタで見る限り

    /A /Wは Ansi/Unicodeのようです、/Pは印刷かな? /PTは不明です ・・・

    2008年7月3日 22:06
  • redfox63 さん、サンプル コードありがとうございます。


     redfox63 さんからの引用

    タイトル(キャプション)の内容だけ変えたいなら WinAPI の SetWindowText あ
    たりで変更できますが ・・・

     

    Process クラスなどから起動しておいて Process の MainWindowHandle をつかっ
    て SetWindowText を呼び出せばいいようです


    おぉ、そんなものがあるなら、試しに使ってみます。


     redfox63 さんからの引用

    メモ帳の起動オプションは /P /PT /A /W の4種類


    覗 (のぞ) かれたんですね。ありがとうございます。
    こちらでも覗いてみました。確かにありますね。


     redfox63 さんからの引用

    /A /W は Ansi/Unicode のようです、/P は印刷かな? /PT は不明です ・・・


    /pt で印刷ジョブが走り出しました。


    WordPad も覗いてみましたが、こちらは /p, /pt しか見当たりませんでした。

     

    どちらも古くて、アンマネージなプログラムじゃなかったでしたっけ?
    余り期待し過ぎない方が良いようですね。

    2008年7月4日 3:21