Da C#, voglio avviare un processo che apre un file di testo in qualsiasi editor e sposta automaticamente il cursore su un determinato numero di riga.Come avviare un processo che apre un file di testo in qualsiasi editor e sposta automaticamente il cursore su un determinato numero di riga?
posso aprire un file utilizzando
Process.Start(@"c:\myfile.txt");
ma io non so come per spostare il cursore nella posizione specifica in quel file.
risposta con il codice sorgente:
sì, ho usato 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
}
}
L'unico modo in cui penso che questo sia possibile è con l'automazione a livello di input del driver della tastiera, facendo presupporre che l'editor scenda di una riga per ogni freccia verso il basso premuta. Puoi dare un'occhiata a http://www.autohotkey.com/ per che il blocco note –
ha la funzione "vai alla riga" finché il ritorno a capo automatico è disabilitato. Ciò richiederà ancora l'invio dell'input da tastiera per l'elaborazione, il che fa schifo. Se stai usando Notepad ++, consulta http://superuser.com/questions/290409/opening-a-text-file-at-a-certain-line-shortcut. Notepad ++ sembra avere un arg di linea di comando che lo aprirà su una linea specifica. –
qualsiasi soluzione finale con codice sorgente completo? Forse anche usando Notepad ++ e UltraEdit. – Kiquenet