.NET 3.x Отправка текста через SendMessage - C#

Узнай цену своей работы

Формулировка задачи:

Как отправить текст не в заголовок а в основную часть блокнота??? Если для отправки в заголовок я использую: Использую импорты и константу:
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
 
public const int WM_SETTEXT = 0X000C;
Функция проверки окна и отправка текста:
IntPtr ptr = FindWindow(null, "Textbovik.txt — Блокнот");
if (ptr == IntPtr.Zero)
{
   Console.WriteLine("Окно не найдено");
}
else
{
  SendMessage(ptr, WM_SETTEXT, 0, "12345"); // сама функция отправки текста в заголовок
}
Как отправить текст не в заголовок а в само тело куда пишется текст в блокноте?! Хочу так же уточнить парочку деталей: 1 - За место полного названия: Textbovik.txt — Блокнот , можно ли найти дескрипт окна просто как Блокнот? 2 - Как сделать цикл проверки на открытие окна? ( пробовал
while(true)
{
   ...
}
но без результатно). 3 - Что лучше использовать FindWindow или FindWindowEx ? ( И как по не могу находить окно) ??
up...

Решение задачи: «.NET 3.x Отправка текста через SendMessage»

textual
Листинг программы
using System;
using System.Runtime.InteropServices;
 
namespace CleanConsole
{
    class Program
    {
        [DllImport("user32.dll", SetLastError = true)]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        [DllImport("user32.dll")]
        public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
 
        public const int WM_SETTEXT = 0X000C;
 
        static void Main(string[] args)
        {
            IntPtr ptr = FindWindow(null, "Textbovik.txt — Блокнот");
            if (ptr == IntPtr.Zero)
            {
                Console.WriteLine("Окно не найдено");
            }
            else
            {
                IntPtr child = FindWindowEx(ptr, new IntPtr(0), "Edit", null);
                string s = "Text";
                SendMessage(child, 0x000C, 0, s);
                //SendMessage(ptr, WM_SETTEXT, 0, "12345"); // сама функция отправки текста в заголовок
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы