Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Запуск скрипта после полной загрузки Windows (http://forum.oszone.net/showthread.php?t=170319)

Vagac 16-03-2010 13:01 1369799

Запуск скрипта после полной загрузки Windows
 
Подскажите пожалуйста мне необходимо чтобы мой скрипт выполнялся только после того как винда полностью загрузится и инициализируется сеть не знаю с чем это связано но некоторые команды из скрипта не отрабатывают хотя запускаются от имени Админа и с паролем админа опытным старт скрипта прописан в HLM run вот сам скрипт
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <Process.au3>
#include <File.au3>
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=1.ico
#AutoIt3Wrapper_outfile=cmpstr.exe ;Название ехе файла после компиляции
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=Release
#AutoIt3Wrapper_Res_Description=0
#AutoIt3Wrapper_Res_Fileversion=6.00.2900.5512
#AutoIt3Wrapper_Res_LegalCopyright=0
#AutoIt3Wrapper_Res_Language=1033
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Sleep(100)
ProcessWait ("explorer.exe")
BlockInput(1)
Sleep(5000)
$Start1="C:\WINDOWS\cmps.exe"
$Start2="C:\WINDOWS\cmp.exe"
$connect = _GetNetworkConnect()
If $connect Then
Else
RunAs("admin", "", "********",1,$Start1)
;Сеть Отсутствует
Exit
EndIf
$varPing = Ping("192.168.0.8",400)
If @error > 0 Then
;Пинг Отсутствует
RunAs("admin", "", "********",1,$Start1)
Exit
Else
;Пинг
$rc = _RunDos('NET TIME \\192.168.0.1 /SET /Y')
Sleep(1000)
RunAs("admin", "", "********",1,$Start2)
EndIf
Func _GetNetworkConnect()
Local Const $NETWORK_ALIVE_LAN = 0x1 ;net card connection
Local $aRet, $iResult
$aRet = DllCall("sensapi.dll", "int", "IsNetworkAlive", "int*", 0)
If BitAND($aRet[1], $NETWORK_ALIVE_LAN) Then $iResult &= "" & @LF
Return $iResult
EndFunc
------------------------------------------------------------------------------------------------------------------------------------------------

Вобщем задача такая : Скрипт проверяет сначала наличие LAN если LAN есть тогда проверяет доступин ли сервер по адресу 192.168.0.1
Если LAN не доступен тогда запескает скрипт"cmps.exe" если сервер не доступен запескает скрипт"cmps.exe"
Если LAN доступен и сервер доступен тогда синхронизирует время с сервером и запускает скрипт "cmp.exe"

centaurvv 17-03-2010 00:58 1370341

а если заставить ваш скрипт писать результаты своей работы в лог-файл, а потом отследить где конкретно кроется проблема?

PHP код:

#include <Process.au3>
#include <File.au3> 
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=1.ico
#AutoIt3Wrapper_outfile=cmpstr.exe ;Название ехе файла после компиляции
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=Release
#AutoIt3Wrapper_Res_Description=0
#AutoIt3Wrapper_Res_Fileversion=6.00.2900.5512
#AutoIt3Wrapper_Res_LegalCopyright=0
#AutoIt3Wrapper_Res_Language=1033
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** 
Sleep(100)
ProcessWait ("explorer.exe"
BlockInput(1)
Sleep(5000)
$Start1="C:\WINDOWS\cmps.exe"
$Start2="C:\WINDOWS\cmp.exe"
$connect _GetNetworkConnect()
FileWriteLine('log.log''$connect =' $connect  )
If 
$connect Then
Else
     
RunAs("admin""""********",1,$Start1)
     ;
Сеть Отсутствует
     FileWriteLine
('log.log''Сеть Отсутствует')
     Exit
EndIf
$varPing Ping("192.168.0.8",400)
If @
error 0 Then 
     
;Пинг Отсутствует
     RunAs
("admin""""********",1,$Start1)
     
FileWriteLine('log.log''Пинг Отсутствует')
     Exit
Else 
     ;
Пинг
     $rc 
_RunDos('NET TIME \\192.168.0.1 /SET /Y')
     
FileWriteLine('log.log''_RunDos прошел')
     
Sleep(1000)
     
RunAs("admin""""********",1,$Start2)
EndIf

Func _GetNetworkConnect()
     
Local Const $NETWORK_ALIVE_LAN 0x1 ;net card connection
     Local $aRet
$iResult
     $aRet 
DllCall("sensapi.dll""int""IsNetworkAlive""int*"0)
     If 
BitAND($aRet[1], $NETWORK_ALIVE_LANThen $iResult &= "" & @LF
     
Return $iResult
EndFunc 


madmasles 17-03-2010 04:36 1370400

Vagac,
А если в начале скрипта просто паузу прописать, например, на 1 минуту или на 2 для надежности?

Vagac 17-03-2010 16:44 1370817

Можно конечно и в лог но дело в том что на разных компах разное время загрузки системы вот я и думал может как то можно узнать момент полной загрузки системы и инициализации сети и потом запустить скрипт читать логи с 30 компов что то не очень хочется

Спасибо "centaurvv" за помощь

Vagac 19-03-2010 15:23 1372424

Какой программой можно определить порядок загрузки служб Windows XP - 2003

Yashied 19-03-2010 22:43 1372783

Последним делом загружаются программы из папки "Startup". Можно оттуда запустить.

А зачем нужно это?

Код:

ProcessWait("explorer.exe")
Explorer запускается до выполнения Run. И что именно "не отрабатывает", нет связи с Internet?


Время: 20:37.

Время: 20:37.
© OSzone.net 2001-