begin process at 2010 03 18 14:08:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > CHARGEMENT DU CURSEUR 'MAIN' DE WINDOWS, RÉSOLUTION VARIABLES D'ENVIRONNEMENT

CHARGEMENT DU CURSEUR 'MAIN' DE WINDOWS, RÉSOLUTION VARIABLES D'ENVIRONNEMENT


 Information sur la source

 Description

Suite à mon code de 'Récupération des curseurs Windows', voici une nouvelle fonction qui permet, sous 2000/XP, de charger le curseur 'Main' de Windows (.CUR ou .ANI) et de remplacer crHandPoint.
Il utilise une fonction de résolution de variables d'environnement, pour ceux qui ne connaisse pas, '%SYSTEMROOT%\Cursors' = 'C:\WINDOWS\Cursors', etc...

Source

  • // Retourne un nom de fichier avec résolution des variables d'environnement
  • // Filename: nom contenant
  • function ExpandEnv(s: string): string;
  • var
  • Res: Cardinal;
  • Name: PChar;
  • begin
  • // Alloue la mémoire
  • GetMem(Name, MAX_PATH);
  • // Appel de la fonction de résolution de variables
  • Res := ExpandEnvironmentStrings(PChar(s), Name, MAX_PATH);
  • // Si la mémoire allouée n'est pas assez grande, le résultat est la taille
  • // nécessaire devant être allouée
  • if Res > MAX_PATH then
  • begin
  • // Réallocation de la mémoire et nouvel appel
  • GetMem(Name, Res);
  • ExpandEnvironmentStrings(PChar(s), Name, Res);
  • end;
  • Result := Name;
  • // Libération de la mémoire
  • FreeMem(Name);
  • end;
  • function LoadWindowsHand: boolean;
  • var
  • s: string;
  • Res: HCURSOR;
  • begin
  • // Initialise les variables
  • Result := true;
  • s := '';
  • // Vérifie si un fichier est définit dans la base de registre
  • with TRegistry.Create do
  • try
  • RootKey := HKEY_CURRENT_USER;
  • if Openkey('\Control Panel\Cursors', false) then
  • begin
  • s := ExpandEnv(ReadString('Hand'));
  • CloseKey;
  • end;
  • finally
  • Free;
  • end;
  • // Vérifie si le fichier existe
  • if (s <> '') and FileExists(s) then
  • // Essaie de charger le fichier
  • Res := LoadCursorFromFile(Pchar(s))
  • else
  • // Essaie de charger le curseur Windows par défaut
  • Res := LoadCursor(0, IDC_HAND);
  • // Un curseur a été chargé si Res n'est pas nul
  • if Res <> 0 then
  • // Remplace le curseur Delphi 'crHandPoint'
  • Screen.Cursors[crHandPoint] := Res
  • else
  • // Aucun curseur n'a été chargé
  • Result := false;
  • end;
// Retourne un nom de fichier avec résolution des variables d'environnement
//  Filename: nom contenant
function ExpandEnv(s: string): string;
var
    Res: Cardinal;
    Name: PChar;
begin
    // Alloue la mémoire
    GetMem(Name, MAX_PATH);
    // Appel de la fonction de résolution de variables
    Res := ExpandEnvironmentStrings(PChar(s), Name, MAX_PATH);
    // Si la mémoire allouée n'est pas assez grande, le résultat est la taille
    // nécessaire devant être allouée
    if Res > MAX_PATH then
    begin
        // Réallocation de la mémoire et nouvel appel
        GetMem(Name, Res);
        ExpandEnvironmentStrings(PChar(s), Name, Res);
    end;
    Result := Name;
    // Libération de la mémoire
    FreeMem(Name);
end;

function LoadWindowsHand: boolean;
var
    s: string;
    Res: HCURSOR;
begin
    // Initialise les variables
    Result := true;
    s := '';

    // Vérifie si un fichier est définit dans la base de registre
    with TRegistry.Create do
    try
        RootKey := HKEY_CURRENT_USER;
        if Openkey('\Control Panel\Cursors', false) then
        begin
            s := ExpandEnv(ReadString('Hand'));
            CloseKey;
        end;
    finally
        Free;
    end;
    // Vérifie si le fichier existe
    if (s <> '') and FileExists(s) then
        // Essaie de charger le fichier
        Res := LoadCursorFromFile(Pchar(s))
    else
        // Essaie de charger le curseur Windows par défaut
        Res := LoadCursor(0, IDC_HAND);

    // Un curseur a été chargé si Res n'est pas nul
    if Res <> 0 then
        // Remplace le curseur Delphi 'crHandPoint'
        Screen.Cursors[crHandPoint] := Res
    else
        // Aucun curseur n'a été chargé
        Result := false;
end;


 Conclusion

J'utilise la fonction de résolution depuis très longtemps et je n'ai jamais eu de soucis avec, pour le chargement du curseur, je n'ai pas eu de problème.
Si vous voyez une quelconque erreur, une portion inutile ou non optimisée, n'hésitez pas à laisser vos modifications, parce que je compte bien utiliser celle-ci dans la majorité de mes programmes.


 Sources du même auteur

Source avec Zip Source avec une capture SCREENSOURCE, RÉCUPÉRATION DES COULEURS ÉCRAN EN RVB, TSL, T...
Source avec Zip Source avec une capture TXPBACKGROUNDPANEL
Source avec Zip Source avec une capture PARSER XML SIMPLE (V2.0)+ TXMLINIFILE
RECUPERATION DES CURSEURS WINDOWS

 Sources de la même categorie

Source avec Zip NEXTGENS -> UNITÉS DE TYPES ÉVOLUÉS NOUVELLE GÉNÉRATION (DE... par f0xi
Source avec Zip Source avec une capture AUTO-COMPLÉTION D'UN CONTRÔLE DE SAISIE par Bacterius
Source avec Zip CARDS GAME SDK 1.0.0.0 par f0xi
Source avec Zip Source avec une capture TRAYICON - VOTRE ICONE DANS LA BARRE DES TACHES par Bacterius
Source avec Zip Source avec une capture WINHIDER _ CACHER UN PROGRAMME DE L'ÉCRAN ET DE LA BARRE DE ... par soldier8514

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales