zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#定位txt指定行的方法小例子

c#定位方法 指定 例子 txt
2023-06-13 09:14:51 时间

复制代码代码如下:


           [DllImport("User32.dll",EntryPoint="FindWindow")]
           privatestaticexternIntPtrFindWindow(stringlpClassName,stringlpWindowName);
           [DllImport("user32.dll")]
           staticexternIntPtrFindWindowEx(IntPtrhwndParent,IntPtrhwndChildAfter,stringlpszClass,stringlpszWindow);
           [DllImport("user32.dll")]
           staticexternboolSetForegroundWindow(IntPtrhWnd);
           ///<summary>
           ///定位到txt文件指定行
           ///</summary>
           ///<paramname="strFullName">文件路径</param>
           ///<paramname="strRow">指定行</param>
           ///<returns>定位是否成功</returns>
           privateboolLocateNotePad(stringstrFullName,stringstrRow)
           {
               intiRow;
               int.TryParse(strRow,outiRow);
               if(iRow<=0)
               {
                   returnfalse;
               }
               IntPtrhwnd=FindWindow("Notepad",string.Format("{0}-记事本",Path.GetFileName(strFullName)));//查看当前文件是否已打开
               if(hwnd.ToInt32()==0)
               {
                   Processp=Process.Start(@"notepad.exe",strFullName);
                   p.WaitForInputIdle(1000); //等一秒,等文本打开,焦点去到notepad
                   System.Windows.Forms.SendKeys.SendWait("{DOWN"+(iRow-1)+"}");
                   System.Windows.Forms.SendKeys.SendWait("{HOME}");//行首
                   System.Windows.Forms.SendKeys.SendWait("+{END}");//选中当前行
                   returntrue;
               }
               else
               {
                   hwnd=FindWindowEx(hwnd,IntPtr.Zero,"Edit",string.Empty);
                   if(hwnd.ToInt32()==0)returnfalse;
                   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}");//选中当前行
                   }
               }
               returntrue;
           }


调用代码LocateNotePad("D:\\test.txt","3");

代码很简单,通过FindWindow,FindWindowEx,SetForegroundWindow三个API进行获取句柄并设置进程当前以及发送系统命令操作,利用winform中的SendKeys发送键盘命令达到定位的目的.

PS:此命令需要增加System.Windows.Forms,在引用处添加..希望对各位有帮助,也希望能得到各位朋友的指点改进,谢谢