8

C#から、任意のエディターでテキストファイルを開き、カーソルを特定の行番号に自動的に移動するプロセスを起動したいと思います。

を使用してファイルを開くことができます

Process.Start(@"c:\myfile.txt");

しかし、そのファイルの特定の場所にカーソルを移動する方法がわかりません。


ソースコードで答える:

はい、notepad++を使用しました

private void openLog() {
            try {
                // see if notepad++ is installed on user's machine
                var nppDir = (string)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Notepad++", null, null);
                if (nppDir != null) {
                    var nppExePath = Path.Combine(nppDir, "Notepad++.exe");
                    var nppReadmePath = Path.Combine(yourDirectory,fileName );
                    var line = 20;
                    var sb = new StringBuilder();
                    sb.AppendFormat("\"{0}\" -n{1}", nppReadmePath, lineNo);
                    Process.Start(nppExePath, sb.ToString());
                } else {
                    string newPath = @"\\mySharedDrive\notpad++\bin\notepad++.exe";
                    Process.Start(newPath, @"\\" + filePath + " -n" + lineNo); // take exe from my shared drive
                }
            } catch (Exception e) {
                Process.Start(@"\\" + FilePath); // open using notepad
            }
        }
4

3 に答える 3

11

Notepad ++を入手すると、次のことができます。

    var nppDir = (string)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Notepad++", null, null);
    var nppExePath = Path.Combine(nppDir, "Notepad++.exe");
    var nppReadmePath = Path.Combine(nppDir, "readme.txt");
    var line = 20;
    var sb = new StringBuilder();
    sb.AppendFormat("\"{0}\" -n{1}", nppReadmePath, line);
    Process.Start(nppExePath, sb.ToString());

この例では、レジストリからn ++のインストールパスを取得し、exeおよびreadme.txtファイルへのパスをビルドし、20行目にカーソルを置いて独自のreadme.txtファイルを開きます。StringBuilderを使用すると、複数の追加を使用するよりも効率的です(SOのどこかで説明) )。

于 2012-12-07T00:59:50.107 に答える
2

ソリューションは、システムで開かれているプロセス/エディターに大きく依存します。そのエディターには、範囲の設定やカーソル位置の変更などの機能にアクセスするために使用できる開発者APIが必要です。たとえば、開いているエディターがMicrosoft Wordの場合、Word Interop APIを使用して、特定の位置に選択範囲を設定します。それぞれが独自のAPIを持っている(または外向きのAPIがまったくない)ため、「任意のエディター」でこれを行うための普遍的な方法はありません。

于 2012-12-07T00:51:02.463 に答える
1

おそらくあなたはこれを間違った方向に進んでいます。何を達成しようとしているのかわかりませんが、アプリケーションに属するエディターでテキストファイルを開く方がはるかに簡単と思います。おそらく、WYSIWYGエディターコントロールを備えた別のフォームです。そうすれば、カーソルがそのエディターのどこに移動するかを完全に制御できます。そうでなければ、実行可能なものには未知数が多すぎます。

于 2012-12-07T00:54:09.143 に答える