Вывести в MessageBox результат функции

Тема в разделе "WASM.BEGINNERS", создана пользователем Exception, 13 мар 2006.

  1. Exception

    Exception New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2006
    Сообщения:
    5
    Как вывести в MessageBox значение возвращаемое функцией?

    Делаю вот так:
    Код (Text):
    1.  
    2. GetPStorageOutput proc
    3.     ; Write header
    4.     invoke  ExportModule, MODULE_PSTORAGE
    5.  
    6.     .IF !IsPStorecLoaded
    7.         ; Load pstorec.dll
    8.         invoke  DoLoadLib, offset szPStorecLib, offset dwPStoreCreate
    9.         test    eax, eax
    10.         jz  @ret
    11.        
    12.         ; Load crypt32.dll
    13.         invoke  DoLoadLib, offset szCryptLib, offset dwCryptUnprotect
    14.         mov IsPStorecLoaded, TRUE
    15.     .ENDIF
    16.    
    17.         ; Get interface to IPStore
    18.         xor     eax, eax
    19.         push    eax
    20.         push    eax
    21.         push    eax
    22.         lea     edx, ppProvider
    23.         push    edx
    24.         call    dwPStoreCreate
    25.         test    eax, eax
    26.         jnz     @ret
    27.  
    28.     ; Read Protected Storage data
    29.         invoke  ReadPSTypes
    30.        
    31.     ; Outlook data
    32.     invoke  lstrcpy, offset lpPSBasePath, offset szPSAccounts
    33.     invoke  GetOutlookUserNames ; Express
    34.     invoke  GetOutlookUserNames2    ; Express
    35.     invoke  GetOutlookUserNames3    ; Outlook
    36.    
    37.     ; Release interface
    38.     coinvoke ppProvider, IPStore, Release  
    39.    
    40. @ret:
    41.     ret
    42. GetPStorageOutput endp
    43.  
    44. .data
    45.     MsgBoxCaption db "Passwords",0
    46.     .code
    47. start:
    48.  
    49. invoke MessageBox, NULL, addr GetPStorageOutput, addr MsgBoxCaption, MB_OK
    50. invoke ExitProcess, NULL
    51.  
    52. end start
    53.  


    но выводится какая то лабуда...
     
  2. OlegA11

    OlegA11 New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2006
    Сообщения:
    102
  3. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    мде...

    если внимательно МСДН глянуть то во втором параметре надо должен быть адрес строки..

    Но это еще не все.. АСМ ЭТО НЕ СИ, где можно тысячу функций вкладывать друг в друга.

    И еще твоя функция должна чтото помещать например в eax ,чтоб потом это что-то анализировать ... и выводить..

    В общем подумай хорошенько над этим.
     
  4. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Реально, почти все функции возвращает значение в eax.

    А перевести число в строку (если это число) удобно функцией dw2a.

    Синтаксис:
    Код (Text):
    1. DWORD dw2a(
    2.     IN  UINT uNumber,
    3.     OUT LPCTSTR lpText,
    4. );
    5.  


    Что-то вроде этого (в си я не силен).

    Пример:
    Код (Text):
    1.  
    2. ...
    3. invoke  GetFileSize, hFile, NULL
    4. invoke  dw2a, eax, offset buf  ; buf db 16 dup(0)
    5. invoke  MessageBox, 0, offset buf, 0, 0
    6. ...
    7.  


    P.S. dw2a находится в masm32.lib (прототип соответственно в masm32.inc)