Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Изменить програмно вид кнопки меню Пуск (Delphi) |

24.04.2007, 11:07
|
|
Участник форума
Регистрация: 10.08.2006
Сообщений: 147
Провел на форуме: 404152
Репутация:
94
|
|
Изменить програмно вид кнопки меню Пуск (Delphi)
Привет
Люди, подскажите плиз как мона изменить програмно (с помощью Delphi) вид кнопки меню Пуск.
Нашел один способ с помощью которого это можно сделать, но он работает только под Windows 9x, вот код:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
StartBtnWnd:=FindWindow('Shell_TrayWnd', nil);
StartBtnBmp:=FindWindowEx(StartBtnWnd, 0, 'Button', nil);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(StartBtnBmp, BM_SetImage, 0, Image1.Picture.Bitmap.Handle);
end;
Большая просьба отвечать только по теме и ответы типа "ресторатор в руки" прошу оставить при себе,
не знаете - не пишите, извиняюсь за грубость просто уже достали тупыми ответами и флудом.
Заранее благадарю.
p.s. если реально поможежете обещаю + 
Последний раз редактировалось Exile1985; 24.04.2007 в 14:25..
|
|
|

24.04.2007, 14:27
|
|
Участник форума
Регистрация: 10.08.2006
Сообщений: 147
Провел на форуме: 404152
Репутация:
94
|
|
АУУУУ народ, че тишина то такая, тупой вопрос задал или это не осуществимо?
|
|
|

24.04.2007, 14:38
|
|
Участник форума
Регистрация: 05.09.2006
Сообщений: 184
Провел на форуме: 888851
Репутация:
203
|
|
Нашел пример в Delphi Russian Knowledge Base form Vit
Код:
Пример из серии "Что можно сделать с рабочим столом". В общем, это обычный трюк с кнопкой "Пуск" (Start).
{ объявляем глобальные переменные }
var
Form1: TForm1;
StartButton: hWnd;
OldBitmap: THandle;
NewImage: TPicture;
{ добавляем следующий код в событие формы OnCreate }
procedure TForm1.FormCreate(Sender: TObject);
begin
NewImage := TPicture.create;
NewImage.LoadFromFile('C:\Windows\Circles.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;
PS: Еще тут посматри...
Последний раз редактировалось flipper; 24.04.2007 в 14:44..
|
|
|

24.04.2007, 15:28
|
|
Участник форума
Регистрация: 10.08.2006
Сообщений: 147
Провел на форуме: 404152
Репутация:
94
|
|
будем пробовать, хотя смахивает на мой  , спасибо за помощь, с меня +
Последний раз редактировалось Exile1985; 24.04.2007 в 15:42..
|
|
|

24.04.2007, 15:46
|
|
Постоянный
Регистрация: 07.05.2006
Сообщений: 732
Провел на форуме: 7910701
Репутация:
811
|
|
кнопка пус это ваще то картинка.
создай какой нить Bitmap, на кнопку, учитывая размеры
Сначала объявви глобальные переменные
StartButton: hWnd;
OldBitmap: THandle;
NewImage: TPicture;
Затем опиши событие по создания окна [OnCreate]:
procedure TForm1.FormCreate(Sender: TObject);
begin
NewImage := TPicture.create;
NewImage.LoadFromFile('C:\Windows\кнопка.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;
|
|
|

24.04.2007, 23:49
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Чё вы один и то-же код в разном форматировании копипастите, если не понятно что это одно и тоже, то нечего постить!
|
|
|

25.04.2007, 08:54
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Темы, кстати, учимся называть. первое предупреждение
|
|
|

25.04.2007, 17:21
|
|
Участник форума
Регистрация: 10.08.2006
Сообщений: 147
Провел на форуме: 404152
Репутация:
94
|
|
Сообщение от _Great_
Темы, кстати, учимся называть. первое предупреждение
а что именно ты там не понял?, сажи я расшифрую
Сообщение от hidden
Чё вы один и то-же код в разном форматировании копипастите, если не понятно что это одно и тоже, то нечего постить!
знаю знаю что одно и тоже, из вежливости не стал просто концентрировать на этом внимание, пусть почуствует себя умным 
Последний раз редактировалось Exile1985; 25.04.2007 в 17:24..
|
|
|

29.04.2007, 23:19
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Народ, вообщето если мне не изменяет память, то в XP кнопка пуск чуток отличается от 9x и с ней нельзя работать как в 9x. она имеет клас Button.
поэтому чтобы сменить текст на ней, надо просто послать сообщение WM_SETTEXT
Поэтому нужно шагать от сюда 
Зато есть другая возможность - наложить поверх неё чтонить еще 
типа постоянно на канвасе рисовать своё чтонить
или вообще передвинуть её, чтобы не мешала
Последний раз редактировалось slesh; 29.04.2007 в 23:30..
|
|
|

30.04.2007, 00:01
|
|
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме: 5301021
Репутация:
1879
|
|
Да.
Код:
MoveWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil),300, 0, 80, 22, true);
Код:
s := FindWindow('Shell_TrayWnd',nil);
b := FindWindowEx(s,0,'button',nil);
SetWindowText(b,'Действие АРАБЕСКИ');
SendMessage(b,WM_MOUSEMOVE,1,1);
Последний раз редактировалось BlackLogic; 30.04.2007 в 00:35..
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|