Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.12;
Скачать: CL | DM;

Вниз

Помогите перевести из 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
2-1184581112
mmms
2007-07-16 14:18
2007.08.12
Подскажите, как связать свой тип файлов к своей программе?


15-1184324312
ArtemESC
2007-07-13 14:58
2007.08.12
Какой шахматный сервер самый нормальный?


11-1166902282
Trible
2006-12-23 22:31
2007.08.12
Как уничтожить форму с компонентами


15-1184293628
Slider007
2007-07-13 06:27
2007.08.12
С днем рождения ! 13 июля 2007 пятница


2-1184574350
Romikremind
2007-07-16 12:25
2007.08.12
Открытие БД Access