Что нового

Как добавить имена компьютеров и сделать форму для записи туда промежутка

GozzMC

Новичок
Сообщения
3
Репутация
0
У меня такой вопрос: Вот есть код в котором идёт сканирование комьютеров по ИП адресу в сети. Создаётся 2 текстовых документа, в одном пишутся компы которые в сети, а в другом те которые не в сети. Я в сам код записал промежуток, а можно ли сделать так, что бы промежуток можна было воодить в каком-нибудь окне (тоесть 192.168.0.1 по 192.168.0.125) и что бы кроме адреса писалось ещё имя комьютера как в программе LanScope
P.S. Я полный новичёк в этом и справочник не помогает(((

Код:
MsgBox(64, "ВНИМАНИЕ!", "Сейчас будет сканирование ПК в сети, пожалуйста, ничего не нажимайте пока не появятся списки адресов",10)
	If FileExists(@ScriptDir & "\В сети - 0.txt") Then
	FileDelete(@ScriptDir & "\В сети - 0.txt")
EndIf
If FileExists(@ScriptDir & "\не В сети - 0.txt") Then
	FileDelete(@ScriptDir & "\не В сети - 0.txt")
EndIf

$IP="192.168.0."
$online = @ScriptDir &"\В сети - 0.txt"
$offline = @ScriptDir &"\Не в сети - 0.txt"
ProgressOn("Сканирование", "Идёт сканирование IP адресов в сети", "0 percent")
For $i=0 to 254 Step 1
	ProgressSet( $i*100/254, $i & " Адресов отсканировано")
If Ping($IP&$i) Then
FileOpen($online,8+1)
FileWriteLine($online,$IP&$i&@CRLF)
FileClose($online)
Else
FileOpen($offline,8+1)
FileWriteLine($offline,$IP&$i&@CRLF)
FileClose($offline)
EndIf
Next
ProgressSet(100 , "Done", "Complete")
sleep(500)
ProgressOff()
[autoit]

[/autoit]
 

SET777

Новичок
Сообщения
51
Репутация
3
:smile: Как то так. сам новичок :whistle:
Код:
#include <inet.au3>
Dim $sResult
$gs_Path = @ScriptDir & "\IP.ini"
$Start_IP = IniRead($gs_Path, "Sets", "StartIP", 0)
$End_IP = IniRead($gs_Path, "Sets", "EndIP", 0)
$online = @ScriptDir & "\В сети - 0.txt"
$offline = @ScriptDir & "\Не в сети - 0.txt"
MsgBox(64, "ВНИМАНИЕ!", "Сейчас будет сканирование ПК в сети, пожалуйста, ничего не нажимайте пока не появятся списки адресов",10)
    If FileExists(@ScriptDir & "\В сети - 0.txt") Then
    FileDelete(@ScriptDir & "\В сети - 0.txt")
EndIf
If FileExists(@ScriptDir & "\не В сети - 0.txt") Then
    FileDelete(@ScriptDir & "\не В сети - 0.txt")
EndIf

ProgressOn("Сканирование", "Идёт сканирование IP адресов в сети", "0 percent")

For $i = StringTrimLeft($Start_IP, 10) To StringTrimLeft($End_IP, 10) Step 1
Local $IP = '192.168.0.'
   ProgressSet($i * 100 / 254, $i & " Адресов отсканировано")
   If Ping("192.168.0." & $i) Then
      TCPStartup()
      $sResult = _TCPIpToName($IP & $i)
;~       MsgBox(0,'',$sResult)
      FileOpen($online, 8 + 1)
      FileWriteLine($online, $IP & $i & "  " & $sResult)
      FileClose($online)
   Else
      FileOpen($offline, 8 + 1)
      FileWriteLine($offline, $IP & $i & @CRLF)
      FileClose($offline)
   EndIf
Next
ProgressSet(100, "Done", "Complete")
Sleep(500)
ProgressOff()

содержимое ini файла:
Код:
[Sets]
StartIP=192.168.0.30
EndIP=192.168.0.40
диапазон 192.168.0.1-192.168.0.255
 
Автор
G

GozzMC

Новичок
Сообщения
3
Репутация
0
А где здесь IniWrite? куда его писать?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
GozzMC,
Попробуйте так:
Код:
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <ProgressConstants.au3>
#include <GuiStatusBar.au3>
#include <Inet.au3>
#include <FontConstants.au3>
#include <WinAPIEx.au3>;Yashied, http://autoit-script.ru/index.php/topic,47.0.html
#include <Constants.au3>

Opt('GUICloseOnESC', 0)
Opt('TrayMenuMode', 1)
Opt('MustDeclareVars', 1)

Global $hAutoIt, $hGui, $nInput_From, $nUpdown_From, $nInput_To, $nUpdown_To, $nButton_Ping, $hImage, $nMsg, _
		$nListView, $hListView, $hStatus, $nProgressAll, $sMask = '192.168.0.', $fDel, $sStartDate, _
		$sEndDate, $iPingTime = 3000, $i_From, $i_To, $sName, $iPing, $iCountRow, $hPrev, $sOnLine, $sOffLine, _
		$sFileOn, $sFileOff, $iCountOn, $iCountOff, $hFile, $nButtonExit, $aStatusPart[2] = [200, -1], _
		$nProgressPing, $hProgressPing, $iPID, $iStartPing

If WinExists(@ScriptName & '{[/@$@\]}') Then Exit
AutoItWinSetTitle(@ScriptName & '{[/@$@\]}')

$hAutoIt = WinGetHandle(AutoItWinGetTitle())

$hImage = _GUIImageList_Create(16, 16, 5, 1)
_GUIImageList_AddIcon($hImage, @SystemDir & '\user32.dll', -104)
_GUIImageList_AddIcon($hImage, @SystemDir & '\user32.dll', -103)

$hGui = GUICreate('OnLine-OffLine', 354, 375, -1, -1, $WS_OVERLAPPED, $WS_EX_TOOLWINDOW)
$nInput_From = GUICtrlCreateInput(0, 120, 10, 60, 25, $ES_READONLY)
$nUpdown_From = GUICtrlCreateUpdown($nInput_From)
GUICtrlSetLimit(-1, 255, 0)
$nInput_To = GUICtrlCreateInput(255, 190, 10, 60, 25, $ES_READONLY)
$nUpdown_To = GUICtrlCreateUpdown($nInput_To)
GUICtrlSetLimit(-1, 255, 0)
GUICtrlCreateInput($sMask, 10, 10, 100, 25, $ES_READONLY)
$nButton_Ping = GUICtrlCreateButton('Пинг', 260, 9, 80, 27)
$nButtonExit = GUICtrlCreateButton('Выход', 125, 295, 100, 30)
For $i = $nInput_From To $nButtonExit
	GUICtrlSetFont($i, 12)
Next
$nListView = GUICtrlCreateListView('', 10, 45, 330, 245, -1, _
		BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
$hListView = GUICtrlGetHandle($nListView)
_GUICtrlListView_AddColumn($hListView, 'IP адрес', 100, 2)
_GUICtrlListView_AddColumn($hListView, 'Имя', 160, 2)
_GUICtrlListView_AddColumn($hListView, 'On/Off', 65, 2)
_GUICtrlListView_SetImageList($hListView, $hImage, 1)
$nProgressPing = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
$hProgressPing = GUICtrlGetHandle($nProgressPing)
$hStatus = _GUICtrlStatusBar_Create($hGui, $aStatusPart)
_GUICtrlStatusBar_SetText($hStatus, @TAB & @TAB & 'Выберите диапозон IP-адресов')
_GUICtrlStatusBar_SetText($hStatus, 'и нажмите "Пинг"', 1)
$nProgressAll = GUICtrlCreateProgress(10, 300, 330, 20, $PBS_SMOOTH)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState()
_GUICtrlStatusBar_EmbedControl($hStatus, 1, $hProgressPing)
GUICtrlSetState($nProgressPing, $GUI_HIDE)

_WinAPI_EmptyWorkingSet()
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE, $nButtonExit
			Exit
		Case $nUpdown_From
			$i_From = Number(GUICtrlRead($nInput_From))
			GUICtrlSetLimit($nUpdown_To, 255, $i_From)
			$i_To = Number(GUICtrlRead($nInput_To))
			If $i_From > $i_To Then
				GUICtrlSetData($nInput_To, $i_From)
			EndIf
		Case $nButton_Ping
			If $fDel Then
				_GUICtrlListView_DeleteAllItems($hListView)
			EndIf
			GUICtrlSetData($nProgressAll, 0)
			GUICtrlSetState($nProgressAll, $GUI_SHOW)
			GUICtrlSetState($nProgressPing, $GUI_SHOW)
			GUICtrlSetState($nButtonExit, $GUI_HIDE)
			$iCountRow = 0
			$iCountOn = 0
			$iCountOff = 0
			_SetAutoItIcon($iCountRow, 0xFF0000, 0xFFFF00)
			$i_From = Number(GUICtrlRead($nInput_From))
			$i_To = Number(GUICtrlRead($nInput_To))
			$sStartDate = 'Проверка начата: ' & @MDAY & '.' & @MON & '.' & StringRight(@YEAR, 2) & _
					' ' & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF
			$sFileOn = @MDAY & '_' & @MON & '_' & StringRight(@YEAR, 2) & '_' & @HOUR & '_' & _
					@MIN & '.txt'
			$sOnLine = $sStartDate
			$sOffLine = $sOnLine
			$sFileOff = $sFileOn
			TCPStartup()
			For $i = $i_From To $i_To
				_GUICtrlStatusBar_SetText($hStatus, @TAB & 'Определение имени: ' & $sMask & $i)
				$sName = _TCPIpToName($sMask & $i)
				If @error Then $sName = 'unknown'
				_GUICtrlStatusBar_SetText($hStatus, @TAB & 'Пинг: ' & $sMask & $i)
				$iPID = Run(@AutoItExe & ' /AutoIt3ExecuteLine  ' & '"' & 'ConsoleWrite(Ping(''' & $sMask & $i & ''', ' & $iPingTime & '))' & '"', '', @SW_HIDE, $STDOUT_CHILD)
				$iPing = ''
				$iStartPing = TimerInit()
				While 1
					$iPing &= StdoutRead($iPID)
					If @error Then ExitLoop
					GUICtrlSetData($nProgressPing, 100 * TimerDiff($iStartPing) / $iPingTime)
					Sleep(10)
				WEnd
				GUICtrlSetData($nProgressPing, 100)
				$iPing = Number($iPing)
				If $iPing Then
					$iCountOn += 1
					$sOnLine &= $iCountOn & '. ' & $sMask & $i & '(' & $sName & ')' & @TAB & 'OnLine' & @CRLF
					_WinAPI_MessageBeep(5)
					GUICtrlCreateListViewItem($sMask & $i & '|' & $sName & '|' & 'On', $nListView)
					GUICtrlSetColor(-1, 0x0000FF)
					GUICtrlSetBkColor(-1, 0xDCDCDC)
					_GUICtrlListView_SetItemImage($hListView, $iCountRow, 0)
				Else
					$iCountOff += 1
					$sOffLine &= $iCountOff & '. ' & $sMask & $i & '(' & $sName & ')' & @TAB & 'OffLine' & @CRLF
					_WinAPI_MessageBeep(2)
					GUICtrlCreateListViewItem($sMask & $i & '|' & $sName & '|' & 'Off', $nListView)
					GUICtrlSetColor(-1, 0xFF0000)
					GUICtrlSetBkColor(-1, 0xEBEBEB)
					_GUICtrlListView_SetItemImage($hListView, $iCountRow, 1)
				EndIf
				_GUICtrlListView_EnsureVisible($hListView, $iCountRow)
				$iCountRow += 1
				GUICtrlSetData($nProgressAll, 100 * $iCountRow / ($i_To - $i_From + 1))
				_SetAutoItIcon($iCountRow, 0xFF0000, 0xFFFF00)
				Sleep(250)
			Next
			Sleep(250)
			TCPShutdown()
			$fDel = True
			_GUICtrlStatusBar_SetText($hStatus, @TAB & @TAB & 'Выберите диапозон IP-адресов')
			GUICtrlSetState($nProgressAll, $GUI_HIDE)
			GUICtrlSetState($nProgressPing, $GUI_HIDE)
			GUICtrlSetState($nButtonExit, $GUI_SHOW)
			TraySetIcon()
			_WinAPI_MessageBeep(3)
			$sEndDate = 'Проверка закончена: ' & @MDAY & '.' & @MON & '.' & StringRight(@YEAR, 2) & _
					' ' & @HOUR & ':' & @MIN & ':' & @SEC
			If $iCountOn Then
				$sOnLine &= $sEndDate
				$hFile = FileOpen(@ScriptDir & '\Statistics\OnLine\' & $sFileOn, 10)
				FileWrite($hFile, $sOnLine)
				FileClose($hFile)
			EndIf
			If $iCountOff Then
				$sOffLine &= $sEndDate
				$hFile = FileOpen(@ScriptDir & '\Statistics\OffLine\' & $sFileOff, 10)
				FileWrite($hFile, $sOffLine)
				FileClose($hFile)
			EndIf
			_WinAPI_EmptyWorkingSet()
	EndSwitch
WEnd

Func _SetAutoItIcon($iCount, $iColor = 0x000000, $iBkColor = 0xFFFFFF)
	;Yashied, http://autoit-script.ru/index.php?topic=6030.msg42829#msg42829
	Local $hDC, $hBitmap, $hMask, $hIcon, $hFont, $tNID, $tRect

	$hDC = _WinAPI_CreateCompatibleDC(0)
	$hBitmap = _WinAPI_CreateSolidBitmap(0, $iBkColor, 16, 16)
	$hMask = _WinAPI_CreateBitmap(16, 16, 1, 1)
	$hFont = _WinAPI_CreateFont(18, 4, 0, 0, $FW_NORMAL, 0, 0, 0, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $ANTIALIASED_QUALITY, $DEFAULT_PITCH, 'Tahoma')
	$tRect = _WinAPI_CreateRectEx(1, 0, 15, 16)
	_WinAPI_SelectObject($hDC, $hBitmap)
	_WinAPI_SelectObject($hDC, $hFont)
	_WinAPI_SetTextColor($hDC, _WinAPI_SwitchColor($iColor))
	_WinAPI_SetBkColor($hDC, _WinAPI_SwitchColor($iBkColor))
	_WinAPI_DrawText($hDC, $iCount, $tRect, BitOR($DT_CENTER, $DT_SINGLELINE, $DT_VCENTER))
	_WinAPI_DeleteDC($hDC)
	$hIcon = _WinAPI_CreateIconIndirect($hBitmap, $hMask)
	_WinAPI_DeleteObject($hBitmap)
	_WinAPI_DeleteObject($hMask)
	_WinAPI_DeleteObject($hFont)
	$tNID = DllStructCreate($tagNOTIFYICONDATA)
	DllStructSetData($tNID, 'Size', DllStructGetSize($tNID))
	DllStructSetData($tNID, 'hWnd', $hAutoIt)
	DllStructSetData($tNID, 'Flags', $NIF_ICON)
	DllStructSetData($tNID, 'ID', 1)
	DllStructSetData($tNID, 'hIcon', $hIcon)
	_WinAPI_ShellNotifyIcon($NIM_MODIFY, $tNID)
	If $hPrev Then
		_WinAPI_DestroyIcon($hPrev)
	EndIf
	$hPrev = $hIcon
EndFunc   ;==>_SetAutoItIcon
 
Верх