C# API sendmessage()函數獲取文本框文本 (WM_GETTEXT = 0x000D)


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
  class Program
    {
#region 獲取另一系統文本框值
      [DllImport("User32.dll", EntryPoint = "FindWindow")]
      public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

      [DllImport("User32.dll", EntryPoint = "FindWindowEx")]
      public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);

      [DllImport("User32.dll", EntryPoint = "FindEx")]
      public static extern IntPtr FindEx(IntPtr hwnd, IntPtr hwndChild, string lpClassName, string lpWindowName);

      [DllImport("user32.dll", EntryPoint = "SendMessageA")]
      private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, StringBuilder lParam);
#endregion
    public static int WM_GETTEXT = 0x000D;
    static void Main(string[] args)
    {
      IntPtr maindHwnd = FindWindow(null, "Form1"); //獲得句柄
      if (maindHwnd != IntPtr.Zero)
      {
        Console.WriteLine("找到了窗體!");
        IntPtr maindHwndp = FindWindowEx(maindHwnd, IntPtr.Zero, null, null);
        if (maindHwndp != IntPtr.Zero)
        {
          Console.WriteLine("找到輸入框!");
          const int buffer_size = 1024;
          StringBuilder buffer = new StringBuilder(buffer_size);
          SendMessage(maindHwndp, WM_GETTEXT, buffer_size, buffer);
          Console.WriteLine(string.Format("取到的值是:{0}", buffer.ToString()));//取值一直是空字符串
        }
      }
      else
      {
        Console.WriteLine("沒有找到窗口");
      }

    }
  }

}
————————————————
版權聲明:本文為CSDN博主「魔尊X」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/mozunx/article/details/79336919


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM