Renommer le menu démarrer

Partagez votre expérience de PureBasic avec les autres utilisateurs.
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Renommer le menu démarrer

Message par AWEAR »

Voila un code permettant de changer le texte dans la barre de tâches et d'appliquer quelques petits effets amusants :

Code : Tout sélectionner

Procedure SetDemarrer(newtexte$, state)
c$ = ""
OpenLibrary(0, "user32.dll")
handle.l = CallFunction(0, "FindWindowA", "Shell_TrayWnd", "")
handle2.l = CallFunction(0, "GetWindow", handle, 5)
CallFunction(0, "GetClassNameA", handle2, @c$, 100)
If c$ = "Button"
CallFunction(0, "SetWindowTextA", handle2, newtexte$)
ShowWindow_(handle2, state)
EndIf
handle3.l = CallFunction(0, "GetWindow", handle2, 2)
CallFunction(0, "GetClassNameA", handle3, @c$, 100)
If c$ = "Button"
CallFunction(0, "SetWindowTextA", handle3, newtexte$)
ShowWindow_(handle3, state)
EndIf
handle4.l = CallFunction(0, "GetWindow", handle3, 2)
CallFunction(0, "GetClassNameA", handle4, @c$, 100)
ShowWindow_(handle4, state)
If c$ = "Button"
CallFunction(0, "SetWindowTextA", handle4, newtexte$)
EndIf
CloseLibrary(0)
EndProcedure

SetDemarrer("Awear", 1)
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

EXCELLENT ! :D
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message par AWEAR »

A noter la possibilité de cacher le systray, la partie centrale de la barre de tache ou de supprimer le bouton demarrer et de désactiver la touche raccourci de windows respectivement :
en utilisant "ReBarWindow32" pour la partie centrale
en utilisant "TrayNotifyWnd" pour le systray
et envoyant le message WM_CLOSE au boutton démarrer
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Very good 8)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Avec la v4 beta 3 et XP , j'ai une erreur Invalid memory access et le curseur rouge se place sur le EndProcedure :?

J'ai mis des debug pour visualiser les c$ , et j'obtiens dans l'ordre:

Button
TrayNotifyWnd
ReBarWindow32


Déjà , le prog fonctionne jusqu'au dernier c$ , c'est après que ça plante !
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message par AWEAR »

Essaye de mettre ces fonctions (extraites de la droopy lib ) à la fin de la procedure pour essayer voir d'où vient le problème.

Code : Tout sélectionner

Procedure GetLastError() 
  ; Error 1309 or 0 = No error 
  
  LastError=GetLastError_()
  If LastError=1309 : LastError=0 : EndIf
  ProcedureReturn LastError
EndProcedure

Procedure.s GetLastErrorAsText(LastError.l)
  
  If LastError 
    *ErrorBuffer = AllocateMemory(1024) 
    FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM, 0, LastError, 0, *ErrorBuffer, 1024, 0) 
    message.s=PeekS(*ErrorBuffer) 
    FreeMemory(*ErrorBuffer) 
  EndIf 
  
  ProcedureReturn message
EndProcedure
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Il y a une erreur:

Remplace c$=""

par

c$ = Space(100)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ok en mettant c$=space(100) je n'ai plus l'erreur , et c'est sympa le truc :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Répondre