Как вывести в MessageBox значение возвращаемое функцией? Делаю вот так: Код (Text): GetPStorageOutput proc ; Write header invoke ExportModule, MODULE_PSTORAGE .IF !IsPStorecLoaded ; Load pstorec.dll invoke DoLoadLib, offset szPStorecLib, offset dwPStoreCreate test eax, eax jz @ret ; Load crypt32.dll invoke DoLoadLib, offset szCryptLib, offset dwCryptUnprotect mov IsPStorecLoaded, TRUE .ENDIF ; Get interface to IPStore xor eax, eax push eax push eax push eax lea edx, ppProvider push edx call dwPStoreCreate test eax, eax jnz @ret ; Read Protected Storage data invoke ReadPSTypes ; Outlook data invoke lstrcpy, offset lpPSBasePath, offset szPSAccounts invoke GetOutlookUserNames ; Express invoke GetOutlookUserNames2 ; Express invoke GetOutlookUserNames3 ; Outlook ; Release interface coinvoke ppProvider, IPStore, Release @ret: ret GetPStorageOutput endp .data MsgBoxCaption db "Passwords",0 .code start: invoke MessageBox, NULL, addr GetPStorageOutput, addr MsgBoxCaption, MB_OK invoke ExitProcess, NULL end start но выводится какая то лабуда...
мде... если внимательно МСДН глянуть то во втором параметре надо должен быть адрес строки.. Но это еще не все.. АСМ ЭТО НЕ СИ, где можно тысячу функций вкладывать друг в друга. И еще твоя функция должна чтото помещать например в eax ,чтоб потом это что-то анализировать ... и выводить.. В общем подумай хорошенько над этим.
Реально, почти все функции возвращает значение в eax. А перевести число в строку (если это число) удобно функцией dw2a. Синтаксис: Код (Text): DWORD dw2a( IN UINT uNumber, OUT LPCTSTR lpText, ); Что-то вроде этого (в си я не силен). Пример: Код (Text): ... invoke GetFileSize, hFile, NULL invoke dw2a, eax, offset buf ; buf db 16 dup(0) invoke MessageBox, 0, offset buf, 0, 0 ... P.S. dw2a находится в masm32.lib (прототип соответственно в masm32.inc)