Titre:Barre des tâches-astuces
Un exemple de code qui monter quelque astuce sur la barre des taches...
Source / Exemple :
{ # ## ## ## #
####################
#### # # # ####
### ###
### ##### ###
### ####### ###
### ###### # ###### ###
### # ## # # ## # ###
### ###### ###### ###
### ### ###
### ### ###
###### ### ######
### ### ### ###
### ## ################### ## ###
### ## ## ## ## ## #####
### # ## ## ## ## ###
### ## ## ## # ###
#### ## ## ## ####
##### ## #####
########
}
{=============================================================
Titre:Barre des tâches-astuces
Auteur: H@PPyZERØ5
E-mail: happy05@programmer.net
==============================================================}
//
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Registry, StdCtrls, ComCtrls, Menus, ExtCtrls;
type
TForm1 = class(TForm)
But_Cacher_bouton_Demarrer: TButton;
But_Cacher_partie_centrale: TButton;
But_Cacher_horloge: TButton;
But_FlashWindow: TButton;
tab: TPageControl;
Tab0: TTabSheet;
Tab1: TTabSheet;
Tab23: TTabSheet;
But_Afficher_horloge: TButton;
Tab3: TTabSheet;
Tab4: TTabSheet;
Tab5: TTabSheet;
Tab6: TTabSheet;
But_Afficher_partie_centrale: TButton;
But_Afficher_bouton_Demarrer: TButton;
But_d_zone_notification: TButton;
Memo_tab3: TMemo;
Memo_tab4: TMemo;
Memo_tab5: TMemo;
Tab7: TTabSheet;
Tab8: TTabSheet;
Tab9: TTabSheet;
Memo_tab10: TMemo;
RadioButton9: TRadioButton;
RadioButton10: TRadioButton;
But_Position: TButton;
Tab10: TTabSheet;
Tab11: TTabSheet;
Tab12: TTabSheet;
Tab13: TTabSheet;
Memo_tab11: TMemo;
Memo12: TMemo;
PopupMenu1: TPopupMenu;
popup_show: TMenuItem;
popup_close: TMenuItem;
Tab14: TTabSheet;
applications_handle_list: TListView;
But_Actualiser: TButton;
Tab15: TTabSheet;
Tab16: TTabSheet;
Memo_tab2: TMemo;
But_Cacher_barre_d_taches: TButton;
But_Aficher_barre_d_taches: TButton;
Memo_tab13: TMemo;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
But_ok2: TButton;
Memo_tab6: TMemo;
But_Cacher_partie_droite: TButton;
But_Afficher_partie_droite: TButton;
Memo_tab8: TMemo;
But_Bloquer_barre_taches: TButton;
But_Debloquer_barre_taches: TButton;
Memo_tab9: TMemo;
But_Bloquer_bouton_Demarrer: TButton;
But_Debloquer_bouton_Demarrer: TButton;
Memo_tab7: TMemo;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
But_ok1: TButton;
Memo_tab15: TMemo;
Edit1: TEdit;
But_Modifier: TButton;
Memo_tab14: TMemo;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
But_ok3: TButton;
Memo_tab16: TMemo;
RadioButton7: TRadioButton;
RadioButton8: TRadioButton;
RadioButton11: TRadioButton;
RadioButton12: TRadioButton;
But_ok4: TButton;
popup_hide: TMenuItem;
popup_other: TMenuItem;
But_ok5: TButton;
Tab17: TTabSheet;
Tab18: TTabSheet;
Tab19: TTabSheet;
Memo_tab17: TMemo;
Memo_tab18: TMemo;
Memo_tab19: TMemo;
But_ok6: TButton;
But_ok7: TButton;
RadioButton13: TRadioButton;
RadioButton14: TRadioButton;
RadioButton15: TRadioButton;
RadioButton16: TRadioButton;
RadioButton17: TRadioButton;
RadioButton18: TRadioButton;
Edit2: TEdit;
But_ok8: TButton;
Memo_tab20: TMemo;
Tab20: TTabSheet;
Tab21: TTabSheet;
But_deplacer_btn_demarrer: TButton;
Memo_tab21: TMemo;
Memo_tab22: TMemo;
procedure But_ok2Click(Sender: TObject);
procedure But_ok3Click(Sender: TObject);
procedure But_ok1Click(Sender: TObject);
procedure But_ok4Click(Sender: TObject);
procedure But_Cacher_bouton_DemarrerClick(Sender: TObject);
procedure But_Cacher_partie_centraleClick(Sender: TObject);
procedure But_Cacher_barre_d_tachesClick(Sender: TObject);
procedure But_Aficher_barre_d_tachesClick(Sender: TObject);
procedure But_Debloquer_barre_tachesClick(Sender: TObject);
procedure But_Bloquer_barre_tachesClick(Sender: TObject);
procedure But_Cacher_horlogeClick(Sender: TObject);
procedure But_FlashWindowClick(Sender: TObject);
procedure But_Afficher_horlogeClick(Sender: TObject);
procedure But_Afficher_partie_centraleClick(Sender: TObject);
procedure But_Afficher_bouton_DemarrerClick(Sender: TObject);
procedure But_d_zone_notificationClick(Sender: TObject);
procedure But_PositionClick(Sender: TObject);
procedure But_ActualiserClick(Sender: TObject);
procedure popup_showClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure But_ModifierClick(Sender: TObject);
procedure But_Cacher_partie_droiteClick(Sender: TObject);
procedure popup_closeClick(Sender: TObject);
procedure But_Afficher_partie_droiteClick(Sender: TObject);
procedure But_Debloquer_bouton_DemarrerClick(Sender: TObject);
procedure But_Bloquer_bouton_DemarrerClick(Sender: TObject);
procedure popup_otherClick(Sender: TObject);
procedure popup_hideClick(Sender: TObject);
procedure But_ok5Click(Sender: TObject);
procedure But_ok6Click(Sender: TObject);
procedure But_ok7Click(Sender: TObject);
procedure But_ok8Click(Sender: TObject);
procedure But_deplacer_btn_demarrerClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{=============================================================
procedure Registre_Write
==============================================================}
procedure Registre_Write(Key:string;valeur:string;donnees:string);
var
Registre: TRegistry;
begin
Registre := TRegistry.Create;
try
Registre.RootKey := HKEY_CURRENT_USER;
if Registre.OpenKey(Key, True)
then
begin
Registre.WriteString(valeur, donnees);
ShowMessage('Ok');
Registre.CloseKey;
end
else
ShowMessage('probléme');
finally
Registre.Free;
end;
end;
{=============================================================
function GetText
==============================================================}
function GetText(Wnd : HWND):string;
var textlength : integer;
text : PChar;
begin
textlength:=SendMessage(Wnd,WM_GETTEXTLENGTH,0,0);
if textlength=0 then Result := ''
else
begin
getmem(text,textlength+1);
SendMessage(Wnd,WM_GETTEXT,textlength+1,Integer(text));
Result:=text;
freemem(text);
end;
end;
{=============================================================
Function EnumWindowsProc
==============================================================}
Function EnumWindowsProc (Wnd: HWND; LParam:
LPARAM): BOOL; stdcall;
begin
Result := True;
if (IsWindowVisible(Wnd) or IsIconic(wnd)) and
((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
(GetWindowLong(Wnd, GWL_HWNDPARENT) =
GetDesktopWindow)) and
(GetWindowLong(Wnd, GWL_EXSTYLE) and
WS_EX_TOOLWINDOW = 0) then
begin
with Form1.applications_handle_list.Items.Add do
begin
caption :=(GetText(Wnd));
subitems.Add(Inttostr(Wnd));
end;
end;
end;
{=============================================================
désactiver le menu de la barre des tâche lorsque
vous cliquez avec le bouton droit de la souris :
==============================================================}
procedure TForm1.But_ok2Click(Sender: TObject);
begin
//désactivée.
if RadioButton1.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'NoTrayContextMenu','0');
//activée.
if RadioButton2.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'NoTrayContextMenu','1');
end;
{=============================================================
Verrouiller la barre des tâches (l'utilisateur ne peut plus déplacer ou
redimensionner la barre des tâches)
==============================================================}
procedure TForm1.But_ok3Click(Sender: TObject);
begin
//désactivée.
if RadioButton3.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'LockTaskbar','0');
//activée.
if RadioButton4.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'LockTaskbar','1');
end;
{=============================================================
Ne pas afficher de barres d'outils personnalisées :
==============================================================}
procedure TForm1.But_ok1Click(Sender: TObject);
begin
//désactivée.
if RadioButton5.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'NoToolbarsOnTaskbar','0');
//activée.
if RadioButton6.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'NoToolbarsOnTaskbar','1');
end;
{=============================================================
Modifier le comportement du regroupement de la barre des tâches
==============================================================}
procedure TForm1.But_ok4Click(Sender: TObject);
begin
//regrouper par âge (le groupe le plus ancien sera regroupé en premier)
if RadioButton7.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',
'TaskBarGroupSize','0');
//regrouper par taille (le groupe le plus important sera regroupé en premier)
if RadioButton8.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',
'TaskBarGroupSize','1');
//regrouper tous les groupes avec deux fenêtres ouvertes ou plus
if RadioButton11.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',
'TaskBarGroupSize','2');
//regrouper tous les groupes avec trois fenêtres ouvertes ou plus
if RadioButton12.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',
'TaskBarGroupSize','3');
end;
{=============================================================
Masquer la zone de notification
==============================================================}
procedure TForm1.But_d_zone_notificationClick(Sender: TObject);
begin
//désactivée.
if RadioButton9.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'NoTrayItemsDisplay','0');
//activée.
if RadioButton10.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'NoTrayItemsDisplay','1');
end;
{=============================================================
Cacher et afficher le bouton Démarrer
==============================================================}
procedure HideShowStartButton(boolVisible: Boolean);
var
startbutton_handle:hWnd;
Tray, Child: hWnd;
C: array[0..127] of Char;
S: string;
begin
Tray := FindWindow('Shell_TrayWnd', nil);
Child := GetWindow(Tray, GW_CHILD);
while Child <> 0 do
begin
if GetClassName(Child, C, SizeOf(C)) > 0 then
begin
S := StrPas(C);
if UpperCase(S) = 'BUTTON' then
begin
startbutton_handle := child;
ShowWindow(Child, Integer(boolVisible))
end;
end;
Child := GetWindow(Child, GW_HWNDNEXT);
end;
end;
//Cacher le bouton Démarrer
procedure TForm1.But_Cacher_bouton_DemarrerClick(Sender: TObject);
begin
HideShowStartButton(false);
end;
//Afficher le bouton Démarrer
procedure TForm1.But_Afficher_bouton_DemarrerClick(Sender: TObject);
begin
HideShowStartButton(true);
end;
{=============================================================
Cacher et afficher la partie centrale de la barre des tâches
==============================================================}
//function TaskmanWindow
function TaskmanWindow: HWND;
type
TGetTaskmanWindow = function(): HWND; stdcall;
var
hUser32: THandle;
GetTaskmanWindow: TGetTaskmanWindow;
begin
Result := 0;
hUser32 := GetModuleHandle('user32.dll');
if (hUser32 > 0) then
begin
@GetTaskmanWindow := GetProcAddress(hUser32,
'GetTaskmanWindow');
if Assigned(GetTaskmanWindow) then
begin
Result := GetTaskmanWindow;
end;
end;
end;
//procedure ShowTaskmanWindow
procedure ShowTaskmanWindow(bValue: Boolean);
var
hTaskmanWindow: Hwnd;
begin
hTaskmanWindow := TaskmanWindow;
if hTaskmanWindow <> 0 then
begin
ShowWindow(GetParent(hTaskmanWindow),
Ord(bValue));
end;
end;
//Cacher la partie centrale de la barre des tâches
procedure TForm1.But_Cacher_partie_centraleClick(Sender: TObject);
begin
ShowTaskmanWindow(False);
end;
//Afficher la partie centrale de la barre des tâches
procedure TForm1.But_Afficher_partie_centraleClick(Sender: TObject);
begin
ShowTaskmanWindow(true);
end;
{=============================================================
Aficher et cacher la barre des tâches
==============================================================}
//Rendre invisible le Barre des tâches :
procedure TForm1.But_Cacher_barre_d_tachesClick(Sender: TObject);
begin
ShowWindow(FindWindow
('Shell_TrayWnd',nil), SW_HIDE);
end;
//Rendre visible le Barre des tâches :
procedure TForm1.But_Aficher_barre_d_tachesClick(Sender: TObject);
begin
ShowWindow(FindWindow
('Shell_TrayWnd',nil), SW_SHOWNA);
end;
{=============================================================
Bloquer et débloquer la barre des tâches
==============================================================}
//Bloquer la barre des tâches
procedure TForm1.But_Bloquer_barre_tachesClick(Sender: TObject);
begin
EnableWindow(FindWindow
('Shell_TrayWnd',nil),False);
end;
//Débloquer la barre des tâches
procedure TForm1.But_Debloquer_barre_tachesClick(Sender: TObject);
begin
EnableWindow(FindWindow
('Shell_TrayWnd',nil),True);
end;
{=============================================================
Cacher et afficher l'horloge
==============================================================}
//procedure ShowClock
procedure ShowClock(Show : boolean);
var
TrayWnd, TrayNotifyWnd, ClockWnd : Hwnd;
begin
TrayWnd := FindWindow('Shell_TrayWnd', nil);
TrayNotifyWnd := FindWindowEx(TrayWnd,0,'TrayNotifyWnd',
nil);
ClockWnd :=
FindWindowEx(TrayNotifyWnd,0,'TrayClockWClass', nil);
if Show then
ShowWindow(ClockWnd,SW_SHOW)
else
ShowWindow(ClockWnd,SW_HIDE)
end;
//Cacher l'horloge
procedure TForm1.But_Cacher_horlogeClick(Sender: TObject);
begin
ShowClock(false);
{
OR :
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'HideClock','0');
}
end;
//Afficher l'horloge
procedure TForm1.But_Afficher_horlogeClick(Sender: TObject);
begin
ShowClock(true);
{
OR :
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'HideClock','1');
}
end;
{=============================================================
FlashWindow
==============================================================}
procedure TForm1.But_FlashWindowClick(Sender: TObject);
begin
FlashWindow(Handle, True);
FlashWindow(Application.Handle, True);
end;
{=============================================================
la position de la barre des tache
==============================================================}
procedure TForm1.But_PositionClick(Sender: TObject);
var
barre_d_tache : HWND;
pos : TRect;
begin
barre_d_tache:=FindWindow('Shell_TrayWnd',nil);
GetWindowRect(barre_d_tache,pos);
//Dessus
if (pos.Top < Screen.Height DIV 2) and (pos.Bottom <= Screen.Width DIV 2)
then ShowMessage('Dessus')
else
//En bas
if (pos.Top > Screen.Height DIV 2) and (pos.Right >= Screen.Width)
then ShowMessage('En bas')
else
//Gauche
if (pos.left < Screen.Width DIV 2) and (pos.Top <= 0)
then ShowMessage('Gauche')
else
//Droite
if pos.Left >= Screen.Width DIV 2
then ShowMessage('Droite');
end;
{=============================================================
Actualiser tab
==============================================================}
procedure TForm1.But_ActualiserClick(Sender: TObject);
var
Param : Longint;
begin
EnumWindows(@EnumWindowsProc , Param);
end;
{=============================================================
PopupMenu
==============================================================}
//
procedure TForm1.popup_showClick(Sender: TObject);
var
applications_handle:integer;
begin
applications_handle:=strtoint(applications_handle_list.Selected.SubItems[0]);
ShowWindow(applications_handle, CmdShow);
end;
//
procedure TForm1.popup_closeClick(Sender: TObject);
var
applications_handle:integer;
begin
applications_handle:=strtoint(applications_handle_list.Selected.SubItems[0]);
SendMessage(applications_handle,WM_CLOSE,0,0);
end;
//
procedure TForm1.popup_hideClick(Sender: TObject);
var
applications_handle:integer;
begin
applications_handle:=strtoint(applications_handle_list.Selected.SubItems[0]);
ShowWindow(applications_handle, SW_HIDE);
end;
//
procedure TForm1.popup_otherClick(Sender: TObject);
begin
//Other...
end;
{=============================================================
FormCreate
==============================================================}
procedure TForm1.FormCreate(Sender: TObject);
var
Param : Longint;
begin
EnumWindows(@EnumWindowsProc , Param);
end;
{=============================================================
Modifier le text de bouton Démarrer
==============================================================}
procedure TForm1.But_ModifierClick(Sender: TObject);
var
TrayWnd,Button:hwnd;
begin
TrayWnd:=FindWindow('Shell_TrayWnd',nil);
Button:=FindWindowEx(TrayWnd,0,'Button',nil);
SetWindowText(Button,PAnsiChar(Edit1.Text));
SendMessage(Button,Messages.WM_MOUSEMOVE,0,0);
end;
{=============================================================
Cacher et afficher la partie de droite de la barre des tâches
(L'aire de notification de la barre des tâches)
==============================================================}
//Cacher
procedure TForm1.But_Cacher_partie_droiteClick(Sender: TObject);
var
TrayWnd,TrayNotifyWnd:hwnd;
begin
TrayWnd:=FindWindow('Shell_TrayWnd',nil);
TrayNotifyWnd:=FindWindowEx(TrayWnd,0,'TrayNotifyWnd',nil);
ShowWindow(TrayNotifyWnd,SW_HIDE);
SendMessage(TrayNotifyWnd,Messages.WM_MOUSEMOVE,0,0);
end;
//Afficher
procedure TForm1.But_Afficher_partie_droiteClick(Sender: TObject);
var
TrayWnd,TrayNotifyWnd:hwnd;
begin
TrayWnd:=FindWindow('Shell_TrayWnd',nil);
TrayNotifyWnd:=FindWindowEx(TrayWnd,0,'TrayNotifyWnd',nil);
ShowWindow(TrayNotifyWnd,SW_SHOW);
SendMessage(TrayNotifyWnd,Messages.WM_MOUSEMOVE,0,0);
end;
{=============================================================
Bloquer et débloquer le bouton Démarrer
==============================================================}
//Bloquer le bouton Démarrer
procedure TForm1.But_Debloquer_bouton_DemarrerClick(Sender: TObject);
begin
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',
nil),0,'Button',nil),true);
end;
//Débloquer le bouton Démarrer
procedure TForm1.But_Bloquer_bouton_DemarrerClick(Sender: TObject);
begin
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',
nil),0, 'Button', nil),false);
end;
{=============================================================
TaskbarAnimations d1
==============================================================}
//
procedure TForm1.But_ok5Click(Sender: TObject);
begin
if RadioButton13.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',
'TaskbarAnimations','0');
//
if RadioButton14.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',
'TaskbarAnimations','1');
end;
{=============================================================
TaskbarGlomming d1
==============================================================}
//
procedure TForm1.But_ok6Click(Sender: TObject);
begin
if RadioButton15.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',
'TaskbarGlomming','0');
//
if RadioButton16.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',
'TaskbarGlomming','1');
end;
{=============================================================
TaskbarSizeMove d0
==============================================================}
//
procedure TForm1.But_ok7Click(Sender: TObject);
begin
if RadioButton17.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',
'TaskbarSizeMove','0');
//
if RadioButton18.Checked=true then
Registre_Write('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',
'TaskbarSizeMove','1');
end;
{=============================================================
Un texte dans la barre des tâches (a la droite de l'horloge)
==============================================================}
procedure TForm1.But_ok8Click(Sender: TObject);
begin
//
Registre_Write('\Control Panel\International',
's1159',Edit2.text);
//
Registre_Write('\Control Panel\International',
'sTimeFormat','HH:mm tt');
end;
{=============================================================
déplacer le bouton Démarrer
==============================================================}
procedure TForm1.But_deplacer_btn_demarrerClick(Sender: TObject);
var
TrayWnd,Button:hwnd;
begin
TrayWnd:=FindWindow('Shell_TrayWnd',nil);
Button:=FindWindowEx(TrayWnd,0,'Button',nil);
MoveWindow(Button,0,0,100,30,true);
SendMessage(Button,Messages.WM_MOUSEMOVE,0,0);
End;
end.
//to be continued...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.