Использование SendMessage из user32.dll в C# для взаимодействия с пользовательским интерфейсом Windows

user32.dll— это динамическая библиотека Windows, содержащая функции для взаимодействия с пользовательским интерфейсом. В C# вы можете использовать функцию SendMessageиз user32.dllдля отправки сообщений в окна и элементы управления. Вот несколько примеров использования SendMessageв C#:

  1. Отправка простого сообщения:

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
    // Example usage
    IntPtr targetWindowHandle = /* Obtain the target window handle */;
    int message = /* Specify the message code */;
    IntPtr wParam = /* Specify the wParam */;
    IntPtr lParam = /* Specify the lParam */;
    SendMessage(targetWindowHandle, message, wParam, lParam);
  2. Отправка текстового сообщения в элемент управления редактированием:

    const int WM_SETTEXT = 0x000C;
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, string lParam);
    // Example usage
    IntPtr targetEditControlHandle = /* Obtain the target edit control handle */;
    string textToSend = /* Specify the text to send */;
    SendMessage(targetEditControlHandle, WM_SETTEXT, IntPtr.Zero, textToSend);
  3. Извлечение текста из элемента управления редактированием:

    const int WM_GETTEXT = 0x000D;
    const int WM_GETTEXTLENGTH = 0x000E;
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, StringBuilder lParam);
    // Example usage
    IntPtr targetEditControlHandle = /* Obtain the target edit control handle */;
    int textLength = SendMessage(targetEditControlHandle, WM_GETTEXTLENGTH, 0, null);
    StringBuilder sb = new StringBuilder(textLength + 1);
    SendMessage(targetEditControlHandle, WM_GETTEXT, sb.Capacity, sb);
    string retrievedText = sb.ToString();

Это всего лишь несколько примеров использования функции SendMessageиз user32.dllв C#. Не забудьте включить пространство имен System.Runtime.InteropServicesдля доступа к необходимым атрибутам и функциям.