Handle

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 7 nov. 2004 à 00:32
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 30 août 2006 à 08:28
Saluté,

Est-il possible de récupérer le Handle de l'horloge windows afin d'y modifier le texte.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]

15 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2004 à 01:37
Pas la voie normale ton affaire, dis plutot pourquoi il devrait changer le texte.
Si tu changes les parametres d'affichage horaires, utilise dans ce genre:

if(SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, "dd/MM/yyyy")
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);

Tu adapteras syntaxe VB.

ciao...
BruNews, MVP VC++
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
7 nov. 2004 à 11:43
Bhà justement j'ai poster une source qui est une simple horloge mais à l'origine cette jorloge devais être dans le systray et comme celle-ci est du texte voilà pourquoi je recherchais par le biais de l'horloge déjà placer car pour le moment il n'y a que elle qui m'offre la possibilité d'afficher du texte via le changement de data dans la base de registre. Alors j'ai bien essayez des méthodes pour mettre à jour la base de registre mais rien n'y fait, c'est pour cela que je cherchais à savoir si cela était faisable d'intervenir directement via le handle sur l'horloge, un peu comme le menu Démarrer (voir précédentes sources auquelle tu avais répondue) : http://www.vbfrance.com/code.aspx?ID=26748

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2004 à 12:12
Si vraiment tu veux son handle alors procede idem, suffit de regarder avec SPY++ qui te dit le ClassName = 'TrayClockWClass'.

ciao...
BruNews, MVP VC++
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
7 nov. 2004 à 13:24
J'avais jamais utiliser SPY++ je pensais que cela s'utilisait avec C++

MErci

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
7 nov. 2004 à 14:02
Voici ce que j'ai noter dans le script :

'Pour changer le titre
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As Long) As Long

Private Sub Command1_Click()
    Dim HwndWin As Long
    'Obtenir le handle
    HwndWin = FindWindow("TrayClockWClass", "")
    HwndWin = FindWindowEx(HwndWin, 0, "BUTTON", 0)
    'Changer le texte !
    SetWindowText HwndWin, Text1.Text
End Sub


J'ai essayé avec : HwndWin = FindWindowEx(HwndWin, 0, "TEXT", 0)

mais rien n'y fait. une idée ?

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
7 nov. 2004 à 14:12
Donc j'ai rechercher et suis tomber avec ce résultat :

HwndWin = FindWindow("TrayNotifyWnd", "")
    HwndWin = FindWindowEx(HwndWin, 0, "TrayClockWClass", 0)


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2004 à 14:14
Faudra surement controller chaque handle retourne pour voir si <> NULL pour savoir ou peut bloquer.

La WinClock est le type meme de fenetre a rafraichissement permanent alors faut voir si utile de faire cela, elle risque de remettre son texte illico.

ciao...
BruNews, MVP VC++
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
7 nov. 2004 à 14:14
y'a t'il moyen de récupérer la classe (au format fichier) de l'horloge afin de la remplacer ?

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2004 à 14:20
desole mais alors rien compris a ta demande.
Une classe est un enregistrement par Windows avec RegisterClassEx(), il n'a rien a mettre en fichier.

ciao...
BruNews, MVP VC++
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
7 nov. 2004 à 14:24
Mince je pensais peut-être pouvoir remplacer le fichier qui gère cette horloge.

Juste pour confirmation, le code était t'il correct ?

HwndWin = FindWindow("TrayNotifyWnd", "")
HwndWin = FindWindowEx(HwndWin, 0, "TrayClockWClass", 0)


ou est-ce :

HwndWin = FindWindow("Shell_TrayWnd", "")
HwndWin = FindWindowEx(HwndWin, 0, "TrayClockWClass", 0)


Car c'est la 1ère fois que j'utilise Spy++ et je ne sais pas si je me comprend vraiment ce qu'il me dit, enfin surtout si j'interprète bien les infos comme il le faut. MErci

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2004 à 14:39
Faut obtenir handle en suivant arborescence indiquee par SPY++.
Pas le temps de tester, j'ai du taf et je te laisse finir.

ciao...
BruNews, MVP VC++
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 nov. 2004 à 11:37
hWnd = FindWindow("Shell_TrayWnd", vbNullString)
hWnd = FindWindowEx(hWnd, 0, "TrayNotifyWnd", vbNullString)
hWnd = FindWindowEx(hWnd, 0, "TrayClockWClass", vbNullString)

pour le texte, un moyen un peu crade, mais simple pour VB, c'est de placer un controle par dessus l'heure.... (SetParent)

hWnd = FindWindow("Shell_TrayWnd", vbNullString)
hWnd = FindWindowEx(hWnd, 0, "TrayNotifyWnd", vbNullString)
hWnd = FindWindowEx(hWnd, 0, "TrayClockWClass", vbNullString)

Private Declare Function SetParent Lib "user32.dll" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Sub text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Unload Me
End Sub

Private Sub Form_Load()
    Dim hWnd As Long
    hWnd = FindWindow("Shell_TrayWnd", vbNullString)
    hWnd = FindWindowEx(hWnd, 0, "TrayNotifyWnd", vbNullString)
    hWnd = FindWindowEx(hWnd, 0, "TrayClockWClass", vbNullString)

    SetParent Text1.hWnd, hWnd
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    SetParent Text1.hWnd, Me.hWnd
End Sub

Private Sub Timer1_Timer()
    Text1.Text = Timer
End Sub


Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
8 nov. 2004 à 13:36
Le pb c'est que mon texte peux aller jusqu'à 46 caractères et donc les icônes seront caché par le texte.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
cs_boutemine Messages postés 78 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 21 mars 2018 2
29 août 2006 à 21:39
Merde pour les Dev qui disent que leurs niveau est Supppppppp... Nous somme les débutants nou voulons voir quelque exemples sur les Api et surtous Mois ===> RegisterClassEx je veut de l'aide s'il vous plais
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 août 2006 à 08:28
Je n'aime pas du tout le ton que tu prends....


la documentation sur les API Windows est sur le Net, sur MSDN


http://search.msdn.microsoft.com

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Rejoignez-nous