cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
27 juin 2003 à 21:22
cs_VERTY
Messages postés40Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention21 avril 2008
-
1 juil. 2003 à 16:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_VERTY
Messages postés40Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention21 avril 2008 1 juil. 2003 à 16:22
Pour Clefaye.
Lorsque mon programme se charge pour la première fois tant que je n'ai pas sollicité LOCKWORKSTATION je peux fermer normalement ma session mais dès que j'y ai recours une fois c'est plus possible
CleyFaye
Messages postés23Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention21 août 2003 1 juil. 2003 à 15:37
dr pour la fonction :)
par contre, j'ai fait un mini prog avec juste cette fonction, une fenètre et un bouton pour appeler la fonction, et j'ai pas eu de problème, ni pour fermer la session, ni pour changer d'utilisateur... je pense que le problème vient d'une autre partie de ton prog :/
cs_VERTY
Messages postés40Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention21 avril 2008 1 juil. 2003 à 15:19
Merci à Cleyfaye pour la correction dans ma fonction.
As tu idée du pourquoi je ne peux pas fermer Ma session lorsque mon programme est chargé.
Je le met juste après sur le site il s'agit d'un programme qui se met dans la barre des taches et qui me permet de sauvegarder la position des icones de mon bureau.Et de les restaurer si besoin.
CleyFaye
Messages postés23Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention21 août 2003 1 juil. 2003 à 13:55
Pourquoi un exe?
Pour utiliser juste la commande, c'est nul c'est vrai, mais pour inclure cette commande dans un prog. plus complexe, c'est pas pratique un raccourci...
mayeul79
Messages postés1Date d'inscriptionmercredi 25 juin 2003StatutMembreDernière intervention 1 juillet 2003 1 juil. 2003 à 13:48
pourquoi compiler un exe ???
il suffit de créer un raccourci avec la commande suivante :
%windir%System32
undll32.exe user32.dll ,LockWorkStation
Pierre -newbie en Delphi
dev vb, Asp, php,...
;-)
CleyFaye
Messages postés23Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention21 août 2003 30 juin 2003 à 19:40
Hum... plus sécurisé, mais quelques petites erreurs:
LockWorkStation;
Result := True
devrait ètre remplacé par Result := FermerRapideStation;
cs_VERTY
Messages postés40Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention21 avril 2008 30 juin 2003 à 19:06
Moi j'ai écris cette fonction dans un programme que je mettrais bientot sur le site.
J'ai remarqué que lorqu'un programme etait chargé avec LOCKWORKSTATION on 'arrivais plus à fermer unse session.
Je suis obligé de décharger mon programme pour fermer ma session
Function FermerStation: Boolean;
Type
TFermerRapideStation = Function: Boolean;
Var
hUser32 : HModule;
FermerRapideStation : TFermerRapideStation;
Begin
Result := False;
hUser32 := GetModuleHandle('USER32.DLL');
If hUser32 <> 0 Then
Begin
@FermerRapideStation := GetProcAddress(hUser32, 'LockWorkStation');
If @FermerRapideStation <> Nil Then
Begin
LockWorkStation;
Result := True;
End;
End;
End;
CleyFaye
Messages postés23Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention21 août 2003 30 juin 2003 à 11:53
pour ceux qui aurait besoin d'aide, déclarez une fonction comme celle là dans une de vos unitées:
function LockWorkStation:boolean;stdcall;external 'user32.dll';
où alors faire un appel indirect pour ètre sur que cette fonction est disponible sur le système:
type
boolfunc:FUNCTION:boolean;
procedure LockWorkStation;
var
libh:THandle;
proc:boolfunc;
begin
libh:=LoadLibrary('user32.dll')
proc:=GetProcAddress(libh,'LockWorkStation');
if assigned(proc) then proc else showmessage('Fonction indisponible sur le système');
FreeLibrary(libh);
end;
Voila, je pense pas qu'il y ait trop d'erreurs la dessus
cs_VERTY
Messages postés40Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention21 avril 2008 28 juin 2003 à 08:38
Ne se trouve pas dans une untité mais dans la librairie USER32.DLL
du moins pour les versions XP
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 27 juin 2003 à 21:22
Et dans quelle unité est déclarée cette procédure magique ?
1 juil. 2003 à 16:22
Lorsque mon programme se charge pour la première fois tant que je n'ai pas sollicité LOCKWORKSTATION je peux fermer normalement ma session mais dès que j'y ai recours une fois c'est plus possible
1 juil. 2003 à 15:37
par contre, j'ai fait un mini prog avec juste cette fonction, une fenètre et un bouton pour appeler la fonction, et j'ai pas eu de problème, ni pour fermer la session, ni pour changer d'utilisateur... je pense que le problème vient d'une autre partie de ton prog :/
1 juil. 2003 à 15:19
As tu idée du pourquoi je ne peux pas fermer Ma session lorsque mon programme est chargé.
Je le met juste après sur le site il s'agit d'un programme qui se met dans la barre des taches et qui me permet de sauvegarder la position des icones de mon bureau.Et de les restaurer si besoin.
1 juil. 2003 à 13:55
Pour utiliser juste la commande, c'est nul c'est vrai, mais pour inclure cette commande dans un prog. plus complexe, c'est pas pratique un raccourci...
1 juil. 2003 à 13:48
il suffit de créer un raccourci avec la commande suivante :
%windir%System32
undll32.exe user32.dll ,LockWorkStation
Pierre -newbie en Delphi
dev vb, Asp, php,...
;-)
30 juin 2003 à 19:40
LockWorkStation;
Result := True
devrait ètre remplacé par Result := FermerRapideStation;
30 juin 2003 à 19:06
J'ai remarqué que lorqu'un programme etait chargé avec LOCKWORKSTATION on 'arrivais plus à fermer unse session.
Je suis obligé de décharger mon programme pour fermer ma session
Function FermerStation: Boolean;
Type
TFermerRapideStation = Function: Boolean;
Var
hUser32 : HModule;
FermerRapideStation : TFermerRapideStation;
Begin
Result := False;
hUser32 := GetModuleHandle('USER32.DLL');
If hUser32 <> 0 Then
Begin
@FermerRapideStation := GetProcAddress(hUser32, 'LockWorkStation');
If @FermerRapideStation <> Nil Then
Begin
LockWorkStation;
Result := True;
End;
End;
End;
30 juin 2003 à 11:53
function LockWorkStation:boolean;stdcall;external 'user32.dll';
où alors faire un appel indirect pour ètre sur que cette fonction est disponible sur le système:
type
boolfunc:FUNCTION:boolean;
procedure LockWorkStation;
var
libh:THandle;
proc:boolfunc;
begin
libh:=LoadLibrary('user32.dll')
proc:=GetProcAddress(libh,'LockWorkStation');
if assigned(proc) then proc else showmessage('Fonction indisponible sur le système');
FreeLibrary(libh);
end;
Voila, je pense pas qu'il y ait trop d'erreurs la dessus
28 juin 2003 à 08:38
du moins pour les versions XP
27 juin 2003 à 21:22