|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 1, 2004 13:22:40 Как определить idcommand кнопки в другом приложение? делал : ttb TBBUTTON <> ........ ....... invoke SendMessage,хэндл toolbara,TB_GETBUTTON,3,addr ttb ....... ...... mov eax,ttb.idCommand но eax = 0 что делать? |
|
|
Дата: Июл 1, 2004 14:06:08 Правка ksinon Было такое обсуждение. Кажется, можно работать с этим только в пределах одного адресного пространства процесса. Возможно, я ошибаюсь… |
|
|
Дата: Июл 1, 2004 14:26:11 · Поправил: bogrus Я тоже такое припоминаю , ещё сам пробывал таким макаром достать из тулбара в трее . Может пригодиться всё или этот кусочек : // hToolbar - handle to toolbar control
// PID - process containing the toolbar
// nBtnIndex - zero-based index of simulated button
void SimulateToolbarBtnPress(HWND hToolbar, DWORD PID, int nBtnIndex)
{
TBBUTTON bt;
HANDLE hProc;
void* pRemoteBuf;
// get control ID of our button
//
hProc = OpenProcess( PROCESS_ALL_ACCESS, NULL, PID );
pRemoteBuf = VirtualAllocEx( hProc, NULL, sizeof(TBBUTTON), MEM_COMMIT, PAGE_READWRITE );
SendMessage( hToolbar,TB_GETBUTTON,nBtnIndex,(LPARAM)pRemoteBuf );
ReadProcessMemory( hProc,pRemoteBuf,(void*)&bt,sizeof(TBBUTTON),NULL );
VirtualFreeEx( hProc,pRemoteBuf,sizeof(TBBUTTON),MEM_RELEASE );
CloseHandle(hProc);
// simulate button press
//
::PostMessage( ::GetParent(hToolbar), WM_COMMAND, (WPARAM)bt.idCommand, (LPARAM)hToolbar);
} |
|
|
Дата: Июл 1, 2004 14:28:26 действительно сделал ttb TBBUTTON <> ........ ....... invoke SendMessage,хэндл toolbara,TB_GETBUTTON,3,addr ttb ....... ...... mov eax,ttb.idCommand в томже процессе и idcommand определи Тогда какие есть варианты чтобы можно было разблокировать кнопку? invoke SendMessage,htoolbar,TB_ENABLEBUTTON,ttb.idcommand,1 ; разблокировать кнопку invoke SendMessage,htoolbar,TB_INDETERMINATE ,ttb.idcommand,0 ;показать |
|
|
Дата: Июл 1, 2004 14:29:42 забыл! В другом процессе! |
|
|
Дата: Июл 1, 2004 14:41:56 ksinon - а какая разница - в том процессе, или в другом? сначала TB_GETBUTTON а потом TB_SETBUTTONINFO |
|
|
Дата: Июл 1, 2004 14:57:29 в masm не нашел что то TB_SETBUTTONINFO? Пробовал получить id кнопки другово процесса - не получалось. Сделал в томже процессе что и toolbar все работает! |
|
|
Дата: Июл 1, 2004 15:21:21 |
|
|
Дата: Июл 1, 2004 16:01:53 bogrus: ну дык ему не ответили -) кстати, я не совсем понял - получаются TB_GETBUTTON не маршалится? попробуй аллоцировать структуру через GlobalAlloc а насчет TB_SETBUTTONINFO поищи в %PROGRAMFILES%\Microsoft SDK\Include кстати. у меня по-моему тоже были проблемы с тулбаром - там как-то хитро оно все работает.. Вот. посмотрел - там просто копируются данные в память, на которую указывает lParam. И никакого маршаллинга там нету. Соответсвенно - VirtualAllocEx (Read|Write)ProcessMemory так будет работать. По-другому - не будет. |
|
|
Дата: Июл 1, 2004 21:30:10 · Поправил: bogrus ну дык ему не ответили -) Дык и мне тоже :) И щаз он снова пропадёт на 2 месяца :) Короче для NT хватит сишного примера , а для 9х видимо юзать CreateFileMapping,MapViewOfFile,CopyMemory . Если idcommand у проги не меняеться , то наверное лучше подсмотреть его в отладчике |
|
|
Дата: Июл 2, 2004 08:08:13 будем пробовать! |
|
|
Дата: Июл 6, 2004 10:07:53 все ок ! всем пасибо! |
|
|
Дата: Июл 7, 2004 13:08:34 · Поправил: ksinon прога работает ! определяет idCommand кнопок toolbara,но перестает работать если пытаешься получить инфу о кнопках в OUTLOOKE (idCommand==0). В чем причина? invoke GetWindowThreadProcessId,htoolbar, addr ProcessId invoke OpenProcess,PROCESS_ALL_ACCESS,NULL, ProcessId mov hProcess,eax invoke VirtualAllocEx,hProcess,NULL,sizeof TBBUTTON ,MEM_COMMIT,PAGE_READWRITE mov buff,eax mov ebx,0 loop_all: add ebx,1 invoke SendMessage,htoolbar,TB_GETBUTTON,ebx, buff invoke ReadProcessMemory,hProcess,buff, ADDR ttb,sizeof TBBUTTON ,NULL invoke SendMessage,htoolbar,TB_ENABLEBUTTON, ttb.idCommand,1 invoke SendMessage,htoolbar,TB_INDETERMINATE , ttb.idCommand,0 invoke dwtoa , ttb.idCommand ,ADDR MsgBoxText12 invoke MessageBox, NULL,addr MsgBoxText12, addr MsgBoxText12, MB_OK .if ebx==5 invoke VirtualFreeEx,hProcess,buff,sizeof TBBUTTON,MEM_RELEASE invoke CloseHandle,hProcess jmp EXIT .ELSE JMP loop_all .endif |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.046 |