Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 Вопрос закрыт (ответы не принимаются, мини-форум закрыт)

Вопрос задал: QWERYTY (статус: Посетитель)
Вопрос отправлен: 11 июля 2011, 02:35
Состояние вопроса: закрыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 35; последнее сообщение — 15 июля 2011, 20:08; участников в обсуждении: 4.

Страницы: [1] [2] [Следующая »]

QWERYTY

QWERYTY (статус: Посетитель), 11 июля 2011, 02:41 [#1]:

Только в интернет не отсылайте, там уже были.
Эта тема освещена не очень густо, везде начинают рассказывать про яваскрипт и пиашпи, на делфи ни одного примера не видел.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
min@y™

min@y™ (статус: Доктор наук), 11 июля 2011, 08:28 [#2]:

Цитата (QWERYTY):

Только в интернет не отсылайте, там уже были.

Хэлп читать пробовал?

Цитата:


An application sends a BM_GETCHECK message to retrieve the check state of a radio button or check box.

BM_GETCHECK
wParam = 0; // not used; must be zero
lParam = 0; // not used; must be zero


Parameters

This message has no parameters.

Return Values

The return value from a button created with the BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON, or BS_3STATE style can be one of the following:

Value Meaning
BST_CHECKED Button is checked.
BST_INDETERMINATE Button is grayed, indicating an indeterminate state (applies only if the button has the BS_3STATE or BS_AUTO3STATE style).
BST_UNCHECKED Button is unchecked

If the button has any other style, the return value is zero.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
QWERYTY

QWERYTY (статус: Посетитель), 11 июля 2011, 16:01 [#3]:

If the button has any other style, the return value is zero.
Похоже у меня такая ситуация. Где можно найти материал посерьёзней, этот я уже видел только не работает как в нём написано?
Блин, это мелкая задача, не хотелось бы неделю на это убивать.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
QWERYTY

QWERYTY (статус: Посетитель), 11 июля 2011, 16:06 [#4]:

Так ладно BM_SETCHECK мне не надо, не хочет работать и фиг с ним, CHECK и UNCHECK я умею делать.
Но вот выяснить его состояние всётаки нужно.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
min@y™

min@y™ (статус: Доктор наук), 11 июля 2011, 17:00 [#5]:

А нахрена всё это каков практический смысл?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
QWERYTY

QWERYTY (статус: Посетитель), 11 июля 2011, 17:15 [#6]:

Честно говоря не очень понятен ваш вопрос.
Может вы его как то перефразируете, если он не так прост как кажется.
Если отвечать прямо то мне нужно автоматизировать процесс, чтоб всё делалось не мышкой, а программно.
Всё уже почти закончено, остался только грёбаный чекбокс, который упёрся рогом.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
QWERYTY

QWERYTY (статус: Посетитель), 11 июля 2011, 17:24 [#7]:

min@y™ вы задаёте вопросы с целью понять X мне нужен, Y или может быть Z("Посмотри вот это. Очень даже по теме дискуссии.")? Поверьте мне на слово, мне действительно нужно выяснить состояние чекбокса, а уж X это или Y решайте сами.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
min@y™

min@y™ (статус: Доктор наук), 12 июля 2011, 08:14 [#8]:

Цитата (QWERYTY):

мне нужно автоматизировать процесс, чтоб всё делалось не мышкой, а программно.

Ну и нахрена тыкать одной программой в другую? Не эффективнее ли будет заменить чужую программу своей?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
QWERYTY

QWERYTY (статус: Посетитель), 12 июля 2011, 16:34 [#9]:

Не, я думаю менять ничё не надо. Мне бы лучше ответ на вопрос. Есть кнопка чекбокс имеющая хендл(не отрисованная), как получить её состояние?
Мы знаем, но не хотим говорить, или не знаем?
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
min@y™

min@y™ (статус: Доктор наук), 12 июля 2011, 16:58 [#10]:

Цитата (QWERYTY):

Мы знаем, но не хотим говорить, или не знаем?

Конечно не знаем! Ибо мозги у нас здесь, а чекбокс - там, у тебя. И чо это за чекбокс, каким программистом он написан, какой имеет тип т. п. - мы тоже не знаем. ъ
А телепаторы нам всем давно отключили за неуплату. Ко мне по этому поводу лично Медвепут приходил, держа в четырёх руках "отключатель телепаторов универсальный электрический" (ОТУЭ-2011). А к Вадику припёрся Йануковичь с тюремными натычками на пальцах (В И Т Я) и топором от..ячил телепатор от мозга.
Вот такие дела...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
QWERYTY

QWERYTY (статус: Посетитель), 12 июля 2011, 17:05 [#11]:

Класс у него: BUTTON.
Я как то думал что стандартными функциями.
"каким программистом он написан" чё под каждого программиста отдельные функции чтоли?
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
QWERYTY

QWERYTY (статус: Посетитель), 12 июля 2011, 17:08 [#12]:

Может за одно подскажете как получить тип и т.п.?
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
QWERYTY

QWERYTY (статус: Посетитель), 13 июля 2011, 03:19 [#13]:

Минай помогать не стал(очень сомневаюсь что он не знает такие вещи), а проблема тем временем не уходит.
Разумеется я всё это время не сидел просто так и почитал про класс BUTTON в состав которого входят радиокнопки, чекбоксы и ещё какая то муть. Так же нашол функции для работы с такими кнопками:
IsDlgButtonChecked, CheckDlgButton, SendDlgItemMessage(упоминалась в вопросе), CheckRadioButton.

Но они тоже не работают.
IsDlgButtonChecked всегда возвращает нули. На CheckDlgButton эта проклятая кнопка не реагирует.
При всём при этом фокус поставить на неё удаётся, вот так:
PostMessage(CheckBoxHandle, WM_SETFOCUS, 0, 0);
Может есть ещё какие нибудь функции, для работы с классом BUTTON?
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
min@y™

min@y™ (статус: Доктор наук), 13 июля 2011, 08:19 [#14]:

Цитата (QWERYTY):

Минай помогать не стал(очень сомневаюсь что он не знает такие вещи)

У меня просто рабочий день закончился, я вырубил комп и домой пошёл. Дома включил кондишен, достал пива из холодильника и завалился на диван. И, таки да, я не знаю, как устанавливать флажок в чужих чекбоксах, ибо не приходилось решать такую задачу. Могу попробовать, конечно, когда приспичит; я привык решать проблемы по мере их поступления.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
QWERYTY

QWERYTY (статус: Посетитель), 13 июля 2011, 17:24 [#15]:

Ясно. Кайфово живёшь.)))

Да флажки ставить не надо, я умею.
Надо пробить стоит он или нет.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
QWERYTY

QWERYTY (статус: Посетитель), 14 июля 2011, 20:16 [#16]:

Да, проблема оказалась крепким орешком.
Находил форумы на которых обсуждается данная проблема(не срабатывание функции CheckDlgButton), но к сожалению ни на одном из них до решения проблемы не доходит.

Появилась другая идея, но к сожалению с графикой пока не работал в делфи.
Если возможно считывать цвет пиксела непосредственно в окне, а не на рабочем столе(нужно попасть именно в определённые координаты в окне), то нужно взять цвет в чекбоксе в месте где проходит галочка, и на основании этого делать вывод стоит она или нет.

Может есть каконибудь метод попроще, поделитесь опытом.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
min@y™

min@y™ (статус: Доктор наук), 14 июля 2011, 20:26 [#17]:

Цитата (QWERYTY):

нужно взять цвет в чекбоксе в месте где проходит галочка, и на основании этого делать вывод стоит она или нет.

Это бредовая идея, забудь. Цвет может быть разным в зависимости от виндовой темы, которую юзер себе скачал и поставил.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
QWERYTY

QWERYTY (статус: Посетитель), 14 июля 2011, 20:34 [#18]:

Хорошо, известна бредовая идея. Хотя может она не так и бредова, я как правило использую одну и ту же тему, не люблю такого рода изменения.
Теперь осталось дойти до не бредовой идеи.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
QWERYTY

QWERYTY (статус: Посетитель), 14 июля 2011, 20:37 [#19]:

Тем более я хотел складывать состовляющие RGB и делить на 3.
Если цвет больше 127 то значит чекбокс не помечен, и наоборот.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
Gooddy

Gooddy (статус: 3-ий класс), 14 июля 2011, 20:40 [#20]:

Цитата:

Если возможно считывать цвет пиксела непосредственно в окне, а не на рабочем столе(нужно попасть именно в определённые координаты в окне), то нужно взять цвет в чекбоксе в месте где проходит галочка, и на основании этого делать вывод стоит она или нет.




Оно будет работать, но как...
Чисти код! Чисти код! Чисти код!

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:33
Выполнено за 0.02 сек.