Aidsoid
@Aidsoid

Как программно нажать checkbox внутри SysListView32 в чужом приложении?

Есть чужое приложение, одно из окон которого выглядит так:

ad909a6b2fa411c46ac7e4c77d092841.png


Мне нужно программно снять галочку с checkbox'ов внутри этого списка.

Handle окна и handle списка уже получил, а что делать дальше? Как добраться до этих checkbox'ов?


Программа пишется на Delphi.

// ищем окно с заголовком &quot;Select Tools&quot;<br/>
SelectToolsHandle:=GetWindowHandle('Select Tools');<br/>
if (SelectToolsHandle &lt;&gt; 0) then begin<br/>
 // ищем список<br/>
 SysListHandle:=FindWindowEx(SelectToolsHandle, 0, 'SysListView32', nil);<br/>
 if (SysListHandle &lt;&gt; 0) then begin<br/>
 showmessage(IntToStr(SysListHandle)); // handle списка получен<br/>
 // Что же дальше делать?(<br/>
 end;<br/>
end;<br/>
  • Вопрос задан
  • 3868 просмотров
Пригласить эксперта
Ответы на вопрос 3
stab
@stab
Варианта два:

1. Либо эмулировать нажатия клавиш\мыши, что есть плохо.

2. Либо с помощью хуков загружаться в адресное пространство процесса и юзать LVM_SETITEMSTATE, что есть хорошо, но сложно.
Ответ написан
Aidsoid
@Aidsoid Автор вопроса
Всем спасибо, немного обошел стороной проблему, заметил, что галочка снимается, если на выделенном пункте нажать Пробел. Поэтому получил текст всех итемов из списка, в этом помогла следующая статья:
http://www.ddsoft.hoha.ru/notes/lvmgetitem/
А после этого просто выделял нужный пункт и эмулировал нажатие пробела, в этом помог следующий код:
http://www.delphisources.ru/forum/showthread.php?t=8592
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы