.NET 4.x Как найти Handle окна на примере блокнота - C#

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

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

Приветствую. Очень тяжело освоить hadle'ы не имея опыта работы с ними, перечитал много примеров и прочего, но... ничего не получается.. Цель на данный момент - найти хэндл окна блокнота и послать ему нажатие кнопки/текста. Со второй частью я, как ни странно, вроде бы разобрался на примере отлова хэндла текстового поля. А вот что делать с блокнотом? Я попробовал найти процесс, и из него вытащить хэндл, и ничего не получилось. И вообще, вот, чудесная утилита Spy++ с которой я только начал знакомство - ОТКУДА она берет столько инфы? Через класс Process, обращаясь, в частности, к процессу блокнота, я не могу получить ни модули (если они и есть, я правда не понял что это и зачем), ни контейнер (которым он видимо вообще не является), ничего толкового в общем! Spy++ в свою очередь нашел процесс Notepad, в нём ещё один notepad, а в нём вообще 4 окна. Вот как? Я тоже так хочу... =( Помогите пожалуйста новичку, желательно кодом с комментариями а не ссылками на книги и статьи. А ещё - может я вообще не в том направлении дую? Может стоит обратить взор на пространство имёт System и его "дочкам"? С работой с окнами с хэндлами прежде опыта не имел, но очень хочу залезть "под кожу" и научиться манипулировать тамошним хозяйством. Я считаю, что это хороший опыт был бы. Да и пригодится как ни крути. Фундаментальные знания строения небольшого кусочка системы ещё никогда не вредило. На С++ я видел примерчик из хабра где вообще банально по хэндлу окно делалось enabled=false и прочие вкусняшки. Правда, стоит обратить внимание, что статья старая и на момент написания Windows 7 не было даже в альфа тестировании, возможно теперь это вообще не сделать без спец. навыков? Возвращаясь к цели - а хэндл ли мне нужно искать для этой цели? В общем вопросов море, времени мало (убегаю на работу), прошу кто знает дать мне вектор мышления с небольшим пинком

Решение задачи: «.NET 4.x Как найти Handle окна на примере блокнота»

textual
Листинг программы
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern bool SendMessage(IntPtr hWnd, uint Msg, int wParam, StringBuilder lParam);
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wparam, int lparam);

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


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

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

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