好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#实现txt定位指定行完整实例

本文实例讲述了C#实现txt定位指定行的方法。分享给大家供大家参考。具体实现方法如下:

?

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Diagnostics;

using System.IO;

using System.Runtime.InteropServices;

namespace WfpApp

{

  class PositionNotepad

  {

  [DllImport( "User32.dll" , EntryPoint = "FindWindow" )]

  private static extern IntPtr FindWindow( string lpClassName, string lpWindowName);

  [DllImport( "user32.dll" )]

  static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

  [DllImport( "user32.dll" )]

  static extern bool SetForegroundWindow(IntPtr hWnd);

  ///<summary> 

  /// 定位到txt文件指定行 

  ///</summary> 

  ///<param name="strFullName">文件路径</param> 

  ///<param name="strRow">指定行</param> 

  ///<returns>定位是否成功</returns> 

  public static bool PositionNotePad( string strFullName, string strRow)

  {

   int iRow;

   int .TryParse(strRow, out iRow);

   if (iRow <= 0)

   {

   return false ;

   }

   //查看当前文件是否已打开

   IntPtr hwnd = FindWindow( "Notepad" , string .Format( "{0} - 记事本" , Path.GetFileName(strFullName)));

   if (hwnd.ToInt32() == 0)

   {

   Process p = Process.Start( @"notepad.exe" , strFullName);

   //等一秒,等文本打开,焦点去到notepad

   p.WaitForInputIdle(1000);

   System.Windows.Forms.SendKeys.SendWait( "{DOWN " + (iRow - 1) + "}" );

   System.Windows.Forms.SendKeys.SendWait( "{HOME}" ); //行首

   System.Windows.Forms.SendKeys.SendWait( "+{END}" ); //选中当前行

   return true ;

   }

   else

   {

   hwnd = FindWindowEx(hwnd, IntPtr.Zero, "Edit" , string .Empty);

   if (hwnd.ToInt32() == 0)

    return false ;

   else

   {

    SetForegroundWindow(hwnd);

    System.Windows.Forms.SendKeys.SendWait( "^{HOME}" ); //将光标定位到首行

    System.Windows.Forms.SendKeys.SendWait( "{DOWN " + (iRow - 1) + "}" );

    System.Windows.Forms.SendKeys.SendWait( "{HOME}" ); //行首

    System.Windows.Forms.SendKeys.SendWait( "+{END}" ); //选中当前行

   }

   }

   return true ;

  }

  }

}

调用:

?

string path = @"C:\Users\ZKK\Desktop\English.txt" ;

bool res = PositionNotepad.PositionNotePad(path, "5" );

希望本文所述对大家的C#程序设计有所帮助。

dy("nrwz");

查看更多关于C#实现txt定位指定行完整实例的详细内容...

  阅读:100次