Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как поменять название кнопки


Denvor ©   (2002-09-17 01:06:00) 

Вот в поиске нашёл примерчик снятия хэндла с кнопки Пуск, но он у меня не заработал:
procedure TForm1.Button5Click(Sender: TObject);
var
ClassName : array[0..255] of char;
Wnd, Child : HWnd;
begin
Wnd := Windows.FindWindow("Shell_TrayWnd", "");
if Wnd <> 0 then begin
Child := GetWindow(Wnd, GW_CHILD);
repeat
GetClassName(Child, ClassName, 255);
if StrPas(ClassName) = "Button" then begin
ShowWindow(Child, SW_HIDE); Break
end else
Child := GetWindow(Wnd, GW_HWNDNEXT);
until Child = 0
end
end;
Что интересно, так Wnd := Windows.FindWindow("Shell_TrayWnd", ""); вообще ничего не возвращает. А описания "Shell_TrayWnd"я не нашёл ни в MSDN е, ни в энциклопедии по API.


Denvor   (2002-09-17 11:24:00) [1]

Прикиньте, Бэйсик так глючит в сфере ВинАпи!
Перевёл аналог. процедуру из Делфы на Висик, так Хэндл Систем Трэй ВНД он находит, а хэндл ПУСКА - нет, а в делфи всё Ок!


Song   (2002-09-17 09:17:00) [2]

2Diamond Cat © (17.09.02 01:26)
Всё правильно, FindWindow() идёт по ссылке из windows.dcu


Diamond Cat   (2002-09-17 01:26:00) [3]

скорей всего это должно выглядеть так
procedure TForm1.Button5Click(Sender: TObject);
var
ClassName : array[0..255] of char;
Wnd, Child : HWnd;
begin
Wnd := FindWindow("Shell_TrayWnd", nil);
if Wnd <> 0 then begin
Child := GetWindow(Wnd, GW_CHILD);
repeat
GetClassName(Child, ClassName, sizeof(classname));
if StrPas(ClassName) = "Button" then begin
ShowWindow(Child, SW_HIDE);
Break
end else
Child := GetWindow(Wnd, GW_HWNDNEXT);
until Child <> 0
end
end;
И если я не ошибаюсь то кнопка пуск не содержит текста, на ней валяется рисунок, соответственно заменить его можно через Fillrect или попроще и опустив всю волокиту с преведенным выше текстом
var
im:Tbitmap;
begin
im.LoadFromFile("start.bmp")
sendmessage( FindWindowEx(FindWindow("Shell_TrayWnd",nil),0,"Button", nil),BM_SetImage,IMAGE_BITMAP,im.Handle);

соответственно для начала надо создать рисунок start.bmp, и положить его в туже дир-ю что и исполняемый файл
могу поделиться рабочей прогаммой


Наверх

Титульная страница Поиск, карта сайта Написать письмо