Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Вниз

Как сделать прозрачным главное меню пуск?   Найти похожие ветки 

 
Nikfel   (2009-06-20 20:40) [0]

Подскажите, пожалуйста. Как сделать прозрачность для меню пуск? Для панели задач и меню я делал так:

procedure TForm1.Timer1Timer(Sender: TObject);
var h:cardinal;
begin
h:=FindWindow("Shell_TrayWnd",nil);
SetWindowLong(h,GWL_EXSTYLE,GetWindowLong(h,GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(h,0, 200, LWA_ALPHA);
h:=FindWindow("BaseBar",nil);
SetWindowLong(h,GWL_EXSTYLE,GetWindowLong(h,GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(h,0, 200, LWA_ALPHA);
end;


Но вот с главным меню пуск такое не проходит. Пытался получить хандл так:
H:=FindWindow("Shell_TrayWnd",nil);
H:=FindWindowEx(H,0,"DV2ControlHost","Главное меню");

Но прозрачным меню всеравно не стало. Как осуществить такое? Заранее спасибо.


 
AIK ©   (2009-06-21 08:51) [1]

А ты не пробовал проверить находит ли он твоё окно?

h:=FindWindow("Shell_TrayWnd",nil);
If h<>0 then
 // Значит находит


 
AIK ©   (2009-06-21 08:56) [2]

Вот вариант только что придумал по книжке Фленова

Var
H: HWND;
old: longint;
x: Integer;
begin
x:= 100; // прозрачность от 0 до 255
h:=FindWindow("Shell_TrayWnd",nil);
If h<>0 then
 begin
  old:=GetWindowLongA(h,GWL_EXSTYLE);
  SetWindowLongA(h,GWL_EXSTYLE,old or $80000);
  SetLayeredWindowAttributes(h, 0, x, $2);
end;


 
Nikfel   (2009-06-21 09:45) [3]

Ну это только панель задачь делает прозрачным, но вот с главным меню пуск, такое не проходит, даже если знаешь хандле.


 
Nikfel   (2009-06-21 10:17) [4]

Разобрался как делать главное меню пуск прозрачным:

Var
H: HWND;
old: longint;
x: Integer;
begin
x:= 100; // прозрачность от 0 до 255
h:=FindWindow("DV2ControlHost",nil);
If h<>0 then
begin
 old:=GetWindowLongA(h,GWL_EXSTYLE);
 SetWindowLongA(h,GWL_EXSTYLE,old or $80000);
 SetLayeredWindowAttributes(h, 0, x, $2);
end;


У меня не получалось сделать из-за того что хандле не правильно получал. Сейчас вроде работает нормально.

Спасибо.


 
CSS   (2009-06-21 11:29) [5]

У меня не становится прозрачным... :(


 
Nikfel   (2009-06-21 11:48) [6]

Просто надо поместить это в таймер, а иначе не все будет прозрачным.
procedure transparent(H:hwnd; transparent:integer);
var old: longint;
begin
If h<>0 then
begin
old:=GetWindowLongA(h,GWL_EXSTYLE);
SetWindowLongA(h,GWL_EXSTYLE,old or $80000);
SetLayeredWindowAttributes(h, 0, transparent, $2);
end;
end;

procedure TForm1.Timer2Timer(Sender: PObj);
begin
transparent(FindWindow("DV2ControlHost",nil),255);
transparent(FindWindow("Shell_TrayWnd",nil),255);
transparent(FindWindow("BaseBar",nil),255);
end;


 
AIK ©   (2009-06-21 13:36) [7]

Красива мигает
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Timer1: TTimer;
   Button2: TButton;
   Button3: TButton;
   Button4: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 x, y: integer;
implementation

{$R *.dfm}
procedure transparent(H:hwnd; transparent:integer);
var old: longint;
begin
If h<>0 then
begin
old:=GetWindowLongA(h,GWL_EXSTYLE);
SetWindowLongA(h,GWL_EXSTYLE,old or $80000);
SetLayeredWindowAttributes(h, 0, transparent, $2);
end;
end;

procedure TForm1.Button1Click(Sender: TObject); //Для Старт Стоп Таймера
Begin
If timer1.Enabled=true then
Timer1.Enabled:= false else
Timer1.Enabled:= true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
X:= 255;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
transparent(FindWindow("DV2ControlHost",nil),x);
transparent(FindWindow("Shell_TrayWnd",nil),x);
transparent(FindWindow("BaseBar",nil),x);
If x>= 255 then y:=0 else
If x<=0 then y:=1;

 case y  of
  0:x:=x-5;
  1:x:=x+5;
 end;
end;

end.


 
AIK ©   (2009-06-21 13:38) [8]


>  procedure Button3Click(Sender: TObject);
>  procedure Button4Click(Sender: TObject);


это лишнее


 
юзер   (2009-06-21 21:10) [9]

If timer1.Enabled=true then
Timer1.Enabled:= false else
Timer1.Enabled:= true;


Ужас! Куда мир катится..


 
Б   (2009-06-21 21:20) [10]


> Ужас! Куда мир катится..


Timer1.Enabled:= not Timer1.Enabled;


 
CSS   (2009-06-22 01:27) [11]

Теперь получилось... :)

 >  Красива мигает

А у меня тот код очень интересно себя ведёт при разворачивании пункта "Программы" и его подпунктов... (Классическое меню "Пуск")



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.015 c
4-1214295759
Sashahttp
2008-06-24 12:22
2009.08.16
Определить "Код экземпляра устройства" (CD-ROM)


1-1211907969
Smart
2008-05-27 21:06
2009.08.16
Нужен алгоритм.


2-1245219624
b/@.
2009-06-17 10:20
2009.08.16
Странный зависон приложения :(


15-1245097806
Юрий
2009-06-16 00:30
2009.08.16
С днем рождения ! 16 июня 2009 вторник


15-1245341259
Кто б сомневался
2009-06-18 20:07
2009.08.16
Speed Gear - ускоритель или замедлитель 3D игр - принцип работы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский