![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 В 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.  |