Включить или выключить флажок у другого приложения
{
The function CheckCheckBox() checks or unchecks a Checkbox in another
window.
Parameter:
hApp : Handle to the parent window of the Checkbox.
ClassName: Class name of the Checkbox.
(For Delphi-Applications: TCheckBox. For C, VB,..: Checkbox)
bValue: Determines whether the check box is in the checked state.
CheckBoxNr: Number of the CheckBox (useful if there are several Checkboxes)
}procedure CheckCheckBox(hApp: HWND; ClassName: string; bValue: Boolean; CheckBoxNr: Integer);
var
i: Word;
hCheckBox: HWND;
beginifnot IsWindow(hApp) then Exit;
for i := 0 to CheckBoxNr do
hCheckBox := FindWindowEx(hApp, hCheckBox, PChar(ClassName), nil);
if IsWindow(hCheckBox) then
SendMessage(hCheckBox, BM_SETCHECK, Integer(bValue), 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CheckCheckBox(Handle, 'TCheckBox', True, 1);
// Or / Oder // CheckCheckBox(Handle, 'CheckBox', True, 1); end;
Это код на Delphi, который проверяет или отменяет выбор чекбокса в другом окне. Процедура CheckCheckBox принимает четыре параметра:
ClassName: Классное имя чекбокса (например, 'TCheckBox' для приложений Delphi, 'Checkbox' для приложений C/VB).
bValue: Булевое значение, определяющее, является ли чекбокс выбраным или не выбраным.
CheckBoxNr: Номер чекбокса (полезен, если есть несколько чекбоксов).
Процедура использует функцию FindWindowEx для поиска чекбокса с указанным классным именем и номером, а затем отправляет сообщение BM_SET CHECK с помощью функции SendMessage. Если handle окна является недействительным или чекбокс не найден, процедура выходит.
В примере кода обработчик события Button1Click вызывает процедуру CheckCheckBox с следующими параметрами:
Handle: Обратный handle основной формы.
'TCheckBox': Классное имя чекбокса (в этом случае, TCheckBox Delphi).
True: Значение для установки чекбокса (выбран в этом случае).
1: Номер чекбокса.
Этот код может использоваться для проверки или отмены выбора чекбокса в другом окне. Примечание, что код предполагает, что чекбокс виден и имеет фокус, когда он проверяется или отменяется. Если чекбокс не виден или не имеет фокуса, код может не работать как ожидалось.
Альтернативное решение:
Вместо использования FindWindowEx и SendMessage можно использовать свойство Checked компонента TCheckBox для установки состояния чекбокса. Например:
В этом коде FindComponent используется для поиска компонента чекбокса с именем 'MyCheckBox', а затем свойство Checked этого компонента устанавливается в указанное значение. Этот подход может быть более эффективным и легче использовать, чем оригинальный код.
Статья описывает функцию CheckCheckBox, которая позволяет включать или выключать флажок в другом приложении, указав его обработчик, класс имени и номер флажка.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS