Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2009, 20:34   #1
Sandyron
 
Регистрация: 15.11.2009
Сообщений: 4
По умолчанию Как правильно переименовать окно?

Есть строка которая меняет конкретное имя окна, на другое конкретное имя
setwindowtext (findwindow(nil,'имя_окна'),'новое_ имя_окна')

Так вот сам вопрос, как вместо 'имя_окна' и 'новое_имя_окна' вписать переменные содержащие нужные имена??
Sandyron вне форума Ответить с цитированием
Старый 15.11.2009, 20:36   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Так и вписать

setwindowtext (findwindow(nil, OldName), NewName)
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 15.11.2009, 20:55   #3
Sandyron
 
Регистрация: 15.11.2009
Сообщений: 4
По умолчанию

Ну вот я пишу
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
new:string;
begin
new:=Edit1.Text;
setwindowtext (findwindow(nil,'имя_окна'),'новое_имя')
end;
И подставляю переменную new
setwindowtext (findwindow(nil,new),'новое_имя')
На что он мне выдает ошибку....что я не так сделал???

Вы разве осел? Что за "йа" ?
У нас "падонкафский" сленг не допускается !
Так же, как и слово "помогите" в названии темы.
Прочитайте правила.
На первый раз переименовываю, потом буду просто удалять.


//Извиняюсь....больше не повториться.

Последний раз редактировалось mihali4; 15.11.2009 в 21:12.
Sandyron вне форума Ответить с цитированием
Старый 15.11.2009, 20:56   #4
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Какая ошибка? Текст ошибки?
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 15.11.2009, 21:08   #5
Sandyron
 
Регистрация: 15.11.2009
Сообщений: 4
По умолчанию

[Error] Unit2.pas(33): Incompatible types: 'String' and 'PAnsiChar'
Sandyron вне форума Ответить с цитированием
Старый 15.11.2009, 21:10   #6
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

setwindowtext (findwindow(nil, PChar(OldName)), PChar(NewName))

Хоть иногда жмите F1....

*Правда может быть PChar нужно применять к какойто одной переменой... эксперементируй.*
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 15.11.2009, 21:51   #7
Sandyron
 
Регистрация: 15.11.2009
Сообщений: 4
По умолчанию

Спасибо большое !! В конкретном случае все получилось!

И опять же возник вопрос, по той же теме.
Код:
setwindowtext (findwindow(nil, 'Безымянный - Блокнот'),PChar(new))
Вот здесь все отлично работает, блокнот переименовывается во введенное значение, но если вместо конкретного названия, а именно 'Безымянный - Блокнот' поставить переменную name (начальное имя окна)

Код:
setwindowtext (findwindow(nil, PChar(name)),PChar(new))
То ничего не происходит.

Последний раз редактировалось Stilet; 17.11.2009 в 08:52.
Sandyron вне форума Ответить с цитированием
Старый 16.11.2009, 22:34   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Подход не верный. Где проверки ? Зачем вам десктоп переименовывать ? (если конечно GetDesktopWindow() вернет также NULL) ?

Вообще, умнее подход, сделать через класс окна (ну если класс не очень распространен), но все же:

Код:
wnd: DWORD;
begin
  wnd := FindWindow(NIL, PCHAR(name));
  if(wnd <> 0)
  begin
    SetWindowText(wnd, PCHAR(new));
  end;
  // если wnd = 0, то окна нет с таким заголовком.
end;
По нормальному хотите ? Ищем по форуму перебор окон:
1. EnumWindows()
2. GetWindow()
+ MSDN

p.s. намек на то, что вы руками перебераите окна, читаите их текст, ищите в полученном тексте (даже можно и кусочек) свой текст, и если нашли, прекращаите перебор и получаите свой wnd. Дальше ясно.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в 2003 Екселе переименовать столбцы? ЕленаС Microsoft Office Excel 2 10.02.2009 19:09
Как у Грида переименовать столбцы? Detka Помощь студентам 2 07.02.2009 22:28
Как переименовать диапазон в Excel 2003? viter.alex Microsoft Office Excel 14 16.01.2009 02:07
Под скажите как переименовать файл? snaem Общие вопросы .NET 4 23.04.2008 23:15
как переименовать samosval Общие вопросы .NET 1 19.12.2007 21:40