Что, правда помогает?немного помогает но мне кажется это неправильно.
Не, она делает нечто совершенно другое. Просто обрабатывает накопленные клики, клавиши и прочее.Насколько я понял она передает управление системе принудительно
'******************************
'этот кусок для понимания не принципиален
'время его выполнения где то от 0,05сек до 3 сек
Private Sub mnuWriteToDisk_Click()
ReDim BuferS(0)
Call WriteModule(SelectedItemMenuMod) ' SelectedItemMenuMod - переменная с номером эл-та списка
'пишет модуль служебной информации на блины винта
ReDim BuferS(0)
End Sub
'******************************
'******************************
'а вот эта фиговина пишет туду все отмеченные
'если не делать DoEvents
'то пока всё не отработает, то формы приложения висят
'и ессно по кнопке СТОП ничего не происходит
Private Sub mnuWriteAllToDisk_Click()
Dim XX As Byte
Dim NextMod As Label
ProgressBarMod.Min = 0
ProgressBarMod.Max = 100
bStopMOD = False
For XX = 1 To (lw1.ListItems.Count)
lw1.ListItems.Item(XX).Selected = True
SelectedItemMenuMod = XX
If lw1.ListItems.Item(XX).Checked = False Then GoTo NextMod
ReDim BuferS(0)
Call WriteModule(SelectedItemMenuMod)
ReDim BuferS(0)
DoEvents ' ВОТ ОНО!!!!!!!!!!!!!!!!!!
'перед проверкой кнопки СТОП
'можно тыкать несколько штук в процедурине
'там где хотелось бы что то развесить (антоним "завесить")
If bStopMOD = True Then
ProgressBarMod.Value = 0
ProgressBarMod.DrawProgressBar
Exit Sub
End If
NextMod: ProgressBarMod.Value = Int((XX * 100) \ (lw1.ListItems.Count))
ProgressBarMod.DrawProgressBar
lw1.Refresh
Next XX
ProgressBarMod.Value = 0
ProgressBarMod.DrawProgressBar
End Sub
'******************************
strComputer = "."
Set objWMIService = GetObject(_
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("Select * From Win32_PingStatus where Address = '192.168.1.1'")
For Each objStatus in colPings
If IsNull(objStatus.StatusCode) _
or objStatus.StatusCode<>0 Then
WScript.Echo "Computer did not respond."
Else
Wscript.Echo "Computer responded."
End If
Next
New Project - ActiveX Exe2vv писал(а):Antonariy Не могли бы пояснить как это сделать.
если сам пинг выполняется не в методе. Это важно.и не будет приостанавливать твою программу
Умеет. Проблема была не в этом.Английский VB6 не умеет работать с русскими папками.
Public Event PingComplete(Success as Boolean, Timeout as Single)
RaiseEvent PingComplete(True)
Private Sub stping()
Dim i
For i = 1 To 15 Step 1
IP_ADR = CStr(GrdTable.TextMatrix(i, 1))
If Len(IP_ADR) <> 0 Then
lPing.Ping IP_ADR
If lPing_PingComplete <> 0 Then
Avaible = "OFFLINE"
GrdTable.Row = i
GrdTable.Col = 3
GrdTable.CellBackColor = vbRed
Else
Avaible = "ONLINE"
GrdTable.Row = i
GrdTable.Col = 3
GrdTable.CellBackColor = vbGreen
End If
GrdTable.TextMatrix(i, 3) = Avaible
'WinsockInit
'GrdTable.TextMatrix(i, 2) = HostByAddress(IP_ADR)
Else
End If
Next
End Sub
Option Explicit
Dim WithEvents Timer As Timer
Dim Form As Form1
Dim IpAdr As String
Dim objPing
Dim objStatus
Dim Ret As Long
Public Event PingComplete(Status As Long)
Public Sub Ping(IP_ADR As String)
IpAdr = IP_ADR
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & IpAdr & "'")
For Each objStatus In objPing
If IsNull(objStatus.StatusCode) Or objStatus.StatusCode <> 0 Then
Ret = 1
Else
Ret = 0
End If
Next
Timer.Enabled = True
End Sub
Private Sub Class_Initialize()
Set Form = New Form1
Load Form
Set Timer = Form.Timer1
End Sub
Private Sub Class_Terminate()
Set Timer = Nothing
Unload Form
Set Form = Nothing
End Sub
Private Sub Timer_Timer()
Timer.Enabled = False
RaiseEvent PingComplete(Ret)
End Sub
Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 26