|
#1
|
|||
|
|||
CheckListBox
В CheckListBox загрузил список активных окон.
Как сделать, чтобы при снятии галочки это окно скрывалось, и наоборот отображалось если её снова поставить. |
#2
|
|||
|
|||
Послать сообщение WM_HIDE по хэндлу или вызывать ShowWindow с параметром SW_HIDE...
ЗЫ. Ну это если ты сам справился с выводом списка. |
#3
|
||||
|
||||
Если надписи на итемах совпадают с заголовками активных окон, то
Код:
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject); var s: PAnsiChar; i: integer; begin i:= (Sender as TCheckListBox).ItemIndex; s:= PAnsiChar((Sender as TCheckListBox).Items[i]); if (Sender as TCheckListBox).Checked[i] then ShowWindow(FindWindow(nil, s), SW_HIDE) else ShowWindow(FindWindow(nil, s), SW_SHOWNORMAL); end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Localiz (21.01.2016)
|
#4
|
|||
|
|||
Спасибо, всё работает
|
#5
|
|||
|
|||
Цитата:
Но если окно было скрыто, при обновлении списка его уже не будет в нём, и соответственно его потом не отобразить... Как сделать, чтобы если галочки нет, то строка не удалялась из списка при обновлении? Код:
procedure Tprocess.FormCreate(Sender: TObject); var wnd: hwnd; buff: array [0..127] of char; i: Integer; begin CheckListBox1.clear; wnd := GetWindow(handle, gw_hwndfirst); while wnd <> 0 do begin if (wnd <> Application.Handle) and IsWindowVisible(wnd) //and (GetWindow(wnd, gw_owner) = 0) and (GetWindowText(wnd, buff, SizeOf(buff)) <> 0) then begin GetWindowText(wnd, buff, SizeOf(buff)); CheckListBox1.Items.Add(StrPas(buff)); end; wnd := GetWindow(wnd, gw_hwndnext); end; CheckListBox1.ItemIndex:= 0; for i := 0 to CheckListBox1.Count -1 do CheckListBox1.Checked[i] := true; Последний раз редактировалось Localiz, 30.01.2016 в 15:12. |