I have a code like this:
TBBUTTONINFO mtbbi; HWND hwnd; HANDLE hProc; DWORD dwProcessID; void* lpData;
.....
GetWindowThreadProcessId(hwnd, &dwProcessID); hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, dwProcessID); lpData = VirtualAllocEx(hProc , 0, sizeof(TBBUTTONINFO), MEM_COMMIT, PAGE_READWRITE); memset(&mtbbi,0,sizeof(mtbbi)); mtbbi.cbSize=sizeof(TBBUTTONINFO); mtbbi.dwMask=TBIF_BYINDEX|TBIF_LPARAM; WriteProcessMemory(hProc,lpData,&mtbbi,sizeof(TBBUTTONINFO),&dwBytesRead); SendMessage(hwnd, TB_GETBUTTONINFO, 0, (LPARAM)lpData); ReadProcessMemory(hProc, lpData, &mtbbi, sizeof(TBBUTTONINFO), &dwBytesRead);
where hwnd is the toolbar handle. This handle is valid, other messages (e.g. TB_BUTTONCOUNT or TB_GETBUTTON ) work fine. So, this code works correctly on Windows XP, but when I try to run it on Windows 7 x64, SendMessage returns -1, which means an error. I tried to use GETBUTTONINFOA instead of GETBUTTONINFO , but the result is the same.
What am I doing wrong?
source share