Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение кнопки пуск 
:(
    Опции темы
kibernator
Дата 3.9.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.6.2008

Репутация: нет
Всего: нет



Нашёл такой материал:

Для начала создайте какой-нибудь Bitmap, который вы будете натягивать на кнопку [т.к. такого понятия как "заголовок кнопки ПУСК" в действительности не существует], а та надпись, что находится на стартовой кнопке, является рисунком. Создавая рисунок, учитывайте размеры и то, что левая сторона должна быть "плоской", как у нас на рисунке слева, это связано с особенностями наложения. 

Далее займёмся проектом. Сначала объявляем глобальные переменные 
Код

StartButton: hWnd;
OldBitmap: THandle;
NewImage: TPicture;



Затем описываем событие по создания окна [OnCreate]: 
procedure TForm1.FormCreate(Sender: TObject);
begin
  NewImage := TPicture.create;
  NewImage.LoadFromFile('C:\Windows\delphi.BMP'); //здесь укажите путь к нужному файлу
  StartButton := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil);
  OldBitmap := SendMessage(StartButton, BM_SetImage, 0, NewImage.Bitmap.Handle);
end;



Если вы делаете это на своей машине, то можете всё восстанавливать по событию OnDestroy: 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  SendMessage(StartButton, BM_SetImage, 0, OldBitmap);
  NewImage.Free;
end;


Но он не работает. Что тут не так и каковы точные размеры кнопки "ПУСК" в Windows XP?


M
Alexeis
Модератор: используйте подсветку кода.


Это сообщение отредактировал(а) Alexeis - 3.9.2009, 19:42
PM MAIL WWW ICQ   Вверх
Keeper89
Дата 3.9.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



kibernator, версия ОС какая?


--------------------
PM MAIL WWW   Вверх
kibernator
Дата 4.9.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.6.2008

Репутация: нет
Всего: нет



Цитата(Keeper89 @  3.9.2009,  18:53 Найти цитируемый пост)
kibernator, версия ОС какая?


Microsoft Windows XP 
Home Edition 
версия 2002 
Servise Pack 2

(Взято из Мой компьютер->Свойства->Общие)
PM MAIL WWW ICQ   Вверх
Keeper89
Дата 4.9.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



Честно говоря я не знаю, насколько это картинка, приведенный код у меня тоже не работает. 
А текст можно поменять вот так.


--------------------
PM MAIL WWW   Вверх
Rrader
  Дата 4.9.2009, 15:35 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 4
Всего: 191



Цитата(Keeper89 @  4.9.2009,  21:25 Найти цитируемый пост)
Честно говоря я не знаю, насколько это картинка, приведенный код у меня тоже не работает. 

Код очень старый, только для Win9x.

Цитата(Keeper89 @  4.9.2009,  21:25 Найти цитируемый пост)
А текст можно поменять вот так. 

Там страшные вещи!
Код

procedure TForm1.Button1Click(Sender: TObject);
var Handle1,Handle2:hwnd;
begin
Handle1:=FindWindow('Shell_TrayWnd',nil); //get the handle of the taskbar
Handle2:=FindWindowEx(Handle1,0,'Button',nil); //get the handle of the start button from the taskbar
SetWindowText(Handle2,PAnsiChar(Edit1.Text)); //set the text
SendMessage(Handle2,Messages.WM_MOUSEMOVE,0,0); //used to refresh the caption of the start button
end;

Во-первых, для поиска окна можно одну переменную оставить. Во-вторых, PAnsiChar лучше на PChar заменить. В-третьих, SendMessage на InvalidateRect заменить.

Это сообщение отредактировал(а) Rrader - 4.9.2009, 15:35


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
kibernator
Дата 7.9.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.6.2008

Репутация: нет
Всего: нет



Всем спасибо, а можно сделать так, что бы надпись оставалась даже после перезагрузки?
PM MAIL WWW ICQ   Вверх
MetalFan
Дата 7.9.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



Цитата(kibernator @  7.9.2009,  17:34 Найти цитируемый пост)
Всем спасибо, а можно сделать так, что бы надпись оставалась даже после перезагрузки? 

запуститься в автозапуске и заменить ее)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
kibernator
Дата 7.9.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.6.2008

Репутация: нет
Всего: нет



Она меняеться даже без перезагрузки через некоторое время после переименования. Как с этим бороться?

Это сообщение отредактировал(а) kibernator - 9.9.2009, 15:06
PM MAIL WWW ICQ   Вверх
wareznak
Дата 28.9.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 28.9.2009

Репутация: нет
Всего: нет



Цитата(MetalFan @ 7.9.2009,  17:55)
Цитата(kibernator @  7.9.2009,  17:34 Найти цитируемый пост)
Всем спасибо, а можно сделать так, что бы надпись оставалась даже после перезагрузки? 

запуститься в автозапуске и заменить ее)

после перегруза надпись будет! но нужно немножко не так делать... глянь тут!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0851 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.