Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
ВнизПомогите перевести из ASM в Delphi Найти похожие ветки
← →
SkyN (2007-07-10 16:19) [0]Единственный вызов SendMessageA, но как передаются параметры и получается результат не пойму
; int __cdecl GetCount(HWND hWnd)
public GetCount
GetCount proc near
lParam= dword ptr -48h
var_2C= dword ptr -2Ch
hWnd= dword ptr 4
mov ecx, [esp+hWnd]
sub esp, 48h
lea eax, [esp+48h+lParam]
push eax ; lParam
push 0 ; wParam
push 7F0h ; Msg
push ecx ; hWnd
call ds:SendMessageA
mov eax, [esp+48h+var_2C]
add esp, 48h
retn
GetCount endp
← →
MBo © (2007-07-10 16:26) [1]функция SendMessage описана в справке WinSDK и в MSDN
← →
SkyN (2007-07-10 16:35) [2]я знаю как пользоваться SendMessage
не могу понять какие параметры в неё передаются, и как получают результат
Сообщение 7F0h программа использует не только для GetCount, т.е. надо корректно задать lparam, wparam и/или корректно "распарсить" результат.
На asm алгоритм дан, как это записать в Delphi не въеду.
← →
Сергей М. © (2007-07-10 16:41) [3]Мне в этой абракадабре видится что-то вроде этого:
function GetCount(hWnd: THandle): Integer; cdecl;
const
lParam_size = $48h;
Result_offset = lParam_size - $2C;
var
Buf: array[0..lParam_size-1];
begin
SendmessageA(hWnd, $7F0, 0, lParam(@Buf));
Result := PInteger(@Buf[Result_offset])^;
end;
← →
Плохиш © (2007-07-10 17:03) [4]
> я знаю как пользоваться SendMessage
> не могу понять какие параметры в неё передаются, и как получают
> результат
Классные два утверждения. Читаю и балдею, просто тащусь, а ж слёзы наварачиваются... Он знает как пользоваться, но не знает как туда что-то передать :-))
← →
SkyN (2007-07-11 16:36) [5]to Плохиш
Ты мне сильно помог, и чтобы не остаться в долгу могу и тебе рассказать много интересного http://slovari.yandex.ru/search.xml?text=%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BA%D1%81%D1%82
PS Рад, что вызвал у тебя приятные эмоции
← →
Сергей М. © (2007-07-11 17:03) [6]
> SkyN (11.07.07 16:36) [5]
По [3] что скажешь ?
Любопытно ж)
← →
SkyN (2007-07-11 18:41) [7]Сергей, Вы были практически правы
В результате, посмотрев, что возвращается в Buf получил:function GetCount(hWnd: THandle): Integer;
var
Buf: array[0..18] of Integer;
begin
SendmessageA(hWnd, $7F0, 0, lParam(@Buf));
Result := Buf[3];
end;
Buf: array[0..18] of Integer; - расширю на всякий случай.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c