probleme de structure ?

Le
Pierre BOUSQUET
Bonjour,

J'essai de récupérer les Handle des icones du systray, pour cela je
dois réaliser un SendMessage(hTray, TB_GETBUTTON, b, &tbut) ou &tbut
est un pointeur d'une structure :

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
dwData est une entier sur 4 octets sans signe
iString est une entier sur 4 octets sans signe
FIN

dont la définition est issue de msdn :

typedef struct _TBBUTTON {
int iBitmap;
int idCommand;
BYTE fsState;
BYTE fsStyle;
#ifdef _WIN64
BYTE bReserved[6] // padding for alignment
#elif defined(_WIN32)
BYTE bReserved[2] // padding for alignment
#endif
DWORD_PTR dwData;
INT_PTR iString;
} TBBUTTON, NEAR *PTBBUTTON *LPTBBUTTON;


lorsque j'exécute le SendMessage(), j'ai une erreur 'explorer.exe' avec
plantage complet de la barre windows (biensur)

Je n'arrive pas à voir d'ou vient le problème

merci d'avance

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre BOUSQUET
Le #14663251
dsl j'ai envoyé une mauvaise définition de structure :

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
bReserved1 est un caractère
bReserved2 est un caractère
dwData est une entier
iString est une entier
FIN


le prob reste le même


Pierre BOUSQUET a exprimé avec précision :
Bonjour,

J'essai de récupérer les Handle des icones du systray, pour cela je dois
réaliser un SendMessage(hTray, TB_GETBUTTON, b, &tbut) ou &tbut est un
pointeur d'une structure :

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
dwData est une entier sur 4 octets sans signe
iString est une entier sur 4 octets sans signe
FIN

dont la définition est issue de msdn :

typedef struct _TBBUTTON {
int iBitmap;
int idCommand;
BYTE fsState;
BYTE fsStyle;
#ifdef _WIN64
BYTE bReserved[6] // padding for alignment
#elif defined(_WIN32)
BYTE bReserved[2] // padding for alignment
#endif
DWORD_PTR dwData;
INT_PTR iString;
} TBBUTTON, NEAR *PTBBUTTON *LPTBBUTTON;


lorsque j'exécute le SendMessage(), j'ai une erreur 'explorer.exe' avec
plantage complet de la barre windows (biensur)

Je n'arrive pas à voir d'ou vient le problème

merci d'avance



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
SSX
Le #14663241
Bonjour, pierre

dans la structure en C il y a un if donc dans ta structure tu as un reserved
de trop

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un entier sur 1 octet sans signe
fsStyle est un entier sur 1 octet sans signe
bReserved est entier sur 1 octet sans signe
dwData est une entier
iString est une entier
FIN

voila, moi j'aurais vu ca comme ca

bon dev
@+

"Pierre BOUSQUET"
dsl j'ai envoyé une mauvaise définition de structure :

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
bReserved1 est un caractère
bReserved2 est un caractère
dwData est une entier
iString est une entier
FIN


le prob reste le même


Pierre BOUSQUET a exprimé avec précision :
Bonjour,

J'essai de récupérer les Handle des icones du systray, pour cela je dois
réaliser un SendMessage(hTray, TB_GETBUTTON, b, &tbut) ou &tbut est un
pointeur d'une structure :

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
dwData est une entier sur 4 octets sans signe
iString est une entier sur 4 octets sans signe
FIN

dont la définition est issue de msdn :

typedef struct _TBBUTTON {
int iBitmap;
int idCommand;
BYTE fsState;
BYTE fsStyle;
#ifdef _WIN64
BYTE bReserved[6] // padding for alignment
#elif defined(_WIN32)
BYTE bReserved[2] // padding for alignment
#endif
DWORD_PTR dwData;
INT_PTR iString;
} TBBUTTON, NEAR *PTBBUTTON *LPTBBUTTON;


lorsque j'exécute le SendMessage(), j'ai une erreur 'explorer.exe' avec
plantage complet de la barre windows (biensur)

Je n'arrive pas à voir d'ou vient le problème

merci d'avance



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "




Pierre BOUSQUET
Le #14663231
merci pour ta réponse

toujours le même problème...

SSX a formulé la demande :
Bonjour, pierre

dans la structure en C il y a un if donc dans ta structure tu as un reserved
de trop

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un entier sur 1 octet sans signe
fsStyle est un entier sur 1 octet sans signe
bReserved est entier sur 1 octet sans signe
dwData est une entier
iString est une entier
FIN

voila, moi j'aurais vu ca comme ca

bon dev
@+

"Pierre BOUSQUET"
dsl j'ai envoyé une mauvaise définition de structure :

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
bReserved1 est un caractère
bReserved2 est un caractère
dwData est une entier
iString est une entier
FIN


le prob reste le même


Pierre BOUSQUET a exprimé avec précision :
Bonjour,

J'essai de récupérer les Handle des icones du systray, pour cela je dois
réaliser un SendMessage(hTray, TB_GETBUTTON, b, &tbut) ou &tbut est un
pointeur d'une structure :

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
dwData est une entier sur 4 octets sans signe
iString est une entier sur 4 octets sans signe
FIN

dont la définition est issue de msdn :

typedef struct _TBBUTTON {
int iBitmap;
int idCommand;
BYTE fsState;
BYTE fsStyle;
#ifdef _WIN64
BYTE bReserved[6] // padding for alignment
#elif defined(_WIN32)
BYTE bReserved[2] // padding for alignment
#endif
DWORD_PTR dwData;
INT_PTR iString;
} TBBUTTON, NEAR *PTBBUTTON *LPTBBUTTON;


lorsque j'exécute le SendMessage(), j'ai une erreur 'explorer.exe' avec
plantage complet de la barre windows (biensur)

Je n'arrive pas à voir d'ou vient le problème

merci d'avance



-- Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "







--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Eric Laurent
Le #14663221
Es-tu sur de la syntaxe de la fonction sendmessage ?

Sur MSDN on a:

LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);

Ce qui donne en WinDev:

RetourFonction est un entier
hWnd est un entier
Msg est un entier sans signe
wParam est un entier
lParam est un entier
RetourFonction=API("USER32","SendMessageA",hWnd,Msg,wParam,lParam)

--
Eric Laurent

(enlever nospam.)
Pierre BOUSQUET
Le #14663211
pratiquement et je suis également sur de mon hTray puisque précédemment
j'exécute un NbIcones = SendMessage(hTray, WM_USER + 24, 0, 0) sans
problèmes, c'est pour cela que le problème doit venir des paramètres, b
étant le n° de l'icone (donc simple) le problème doit venir de la
structure.


Dans son message précédent, Eric Laurent a écrit :
Es-tu sur de la syntaxe de la fonction sendmessage ?

Sur MSDN on a:

LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);

Ce qui donne en WinDev:

RetourFonction est un entier
hWnd est un entier
Msg est un entier sans signe
wParam est un entier
lParam est un entier
RetourFonction=API("USER32","SendMessageA",hWnd,Msg,wParam,lParam)



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Eric Laurent
Le #14663171
Le 02/03/2007, Pierre BOUSQUET a supposé :
pratiquement et je suis également sur de mon hTray puisque précédemment
j'exécute un NbIcones = SendMessage(hTray, WM_USER + 24, 0, 0) sans
problèmes, c'est pour cela que le problème doit venir des paramètres, b étant
le n° de l'icone (donc simple) le problème doit venir de la structure.





J'ai regardé le MSDN ET apparemment la déclaration de structure devrait
donner cela:

//En WIN64
TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
bReserved est un entier sur 6 octets
dwData est un entier sans signe
iString est un entier
FIN

//En WIN32
TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
bReserved est un entier sur 2 octets
dwData est un entier sans signe
iString est un entier
FIN


--
Eric Laurent

(enlever nospam.)
patrice
Le #14663161
"Pierre BOUSQUET" news:
Bonjour,

J'essai de récupérer les Handle des icones du systray, pour cela je
dois réaliser un SendMessage(hTray, TB_GETBUTTON, b, &tbut) ou &tbut
est un pointeur d'une structure :

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
dwData est une entier sur 4 octets sans signe
iString est une entier sur 4 octets sans signe
FIN



fsState est un entier sans signe sur 1 octets
fsStyle est un entier sans signe sur 1 octets
bReserved est un entier sans signe sur 2 octets


lorsque j'exécute le SendMessage(), j'ai une erreur 'explorer.exe' avec
plantage complet de la barre windows (biensur)




on peut voir le code du sendmessage ?
Pierre BOUSQUET
Le #14662841
même problème



TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un entier sans signe sur 1 octets
fsStyle est un entier sans signe sur 1 octets
bReserved est un entier sans signe sur 2 octets
dwData est un entier sans signe
iString est un entier
FIN
Liste est chaîne = ExeListeProcessus(exePID,exeNomLong)
b est entier
pid est entier
Char est une chaîne
NbIcones est entier
hProc est entier // Handle de explorer.exe
hTray est un entier // Handle du systray
tbut est un TBBUTTON

BOUCLE
b++
Char=ExtraitChaîne(Liste,b,RC)
SI Char=EOT ALORS SORTIR
SI Position(Minuscule(Char),"explorer.exe") ALORS
hProc=ExtraitChaîne(Char,1)
SORTIR
FIN
FIN

hTray =
WindowsGetHandleSystem("Shell_TrayWnd"+TAB+"TrayNotifyWnd"+TAB+"SysPager"+TAB+"ToolbarWindow32")
SI hTray=-1 ALORS RETOUR

// Constante TB_BUTTONCOUNT = WM_USER + 24
NbIcones = SendMessage(hTray, WM_USER + 24, 0, 0)

Trace(NbIcones)

POUR b=0 A NbIcones-1
// constante TB_GETBUTTON = WM_USER + 23
SendMessage(hTray, WM_USER + 23, b, &tbut)
FIN





patrice a couché sur son écran :
"Pierre BOUSQUET" news:
Bonjour,

J'essai de récupérer les Handle des icones du systray, pour cela je
dois réaliser un SendMessage(hTray, TB_GETBUTTON, b, &tbut) ou &tbut
est un pointeur d'une structure :

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
dwData est une entier sur 4 octets sans signe
iString est une entier sur 4 octets sans signe
FIN



fsState est un entier sans signe sur 1 octets
fsStyle est un entier sans signe sur 1 octets
bReserved est un entier sans signe sur 2 octets


lorsque j'exécute le SendMessage(), j'ai une erreur 'explorer.exe' avec
plantage complet de la barre windows (biensur)




on peut voir le code du sendmessage ?



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
patrice
Le #14662811
si le tbbutton est alloué par windev, c'est normal

voir http://www.codeproject.com/shell/ctrayiconposition.asp

"Pierre BOUSQUET" news:
même problème



TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un entier sans signe sur 1 octets
fsStyle est un entier sans signe sur 1 octets
bReserved est un entier sans signe sur 2 octets
dwData est un entier sans signe
iString est un entier
FIN
Liste est chaîne = ExeListeProcessus(exePID,exeNomLong)
b est entier
pid est entier
Char est une chaîne
NbIcones est entier
hProc est entier // Handle de explorer.exe
hTray est un entier // Handle du systray
tbut est un TBBUTTON

BOUCLE
b++
Char=ExtraitChaîne(Liste,b,RC)
SI Char=EOT ALORS SORTIR
SI Position(Minuscule(Char),"explorer.exe") ALORS
hProc=ExtraitChaîne(Char,1)
SORTIR
FIN
FIN

hTray >


WindowsGetHandleSystem("Shell_TrayWnd"+TAB+"TrayNotifyWnd"+TAB+"SysPager"+TA
B+"ToolbarWindow32")
SI hTray=-1 ALORS RETOUR

// Constante TB_BUTTONCOUNT = WM_USER + 24
NbIcones = SendMessage(hTray, WM_USER + 24, 0, 0)

Trace(NbIcones)

POUR b=0 A NbIcones-1
// constante TB_GETBUTTON = WM_USER + 23
SendMessage(hTray, WM_USER + 23, b, &tbut)
FIN





patrice a couché sur son écran :
> "Pierre BOUSQUET" > news:
>> Bonjour,
>>
>> J'essai de récupérer les Handle des icones du systray, pour cela je
>> dois réaliser un SendMessage(hTray, TB_GETBUTTON, b, &tbut) ou &tbut
>> est un pointeur d'une structure :
>>
>> TBBUTTON est une structure
>> iBitmap est un entier
>> idCommand est un entier
>> fsState est un caractère
>> fsStyle est un caractère
>> dwData est une entier sur 4 octets sans signe
>> iString est une entier sur 4 octets sans signe
>> FIN
>>
> fsState est un entier sans signe sur 1 octets
> fsStyle est un entier sans signe sur 1 octets
> bReserved est un entier sans signe sur 2 octets
>
>>
>> lorsque j'exécute le SendMessage(), j'ai une erreur 'explorer.exe' avec
>> plantage complet de la barre windows (biensur)
>>
>
> on peut voir le code du sendmessage ?

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "




Pierre BOUSQUET
Le #14662791
si j'ai bien compris il me faudrait allouer de la mémoire dans le
processus du Tray, donc

lpData =
API("KERNEL32","VirtualAllocEx",hTray,Null,Dimension(tbut),4096,4)

patrice a exposé le 05/03/2007 :
si le tbbutton est alloué par windev, c'est normal

voir http://www.codeproject.com/shell/ctrayiconposition.asp

"Pierre BOUSQUET" news:
même problème



TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un entier sans signe sur 1 octets
fsStyle est un entier sans signe sur 1 octets
bReserved est un entier sans signe sur 2 octets
dwData est un entier sans signe
iString est un entier
FIN
Liste est chaîne = ExeListeProcessus(exePID,exeNomLong)
b est entier
pid est entier
Char est une chaîne
NbIcones est entier
hProc est entier // Handle de explorer.exe
hTray est un entier // Handle du systray
tbut est un TBBUTTON

BOUCLE
b++
Char=ExtraitChaîne(Liste,b,RC)
SI Char=EOT ALORS SORTIR
SI Position(Minuscule(Char),"explorer.exe") ALORS
hProc=ExtraitChaîne(Char,1)
SORTIR
FIN
FIN

hTray >>


WindowsGetHandleSystem("Shell_TrayWnd"+TAB+"TrayNotifyWnd"+TAB+"SysPager"+TA
B+"ToolbarWindow32")
SI hTray=-1 ALORS RETOUR

// Constante TB_BUTTONCOUNT = WM_USER + 24
NbIcones = SendMessage(hTray, WM_USER + 24, 0, 0)

Trace(NbIcones)

POUR b=0 A NbIcones-1
// constante TB_GETBUTTON = WM_USER + 23
SendMessage(hTray, WM_USER + 23, b, &tbut)
FIN





patrice a couché sur son écran :
"Pierre BOUSQUET" news:
Bonjour,

J'essai de récupérer les Handle des icones du systray, pour cela je
dois réaliser un SendMessage(hTray, TB_GETBUTTON, b, &tbut) ou &tbut
est un pointeur d'une structure :

TBBUTTON est une structure
iBitmap est un entier
idCommand est un entier
fsState est un caractère
fsStyle est un caractère
dwData est une entier sur 4 octets sans signe
iString est une entier sur 4 octets sans signe
FIN



fsState est un entier sans signe sur 1 octets
fsStyle est un entier sans signe sur 1 octets
bReserved est un entier sans signe sur 2 octets


lorsque j'exécute le SendMessage(), j'ai une erreur 'explorer.exe' avec
plantage complet de la barre windows (biensur)




on peut voir le code du sendmessage ?



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "





--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Publicité
Poster une réponse
Anonyme