Что нового

[Файловая система] Удаление файлов только ПОСЛЕ закрытия окна (WinWaitClose,FileDelete)

warezoogle3

Новичок
Сообщения
73
Репутация
1
Привет Всем!

Написал вот такой код:
Код:
AutoItSetOption("WinTitleMatchMode", 2)
AutoItSetOption("WinDetectHiddenText", 1)

FileInstall("C:\Documents and Settings\Administrator\Desktop\New Folder\idapi32.cfg", @TempDir & "\idapi32.cfg") ;Копируем файлы в временную папку
FileInstall("C:\Documents and Settings\Administrator\Desktop\New Folder\Install RC.exe", @TempDir & "\Install RC.exe")
FileInstall("C:\Documents and Settings\Administrator\Desktop\New Folder\KDW ARM_XP.Theme", @TempDir & "\KDW ARM_XP.Theme")
FileInstall("C:\Documents and Settings\Administrator\Desktop\New Folder\KDWR.FON", @TempDir & "\KDWR.FON")
FileInstall("C:\Documents and Settings\Administrator\Desktop\New Folder\KDWA.FON", @TempDir & "\KDWA.FON")
FileInstall("C:\Documents and Settings\Administrator\Desktop\New Folder\Setup.exe", @TempDir & "\Setup.exe")
FileInstall("C:\Documents and Settings\Administrator\Desktop\New Folder\logo.jpg", @TempDir & "\logo.jpg")
FileInstall("C:\Documents and Settings\Administrator\Desktop\New Folder\Win 7 Blue New.themepack", @TempDir & "\Win 7 Blue New.themepack")

Run(@TempDir & "\Install RC.exe") ;Запуск

WinWaitClose("Ginza Installation Suite", "Install Ginza") ;Ждем закрития окна

FileDelete(@TempDir & "\idapi32.cfg") ;Удаляем файлы из временной папки
FileDelete(@TempDir & "\Install RC.exe")
FileDelete(@TempDir & "\KDW ARM_XP.Theme")
FileDelete(@TempDir & "\KDWR.FON")
FileDelete(@TempDir & "\KDWA.FON")
FileDelete(@TempDir & "\Setup.exe")
FileDelete(@TempDir & "\logo.jpg")
FileDelete(@TempDir & "\Win 7 Blue New.themepack")


Компилирую,запускаю,копирует файлы в Temp,запускает exe-шник и ... сразу начинает удалять файлы,не ждет закрития окна,причем удаляет так быстро,что даже логотип не успевает появляться в программе.

Что-то я не правильно делаю. Помогите пожалуйста. :beer: :IL_AutoIt_1:
 

glax24

Знающий
Сообщения
72
Репутация
14
Попробуйте вместо
Код:
Run
использовать
Код:
RunWait

И
Код:
WinWaitClose("Ginza Installation Suite", "Install Ginza") ;Ждем закрития окна

можно убрать
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
или поставить задержку после Run. думается мне, что просто окно не успевает появляться, прежде чем скрипт переходит к поиску окна для закрытия.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Kaster [?]
или поставить задержку после Run
Лучше через _RunWaitWin:

Код:
#include <WinAPIEx.au3>

$hWin = _RunWaitWin(@TempDir & "\Install RC.exe", "", "")
WinWaitClose($hWin)

Func _RunWaitWin($sProgram, $sParams, $sClassName = '')
	Local $iPID, $aProcs, $aWins, $hWin
	
	$iPID = Run($sProgram & ' ' & $sParams)
	ProcessWaitClose($iPID)
	Sleep(200)
	
	$aProcs = ProcessList($sProgram)
	
	For $i = 1 To UBound($aProcs)-1
		$aWins = _WinAPI_EnumProcessWindows($aProcs[$i][1])
		
		For $j = 1 To UBound($aWins)-1
			If $aWins[$j][1] = $sClassName Then
				$hWin = $aWins[$j][0]
			EndIf
		Next
	Next
	
	Return $hWin
EndFunc
 
Автор
W

warezoogle3

Новичок
Сообщения
73
Репутация
1
glax24,Kaster,CreatoR
Спасибо огромное,все отлично работает! :beer: :beer: :beer: :IL_AutoIt_1:

CreatoR,до Вашего мастерства мне еще далеко,как до луны! Буду разбиратся,как все это работает.Жутко интересно стало!
 
Верх