Server2000 (663388), страница 11
Текст из файла (страница 11)
Исходный текст программы
.386
.model flat, stdcall
option casemap :none
include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
include /masm32/include/wsock32.inc
include /masm32/include/gdi32.inc
includelib /masm32/lib/wsock32.lib
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib
includelib /masm32/lib/gdi32.lib
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
.data
dlgname db "WINSOCK",0
szTitle db "Ip Dialog",0
wsaError db "Error initializing winsock!",13,10
szName db "Computer Name: %s",0
szFont db "MS Sans Serif",0
.data?
wsa WSADATA
hStatic dd ?
hFont dd ?
hInstance dd ?
buffer db 24 dup (?)
buffer2 db 128 dup (?)
.code
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke WSAStartup,101h,addr wsa
.if eax == NULL
invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR WndProc,0
invoke ExitProcess,0
.endif
invoke MessageBox,NULL,offset wsaError,offset szTitle,MB_OK + MB_ICONSTOP
invoke ExitProcess,1
WndProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
.if uMsg == WM_INITDIALOG
invoke LoadIcon,hInstance,101
invoke SendMessage,hWin,WM_SETICON,TRUE,eax
invoke GetDlgItem,hWin,2000
mov hStatic,eax
invoke gethostname,offset buffer,sizeof buffer
invoke wsprintf,addr buffer2,addr szName,addr buffer
invoke SetDlgItemText,hWin,3000,addr buffer2
invoke gethostbyname,addr buffer
mov eax,[eax+12]
mov eax,[eax]
mov eax,[eax]
invoke inet_ntoa,eax
invoke SetDlgItemText,hWin,2000,eax
invoke WSACleanup
xor eax,eax
ret
.elseif uMsg == WM_CTLCOLORSTATIC
mov eax,lParam
.if eax == hStatic
invoke CreateFont,16,16,0,0,400,0,0,0,OEM_CHARSET,\
OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,\
DEFAULT_QUALITY,DEFAULT_PITCH or FF_SWISS,\
ADDR szFont
mov hFont,eax
invoke SelectObject, wParam, hFont
invoke GetSysColor, COLOR_MENU
invoke SetBkColor, wParam, eax
invoke SetTextColor,wParam,Blue
invoke GetStockObject, HOLLOW_BRUSH
ret
.endif
.elseif uMsg == WM_CLOSE
invoke DeleteObject,hFont
invoke EndDialog,hWin,0
xor eax,eax
ret
.endif
xor eax,eax
ret
WndProc endp
end start
Приложение Б
Файл сборки
makefile
NAME=ip
$(NAME).exe: $(NAME).obj $(NAME).res
\masm32\bin\Link /SUBSYSTEM:WINDOWS /LIBPATH:\masm32\lib $(NAME).obj $(NAME).res
$(NAME).res: $(NAME).rc
\masm32\bin\rc $(NAME).rc
$(NAME).obj: $(NAME).asm
\masm32\bin\ml /c /coff /Cp $(NAME).asm
Приложение В
Файл используемых ресурсов
ip.rs
#include "\masm32\include\resource.h"
WINSOCK DIALOG DISCARDABLE 0, 0, 135, 25
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Ip Dialog"
FONT 8, "MS Sans Serif"
BEGIN
GROUPBOX "&Main",3000,0,0,135,25
CTEXT "Static",2000,4,9,127,12,SS_CENTERIMAGE | SS_SUNKEN
END
101 ICON DISCARDABLE "ico101.ico"
2