Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.048 c
11-1167056695
mixail_shar
2006-12-25 17:24
2007.08.12
Update до v2.49


2-1184177481
Kolan
2007-07-11 22:11
2007.08.12
Как динамически создать Separator в MainMenu?


1-1181049672
maxistent
2007-06-05 17:21
2007.08.12
Импорт процедур из EXE...


15-1184490692
Gero
2007-07-15 13:11
2007.08.12
Преобразовать матрешку в DVD-video


2-1184347870
nord489
2007-07-13 21:31
2007.08.12
Работа с файлами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский