Page 1 sur 1

Renommer le menu démarrer

Publié : sam. 18/févr./2006 10:12
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)

Publié : sam. 18/févr./2006 10:28
par Backup
EXCELLENT ! :D

Publié : sam. 18/févr./2006 10:34
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

Publié : sam. 18/févr./2006 13:18
par Droopy
Very good 8)

Publié : sam. 18/févr./2006 14:11
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 !

Publié : sam. 18/févr./2006 15:23
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

Publié : sam. 18/févr./2006 16:39
par nico
Il y a une erreur:

Remplace c$=""

par

c$ = Space(100)

Publié : sam. 18/févr./2006 20:37
par comtois
ok en mettant c$=space(100) je n'ai plus l'erreur , et c'est sympa le truc :)