Главная страница
    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.037 c
9-1156912564
NewLamer
2006-08-30 08:36
2007.08.12
Помогите с канвасом


3-1177924256
Popoilyk
2007-04-30 13:10
2007.08.12
не получается задать какое-либо значение FilterOptions


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


2-1184178258
AIK
2007-07-11 22:24
2007.08.12
Модить папки


15-1184223707
Jeer
2007-07-12 11:01
2007.08.12
Положительные стороны демократии from USA





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский