Accueil > > > 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
SCREENSOURCE, RÉCUPÉRATION DES COULEURS ÉCRAN EN RVB, TSL, T...SCREENSOURCE, RÉCUPÉRATION DES COULEURS ÉCRAN EN RVB, TSL, TSV, CAPTURE D'ÉCRAN, ADOBE COLOR PICKERMise à disposition du code sous Delphi 7, par contre, comme je n'ai plus trop le temps, c'est bourré de bugs!
Mise à jour version 2.0
Cela faisait...
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0 par odewit
Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la li...
Cliquez pour lire la suite de l'article par odewit TECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVERTECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVER par ROMELARD Fabrice
Speaker : Nadia Ben El Kadi Configuration machine La session commence par la toute première question à se poser lors de la mise en place d'environnement SQL Server, la configuration des machines : Type de mac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SITECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SI par ROMELARD Fabrice
Speakers : Fabrice Barbin, Samuel Blanchard, Julien Lo Presti Titre Prometteur et attractif invitant à voir comment lier le composant ludique Kinect dans le cadre d'une structure IT classique, notamment au travers de la plat...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOURTECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOUR par ROMELARD Fabrice
KeyNotes du premier jour pour les développeurs. La session est principalement axée sur une des principales directions prise par Microsoft à travers tous ses nouveaux produits : Cloud privé ou public (Solution Azure) ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|