Главная страница
    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.047 c
1-1181139901
Terr
2007-06-06 18:25
2007.08.12
Проблема с выбором драйвера базы данных


2-1184610269
Knob
2007-07-16 22:24
2007.08.12
Как добавить в список


15-1184692404
TruePunk
2007-07-17 21:13
2007.08.12
MMS


3-1177569346
tytus
2007-04-26 10:35
2007.08.12
TOracleQuery - описание переменных - ошибка ORA-01036


1-1180622931
JanMihail
2007-05-31 18:48
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский