  | 
	
		
	
	
		Пишем Ренеймер/Renamer окон [Delphi 7] - Школа Читера - Основы основ - начинаем писать статьи для начинающих с целью создания полноценного раздела | 
	 
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            30.09.2010, 18:21
            
            
         | 
        
             
            #1
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Пехотинец  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 06.07.2009  
                
                
                
                 Сообщений: 81
                   
 Популярность: 126  
                  
	 Сказал(а) спасибо: 32  
	
		
			
				Поблагодарили 93 раз(а) в 36 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Пишем Ренеймер/Renamer окон [Delphi 7]
             
             
            
        
        
        
            
               
    Всем привет. Сегодня я наткнулся на  эту тему. Чтобы не было больше вопросов я решил написать статью о том, как это сделать. Для написания программы нам потребуется только  Delphi 7. - Создаём новый проект;
 
- Кидаем на форму Edit;
 
- Кидаем на форму ComboBox;
 
- Кидаем на форму Button;
 
- Очищаем текст в Edit;
 
- В свойстве Style компонента ComboBox выбираем DropDownList;
 
- В свойстве Caption кнопки пишем Переименовать;
 
- Создаём процедуру OnShow формы и пишем в ней:
 
	Код: 
	procedure TForm1.FormShow(Sender: TObject);
var a : hWnd;
 b: array [0..127] of Char;
begin
 a:=GetWindow(Handle, gw_HWndFirst);
 while a<>0 do
  begin
   if (a<>Application.Handle) and
   (IsWindowVisible(a)) and
   ((GetWindow(a, gw_Owner)=0)) and
   (GetWindowText(a, b, sizeof(b))<>0)
    then
     begin
      GetWindowText(a, b, sizeof(b));
      ComboBox1.Items.Add(StrPas(b));
     end;
    a:=GetWindow(a, gw_hWndNext);
  end;
end;
  
- В обработчик кнопки пишем код:
 
	Код: 
	procedure TForm1.Button1Click(Sender: TObject);
var
  a:HWND;
begin
if ComboBox1.Text = '' then
ShowMessage ('Начальное имя окна не введено!') else
   if Edit1.Text = '' then
      ShowMessage ('Новое имя окна не введено!') else
         begin
SetWindowText(FindWindow (nil,pchar(ComboBox1.Text)),pchar(edit1.text));
  begin
a:= findwindow(nil, PChar(Edit1.text));
if a<>0 then
ShowMessage('Окно переименовано')
else
ShowMessage('Окно не найдено');
     end;
     end;
   end;
  
- Готово. Теперь сохраняем проект, компилируем и радуемся. 
 
 В СomboBox сразу после запуска появится список всех окон. В Edit вводим новое название выбранного окна. После нажатия кнопки (если всё правильно), то окно будет переименовано и будет выведено сообщение " Окно переименовано" 
С дизайном и названием окна можете сами пошаманить.
     
          
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
        
            
                 
                
                    
                        Последний раз редактировалось Хакерок:); 30.09.2010 в 18:23.
                    
                    
                
             
        
        
      | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
	
		
			| 
				
					Пользователь сказал cпасибо:
				
				
				
			 | 
			 | 
		 
	 
  
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            10.11.2010, 20:28
            
            
         | 
        
             
            #2
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Пехотинец  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 06.07.2009  
                
                
                
                 Сообщений: 81
                   
 Популярность: 126  
                  
	 Сказал(а) спасибо: 32  
	
		
			
				Поблагодарили 93 раз(а) в 36 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Пишем Ренеймер/Renamer окон [Delphi 7]
             
             
            
        
        
        
            
               
    Если нужны подробности либо помощь - пишите в ЛС =) 
P.S. Статья и так расписана как нельзя подробно.
     
         
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            11.11.2010, 10:35
            
            
         | 
        
             
            #3
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Фельдмаршал  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 10.06.2008  
                
                
                
                 Сообщений: 965
                   
 Популярность: 5501  
                  
	 Сказал(а) спасибо: 786  
	
		
			
				Поблагодарили 942 раз(а) в 598 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Пишем Ренеймер/Renamer окон [Delphi 7]
             
             
            
        
        
        
            
               
    То есть ты даёшь непрокомментированный код и это получается «Статья и так расписана как нельзя подробно.»? 
В статье не описано НИЧЕГО. 
 
Какие функции используются? Какие аргументы принимают, что возвращают? 
 
Убило — поиск переименованного окна. Не лучше ли проверять возвращаемное значение функции SetWindowText? 
 
Роль FindWindow непонятна. Смысл искать окно, если уже известен его хэндл и взято имя окна? Привязывай к итему в списке хэндл окна. 
 
И, думаю, стоит изменять на новое имя окна в списке.
     
         
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            11.11.2010, 11:08
            
            
         | 
        
             
            #4
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Фельдмаршал  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 13.08.2009  
                
                
                
                 Сообщений: 1,004
                   
 Популярность: 25098  
 Золото Zhyk.Ru: 350     
                  
	 Сказал(а) спасибо: 111  
	
		
			
				Поблагодарили 830 раз(а) в 395 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Пишем Ренеймер/Renamer окон [Delphi 7]
             
             
            
        
        
        
            
               
    Добавлю камень от себя. 
Искать все окна в событии onShow бессмысленно, так как поиск будет производиться один раз при запуске программы (или при вызовах TForm.Show или TForm.ShowModal). 
А если я хочу переименовать только что открытое окно? 
Куда лучше делать поиск окон при выпадении списка (TComboBox.onDropDown) либо добавить кнопку обновления оного. 
 
Ну и еще можно сказать что код обработчика кнопки нечитабелен, а переменные не "говорящие", какими они должны бы быть в обучающей статье.
     
         
        
        
        
        
        
        
            
             ________________  
                Ни одно доброе дело не остается безнаказанным. 
 
Программы: 
PW:  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). . 
JD:  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). . 
Статьи:  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).   
 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            12.11.2010, 18:34
            
            
         | 
        
             
            #5
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Пехотинец  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 06.07.2009  
                
                
                
                 Сообщений: 81
                   
 Популярность: 126  
                  
	 Сказал(а) спасибо: 32  
	
		
			
				Поблагодарили 93 раз(а) в 36 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Пишем Ренеймер/Renamer окон [Delphi 7]
             
             
            
        
        
        
            
               
    Не учёл) И правда лучше поставить на TComboBox.onDropDown   
     
         
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
        
            
                 
                
                    
                        Последний раз редактировалось Хакерок:); 21.11.2010 в 14:54.
                    
                    
                
             
        
        
      | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            12.11.2010, 20:19
            
            
         | 
        
             
            #6
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Пехотинец  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 11.10.2010  
                
                
                
                 Сообщений: 86
                   
 Популярность: 13  
                  
	 Сказал(а) спасибо: 46  
	
		
			
				Поблагодарили 33 раз(а) в 22 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Пишем Ренеймер/Renamer окон [Delphi 7]
             
             
            
        
        
        
            
               
    Бред непонятно
     
         
        
        
        
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            21.11.2010, 14:48
            
            
         | 
        
             
            #7
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Пехотинец  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 06.07.2009  
                
                
                
                 Сообщений: 81
                   
 Популярность: 126  
                  
	 Сказал(а) спасибо: 32  
	
		
			
				Поблагодарили 93 раз(а) в 36 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Пишем Ренеймер/Renamer окон [Delphi 7]
             
             
            
        
        
        
            
               
    
что тут не понятно?
 
	Код: 
	procedure TForm1.FormShow(Sender: TObject);
var a : hWnd;
 b: array [0..127] of Char;
begin
 a:=GetWindow(Handle, gw_HWndFirst);
 while a<>0 do
  begin
   if (a<>Application.Handle) and
   (IsWindowVisible(a)) and
   ((GetWindow(a, gw_Owner)=0)) and
   (GetWindowText(a, b, sizeof(b))<>0)
    then
     begin
      GetWindowText(a, b, sizeof(b));
      ComboBox1.Items.Add(StrPas(b));
     end;
    a:=GetWindow(a, gw_hWndNext);
  end;
end;
 Здесь всё очень просто. ComboBox присваивается значения всех окон, за исключением собственного окна, невидимых окон, дочерних окон и окон без заголовков.
 
	Код: 
	procedure TForm1.Button1Click(Sender: TObject);
var
  a:HWND;
begin
if ComboBox1.Text = '' then
ShowMessage ('Начальное имя окна не введено!') else
   if Edit1.Text = '' then
      ShowMessage ('Новое имя окна не введено!') else
         begin
SetWindowText(FindWindow (nil,pchar(ComboBox1.Text)),pchar(edit1.text));
  begin
a:= findwindow(nil, PChar(Edit1.text));
if a<>0 then
ShowMessage('Окно переименовано')
else
ShowMessage('Окно не найдено');
     end;
     end;
   end;
 Здесь еще проще. Идёт проверка на пустое поле в Edit и пустой ComboBox. Если всё верно, то переименовываем. 
Так что   
     
         
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
        
            
                 
                
                    
                        Последний раз редактировалось Хакерок:); 21.11.2010 в 14:52.
                    
                    
                
             
        
        
      | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            09.01.2011, 19:33
            
            
         | 
        
             
            #8
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Пехотинец  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 06.07.2009  
                
                
                
                 Сообщений: 81
                   
 Популярность: 126  
                  
	 Сказал(а) спасибо: 32  
	
		
			
				Поблагодарили 93 раз(а) в 36 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: Пишем Ренеймер/Renamer окон [Delphi 7]
             
             
            
        
        
        
            
               
    И да, еще одно дополнение, чтобы список окон в ComboBox не дублировался, то первой командой в процедуре TComboBox.onDropDown требуется поставить команду ComoBox1.Clear;
     
         
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). ,  Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
 
	
		
	
	
	
	
	
		
	
		 
		Ваши права в разделе
	 | 
 
	
		
		Вы не можете создавать новые темы 
		Вы не можете отвечать в темах 
		Вы не можете прикреплять вложения 
		Вы не можете редактировать свои сообщения 
		 
		
		
		
		
		HTML код Выкл. 
		 
		
	  | 
 
 
	 | 
	
		
	 | 
 
 
 
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 20:18. 
		 
	 
 
 | 
  |