.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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д