1. Заголовок или название темы должно быть информативным 2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE] 3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора. 5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM! 6. Проверяйте программы перед тем, как выложить их на форум!!
Помогите найти ошибку!, API-function GetNetworkParams
Уважаемые мастера АСМ! Не получается одна весчь - прошу у вас помощи... Вообщем, мне надо вывести информацию из структуры FIXED_INFO из функции GetNetworkParams. Вот что я написал:
.386 .model flat,stdcall
option casemap:none include 'c:/masm32/include/windows.inc' include 'c:/masm32/include/user32.inc' includelib 'c:/masm32/lib/user32.lib' ; calls to functions in user32.lib and kernel32.lib include 'c:/masm32/include/kernel32.inc' includelib 'c:/masm32/lib/kernel32.lib' includelib 'c:/masm32/lib/iphlpapi.lib'
FIXED_INFO STRUC HostName DWORD ? FIXED_INFO ENDS
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD GetNetworkParams proto :FIXED_INFO,:DWORD
;================================== ;############################################################## .DATA ; initialized data
ClassName db 'SimpleWinClass',0; Имя нашего класса окна AppName db 'Our First Window',0; Имя нашего окна MsgBoxCaption db 'Shutdowning... Say Goodbye to ur OS!',0 MsgBoxText db 'Hands?',0
.DATA? ; Hеиницилизируемые данные hInstance HINSTANCE ? ; Хэндл нашей программы CommandLine LPSTR ? fi FIXED_INFO <?> lLen DWORD ? ;#############################################################
.CODE ; Здесь начинается наш код start: invoke GetModuleHandle, NULL; Взять хэндл программы ; Под Win32, hmodule==hinstance mov hInstance,eax mov hInstance,eax
invoke GetCommandLine ; Взять командную строку. Вы не обязаны ;вызывать эту функцию ЕСЛИ ваша программа не обрабатывает командную строку. mov CommandLine,eax invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; вызвать основную функцию invoke ExitProcess, eax; Выйти из программы. ; Возвращаемое значение, помещаемое в eax, берется из WinMain'а. ;################################################### WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD LOCAL wc:WNDCLASSEX ; создание локальных переменных в стеке LOCAL msg:MSG LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX ; заполнение структуры wc mov wc.style, CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc, OFFSET WndProc mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL push hInstance pop wc.hInstance mov wc.hbrBackground,COLOR_WINDOW+1
Но у меня выводит пустой мессджбокс.. Если есть возможность - прошу помочь, и просьба - показать как вывести несколько полей из структуры в один мессджбокс %) Спасибо, всех с НГ!
Ах да, я использовал Iphlpapi.lib, которую можно скачать с gign4.narod.ru/Iphlpapi.lib Ссылка на структуру и функцию - MSDN -> GetNetworkParams