Mar 23

Ce code permet de :

  • récupérer la dimension et la position de l’écran principal
  • afficher une barre de progression sur le bouton de l’application dans la barre des tâches

Je l’ai implémenté afin de pouvoir appeler ses fonctions quelque soit la plateforme sans avoir à faire des {$IFDEF plateforme}...{$ENDIF} dans le code principal de l’application (d’où les méthodes vides).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
unit uWindowsOnly;

interface

{$IFDEF MSWINDOWS}
uses Winapi.Windows, System.SysUtils, FMX.Dialogs, System.Win.ComObj, Winapi.ShlObj, FMX.Platform.Win;
{$ENDIF}

const
  TBPF_NOPROGRESS    =  0;
  TBPF_INDETERMINATE = $1;
  TBPF_NORMAL        = $2;
  TBPF_ERROR         = $4;
  TBPF_PAUSED        = $8;

type
  TTaskButton = class
    private
{$IFDEF MSWINDOWS}
      tbl : ITaskbarList;
      tbl3: ITaskbarList3;  // Fournis de nombreuses fonctions supplémentaires
{$ENDIF}
    public
      constructor Create;
      procedure   SetProgressState(handle: NativeUInt; state: SmallInt);
      procedure   SetProgressValue(handle: NativeUInt; value, max: Integer);
  end;

function PrimaryScreenLeft  : Integer;
function PrimaryScreenWidth : Integer;
function PrimaryScreenTop   : Integer;
function PrimaryScreenHeight: Integer;

implementation

{$region 'Taille du moniteur principal'}
function PrimaryScreenLeft: Integer;
begin
  Result := 0;
end;

function PrimaryScreenTop: Integer;
begin
  Result := 0;
end;

{$IFDEF MSWINDOWS}
function PrimaryScreenWidth: Integer;
begin
  Result := GetSystemMetrics(SM_CXSCREEN);
end;

function PrimaryScreenHeight: Integer;
begin
  Result := GetSystemMetrics(SM_CYVIRTUALSCREEN);
end;
{$ELSE}
function PrimaryScreenWidth: Integer;
begin
  Result := 0;
end;

function PrimaryScreenHeight: Integer;
begin
  Result := 0;
end;
{$ENDIF}
{$endregion}

{ TTaskButton }

constructor TTaskButton.Create;
begin
{$IFDEF MSWINDOWS}
  // Windows 7 or 8
  if CheckWin32Version(6, 1) or CheckWin32Version(6, 2) then
  begin
    // Création des objets nécessaires
    tbl := CreateComObject(CLSID_TaskbarList) as ITaskbarList;
    tbl.HrInit;  // Initialisation
    Supports(tbl, IID_ITaskbarList3, tbl3);
  end;
{$ENDIF}
end;

procedure TTaskButton.SetProgressState(handle: NativeUInt; state: SmallInt);
begin
{$IFDEF MSWINDOWS}
  if Assigned(tbl3) then
  begin
    tbl3.SetProgressState(FmxHandleToHWND(handle), state);
  end;
{$ENDIF}
end;

procedure TTaskButton.SetProgressValue(handle: NativeUInt; value, max: Integer);
begin
{$IFDEF MSWINDOWS}
  if Assigned(tbl3) then
  begin
    tbl3.SetProgressValue(FmxHandleToHWND(handle), value, max);
  end;
{$ENDIF}
end;

end.

 
J’avais déjà rédigé un article concernant l’utilisation des fonctionnalités liées à la barre des tâches de Windows 7.
Dans le code ci-dessus, il n’y a que deux différences notables :

  • En plus de Windows 7, on teste également Windows 8 : CheckWin32Version(6, 2)
  • Le Handle à utiliser pour les appels aux différentes procédures n’est plus directement Self.Handle mais FmxHandleToHWND(Self.Handle) puisque le développement est basé sur le framework FireMonkey.

Si vous avez des questions concernant le développement, l’implémentation, n’hésitez pas en laissant un commentaire ! ;)

Share

Pages : 1 2

Lien permanent vers wBootAnimationFramesGenerator Rédigé par Whiler \\ Tags : , , , ,

5 réponses pour “wBootAnimationFramesGenerator”

  1. Whiler a dit :

    Version 1.0.1.1 :

    • Icônes sur les boutons
    • Sauvegarde et ouverture des configurations
    • Paramètre pour l’application contenant le fichier de configuration à ouvrir
    • Glisser-déposer d’un fichier de configuration sur le bouton pour en ouvrir une
    • Bouton pour obtenir des réglages aléatoires pour une animation

    Répondre

  2. Whiler a dit :

    Version 1.0.2.4 :

    • Ajout d’une fenêtre À propos de… visible en appuyant sur la touche F1
    • Impossible d’ajouter des caractères interdits par le système d’exploitation dans le champ Séparateur
    • Vérification de la mise à disposition d’une nouvelle version en cliquant sur le numéro de version depuis la fenêtre À propos de…

    Répondre

  3. Whiler a dit :

    Version 1.1.0.6 :

    • Menu contextuel sur les images source et destination :
      • Génération d’une image monochrome
      • Copier l’image dans le presse-papier
      • Coller l’image du presse-papier
    Menu contextuel

    Menu contextuel

    Générer une image

    Générer une image

    Répondre

  4. Whiler a dit :

    Version 1.1.1.7 :

    • Dimension de l’image en gras lorsque la taille réelle de l’image source est affichée
    • En cliquant sur les dimensions de l’image, l’application est si possible, redimensionnée pour afficher l’image à sa taille réelle
    • Nouveaux raccourcis clavier :
      • F5 : Génération des frames
      • F12 : Sauvegarder la configuration actuelle

    Répondre

  5. Whiler a dit :

    Version 1.1.2.9 :

    • Sous Windows 7 & 8, affichage de la progression de la génération des frames sur le bouton de l’application de la barre des tâches
    Progression de la génération des frames

    Progression de la génération des frames

    Répondre

Laisser une réponse

(requis)

(requis)

*

Notifiez-moi les commentaires à venir via email. Vous pouvez aussi vous abonner sans commenter.

;) (lol) (y) |-( (hi) 8-) (angel) :s (clap) (bow) (tmi) (:| plus »