Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme de structure ?

12 réponses
Avatar
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. "

10 réponses

1 2
Avatar
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. "
Avatar
SSX
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" a écrit dans le message de news:

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. "




Avatar
Pierre BOUSQUET
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" a écrit dans le message de news:

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. "
Avatar
Eric Laurent
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.)
Avatar
Pierre BOUSQUET
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. "
Avatar
Eric Laurent
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.)
Avatar
patrice
"Pierre BOUSQUET" a écrit dans le message de
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 ?
Avatar
Pierre BOUSQUET
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" a écrit dans le message de
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. "
Avatar
patrice
si le tbbutton est alloué par windev, c'est normal

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

"Pierre BOUSQUET" a écrit dans le message de
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" a écrit dans le message de
> 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. "




Avatar
Pierre BOUSQUET
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" a écrit dans le message de
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" a écrit dans le message de
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. "
1 2