|
Вопрос # 5 492/ вопрос закрыт / |
|
Здравствуйте, эксперты!
Подскажите пожалуйста как можно программно получить состояние(помечен, не помечен) чекбокса в чужом приложении. У него два состояния, ControlID=0, хендл его мне известен.
SendMessage(CheckBoxHandle, BM_GETCHECK, 0, 0); возвращает нули не зависимо от того помечен он или нет.
SendMessage(CheckBoxHandle, BM_SETCHECK, 0, 0); не срабатывает.
SendDlgItemMessage тоже не работает.
Примечание #1 (11 июля 2011, 02:37): SendMessage(CheckBoxHandle, BM_SETCHECK, 1, 0); Как вы наверное уже поняли тоже не работает.
 |
Вопрос задал: QWERYTY (статус: Посетитель)
Вопрос отправлен: 11 июля 2011, 02:35
Состояние вопроса: закрыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 35; последнее сообщение — 15 июля 2011, 20:08; участников в обсуждении: 4.
Страницы: [« Предыдущая] [1] [2]
|
Gooddy (статус: 3-ий класс), 14 июля 2011, 20:42 [#21]:
Цитата:
Тем более я хотел складывать состовляющие RGB и делить на 3.
Если цвет больше 127 то значит чекбокс не помечен, и наоборот.
Это единственное решение как не крути. Несмотря на то, что тема может быть инвертированная (чёрный фон, белый флажок), но это действительно единственное практическое решение.
Чисти код! Чисти код! Чисти код!
|
|
QWERYTY (статус: Посетитель), 14 июля 2011, 20:53 [#22]:
Да Гудди, Хороший девайс главное к нему драйвер найти подходящий(в MSDN может не быть), раскрутить побыстрей глядишь летать на нём можно будет.
Желательно сообщения по теме, уже не до смеха.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
Gooddy (статус: 3-ий класс), 14 июля 2011, 20:56 [#23]:
QWERYTY: окей, но найденное решение меня поразило до глубины души.
Чисти код! Чисти код! Чисти код!
|
|
QWERYTY (статус: Посетитель), 14 июля 2011, 21:05 [#24]:
Чем же вас , Гудди, поразило решение, бредовостью?
Ну подскажите другое.
Не могу двигаться дальше пока не разберусь с чекбоксом, это принципмально важно.
Либо пробью эту стену, либо сам разобъюсь, но бросить не могу.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 14 июля 2011, 21:09 [#25]:
Внатуре проклятье какое то, ввожу логин и пароль в чужом приложении, очищаю эти поля предварительно, а тут на такой хрени завис.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 14 июля 2011, 21:40 [#26]:
Опять пошли потуги.
Вроде бы мне помогает GetPixel, но из описания я так понял нельзя оперировать координатами отдельных окон, нужно указывать экранные координаты. Функция вроде неплоха, но при разных разрешениях чекбокс будет иметь разные координаты.
Есть ли похожие функции для работы в окнах?
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 15 июля 2011, 00:32 [#27]:
Ещё одна проблема решена криво, может кому пригодится.
CheckBoxHDC:= GetDC(CheckBoxHandle);
CheckBoxRGB:= GetPixel(CheckBoxHDC, 5, 8);
CheckBoxColor:= Round((GetRValue(CheckBoxRGB) + GetGValue(CheckBoxRGB) + GetBValue(CheckBoxRGB))/3);
if CheckBoxColor < 127 then
begin
PostMessage(CheckBoxHandle, WM_LBUTTONDOWN, MK_LBUTTON, 0);
Sleep(10+Random(30));
PostMessage(CheckBoxHandle, WM_LBUTTONUP, MK_LBUTTON, 0);
end;
Состовляющие RGB отдельно не проверял(в лом), а просто вывел полученный цвет на панель.
После серии эксперементов было установленно что цвета которые я получаю действительно из чекбокса.
Ну всё, Гудди, теперь можно и про тракторолёт поговорить.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 15 июля 2011, 00:41 [#28]:
Ну разумеется проверил на разных разрешениях, работает без проблем.
Может метод и бредовый, но бошку не парит как IsDlgButtonChecked, CheckDlgButton, SendDlgItemMessage.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 15 июля 2011, 00:49 [#29]:
"Чисти код! Чисти код! Чисти код!"
По моему тут не код уже нужно чистить.
Лопасти нужно чистить, а то по взлётной полосе волокутся.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
bugmenot (статус: 3-ий класс), 15 июля 2011, 04:05 [#30]:
Цитата (QWERYTY):
Sleep(10+Random(30));
для совместимости с квантовыми компьютерами?
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
QWERYTY (статус: Посетитель), 15 июля 2011, 15:01 [#31]:
Не, вдруг мою прогу поставят на тракторолёт, он может не успевать принимать сообщения.
Ну разумеется закос под человека.
Ты бы видел как я логин с паролем заполняю, буква за буквой со слипами, причём это слип нажатия клавиш, а есть ещё слип между вводом символов(он побольше и рандом в нём больше).
Создаётся впечатление что эти поля действительно заполняют с клавиатуры.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 15 июля 2011, 15:42 [#32]:
Попробовал разные темы(у меня SP3, там их до жопы), ни одной не нашол чтоб цвета чекбокса инвертировались.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 15 июля 2011, 15:49 [#33]:
Кстати такой девайс можно взять на вооружение, враг не поняв конструкции в страхе убежит.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
bugmenot (статус: 3-ий класс), 15 июля 2011, 16:35 [#34]:
SendMessage синхронный же, если чо
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
QWERYTY (статус: Посетитель), 15 июля 2011, 20:08 [#35]:
Спасбо bugmenot, пока не понял о чём вы, не на столько глубоко погружался в эту кутерьму чтоб читать кто там синхронный, а кто асинхронный.
Уже нет времени разбираться в тонкостях(слишком много времени убито на всякие мелочи), приспичит разберусь.
А пока работает и хрен с ним.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
15 июля 2011, 20:17: Вопрос закрыт (решение принял автор вопроса — QWERYTY): Закрываем, и всё тут.
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|