hInstance HINSTANCE?
CommandLine LPSTR?
.code
include wmi. asm
include strings. asm
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke GetCommandLine
mov CommandLine, eax
call WMIProc
invoke WinMain, hInstance, NULL, CommandLine, SW_SHOWDEFAULT
invoke ExitProcess, eax
WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc. cbSize, SIZEOF WNDCLASSEX
mov wc. style, CS_HREDRAW or CS_VREDRAW
mov wc. lpfnWndProc, OFFSET WndProc
mov wc. cbClsExtra, NULL
mov wc. cbWndExtra, NULL
push hInst
pop wc. hInstance
mov wc. hbrBackground, COLOR_WINDOW+1
mov wc. lpszMenuName, NULL
mov wc. lpszClassName, OFFSET ClassName
invoke LoadIcon, NULL, IDI_APPLICATION
mov wc. hIcon, eax
Продолжение Приложения А
mov wc. hIconSm,0
invoke LoadCursor, NULL, IDC_ARROW
mov wc. hCursor, eax
invoke RegisterClassEx, addr wc
INVOKE CreateWindowEx, NULL, ADDR ClassName, ADDR AppName,\
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,\
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL,\
hInst, NULL
mov hwnd, eax
INVOKE ShowWindow, hwnd, SW_SHOWNORMAL
INVOKE UpdateWindow, hwnd
.WHILE TRUE
INVOKE GetMessage, ADDR msg, NULL,0,0
.BREAK. IF (!eax)
INVOKE TranslateMessage, ADDR msg
INVOKE DispatchMessage, ADDR msg
.ENDW
mov eax, msg. wParam
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
LOCAL hdc:HDC
LOCAL ps:PAINTSTRUCT
LOCAL rect:RECT
.IF uMsg==WM_DESTROY
invoke PostQuitMessage, NULL
.ELSEIF uMsg==WM_PAINT
invoke BeginPaint, hWnd, ADDR ps
mov hdc, eax
invoke GetClientRect, hWnd, ADDR rect
invoke _lstrcat, ADDR bufStr, ADDR processorItemStr
invoke _lstrcat, ADDR bufStr, ADDR processorNameStr
invoke _lstrcat, ADDR bufStr, ADDR processorNameResult
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR processorMaxClockSpeedStr
invoke _lstrcat, ADDR bufStr, ADDR processorMaxClockSpeedResult
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR processorNumOfCoresStr
Продолжение Приложения А
invoke _lstrcat, ADDR bufStr, ADDR processorNumberOfCoresResult
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR processorIdStr
invoke _lstrcat, ADDR bufStr, ADDR processorIdResult
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR videoItemStr
invoke _lstrcat, ADDR bufStr, ADDR videoNameStr
invoke _lstrcat, ADDR bufStr, ADDR videoNameResult
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR videoProcessorStr
invoke _lstrcat, ADDR bufStr, ADDR videoProcessorResult
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR videoMemSizeStr
invoke _lstrcat, ADDR bufStr, ADDR videoMemSizeResult
;invoke _lstrcat, ADDR bufStr, ADDR reLine
;invoke _lstrcat, ADDR bufStr, ADDR reLine
;invoke _lstrcat, ADDR bufStr, ADDR motherboardItemStr
;invoke _lstrcat, ADDR bufStr, ADDR motherboardNameStr
;invoke _lstrcat, ADDR bufStr, ADDR motherboardNameResult
;invoke _lstrcat, ADDR bufStr, ADDR reLine
;invoke _lstrcat, ADDR bufStr, ADDR reLine
;invoke _lstrcat, ADDR bufStr, ADDR physicalMemoryItemStr
;invoke _lstrcat, ADDR bufStr, ADDR physicalMemoryNameStr
;invoke _lstrcat, ADDR bufStr, ADDR physicalMemoryNameResult
;invoke _lstrcat, ADDR bufStr, ADDR physicalMemoryModelStr
;invoke _lstrcat, ADDR bufStr, ADDR physicalMemoryModelResult
;invoke _lstrcat, ADDR bufStr, ADDR physicalMemoryManufacturerStr
;invoke _lstrcat, ADDR bufStr, ADDR physicalMemoryManufacturerResul
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR diskDriveItemStr
invoke _lstrcat, ADDR bufStr, ADDR diskDriveNameStr
invoke _lstrcat, ADDR bufStr, ADDR diskDriveNameResult
;invoke _lstrcat, ADDR bufStr, ADDR reLine
Окончание Приложения А
;invoke _lstrcat, ADDR bufStr, ADDR diskDriveMemSizeStr
;invoke _lstrcat, ADDR bufStr, ADDR diskDriveMemSizeResult
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR networkAdapterItemStr
invoke _lstrcat, ADDR bufStr, ADDR networkAdapterNameStr
invoke _lstrcat, ADDR bufStr, ADDR networkAdapterNameResult
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR reLine
invoke _lstrcat, ADDR bufStr, ADDR cdROMItemStr
invoke _lstrcat, ADDR bufStr, ADDR cdROMNameStr
invoke _lstrcat, ADDR bufStr, ADDR cdROMNameResult
invoke DrawText, hdc, ADDR bufStr,-1, ADDR rect, DT_LEFT or DT_TOP
invoke EndPaint, hWnd, ADDR ps
.ELSE
invoke DefWindowProc, hWnd, uMsg, wParam, lParam
ret
.ENDIF
xor eax, eax
ret
WndProc endp
end start
ПРИЛОЖЕНИЕ Б
(обязательное)
«Код функции WMIProc »
getProcessorInfo proc
invoke SysAllocString, offset processorQuery
mov query, eax ;Into BSTR
mov edx, services
mov eax, [edx].IWbemServices. lpVtbl
invoke [eax].IWbemServicesVtbl. ExecQuery, edx, _language, query, 0, NULL, offset results
;--------------------------------------------------
.if results!=0
mov result,0
mov returnedCount,0
C100:
mov edx, results
mov eax, [edx].IEnumWbemClassObject. lpVtbl ;call eax,[eax]
invoke [eax].IEnumWbemClassObjectVtbl. Next, edx,-1, 1,offset result, offset returnedCount
;--------------------------------------------------
;**************************************************************************************
.if eax==0
mov edx, result
mov eax, [edx].IWbemClassObject. lpVtbl
invoke [eax].IWbemClassObjectVtbl. Get, edx, offset nameQuery, 0,offset _name, 0, 0
;----------------------------------------------------
mov esi, offset _name ;<==Note the _name!
mov eax,[esi].VARIANT. bstrVal ;///Key!!VARIANT
invoke WideCharToMultiByte, CP_ACP, WC_COMPOSITECHECK, eax,-1,offset processorNameResult, processorNameSizeResult,0,0
Продолжение Приложения Б
mov edx, result
mov eax, [edx].IWbemClassObject. lpVtbl
invoke [eax].IWbemClassObjectVtbl. Get, edx, offset processorMaxClockSpeedQuery, 0, offset processorMaxClockSpeedResult, 0, 0
;----------------------------------------------------
mov esi, offset processorMaxClockSpeedResult ;<==Note the speed!
mov eax,[esi].VARIANT. ulVal ;///Key!!VARIANT, eax=MaxprocessorClockSpeedResult
invoke wsprintf, offset processorMaxClockSpeedResult, offset fmt, eax
mov edx, result
mov eax, [edx].IWbemClassObject. lpVtbl
invoke [eax].IWbemClassObjectVtbl. Get, edx, offset processorNumCoresQuery, 0, offset processorNumberOfCoresResult, 0, 0
;----------------------------------------------------
mov esi, offset processorNumberOfCoresResult ;<==Note the speed!
mov eax,[esi].VARIANT. ulVal ;///Key!!VARIANT, eax=MaxprocessorClockSpeedResult
invoke wsprintf, offset processorNumberOfCoresResult, offset fmt, eax
mov edx, result
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 |


