Что нового

Подскажите, почему она не скрывает окно?

Arei

Скриптер
Сообщения
938
Репутация
115
Run(@ProgramFilesDir &"\WinRAR\WinRAR.exe a -m5 -s 1.rar 2", @WindowsDir,@SW_HIDE )
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
1. Для кода есть соответсвующий тег.
2. Не все окна удается скрыть при запуске через Run.
Попробуйте скрыть окно сразу после Run. Пример:
Код:
; открытие блокнота
Run('notepad.exe')
; остановка скрипта до появления окна
WinWait('Безымянный — Блокнот')

MsgBox(64, '', 'Скрываем окно')
; скрытие окна
WinSetState('Безымянный — Блокнот', '', @SW_HIDE)

MsgBox(64, '', 'Окно скрыто, отображаем его')
; отображение окна
WinSetState('Безымянный — Блокнот', '', @SW_SHOW)
; активация окна
WinActivate('Безымянный — Блокнот')
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
А если RunWait ?или то же не скроется?
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
А вы в курсе, что выполняет функция RunWait?
Советую открыть справку, скопировать вторую строчку (сразу после заголовка RunWait ) и перевесети, например, через гуггл.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Arei
Из справки по WinRAR:[box title=TitleBox]Ключ -IBCK — запустить WinRAR как фоновый процесс в системном лотке
--------------------------------------------------------------------------------
Минимизирует WinRAR в системный лоток (область уведомлений в панели задач) при запуске для архивации или распаковки.

Этот ключ эквивалентен параметру "Архивировать в фоновом режиме" в диалоге "Имя и параметры архива".
[/box]Попробуйте этот ключ добавить.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Arei, Помогло, то что надо, заработало? А значит пора тему отметить решенной.
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Да помогло, но было бы лучше,если вообще его скрыть из панели .Заранее спасибо
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
а как, а то я читал, но что то не получается!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Arei [?]
а как, а то я читал, но что то не получается!
Простой пример:
Код:
#include <Constants.au3>
#include <WinAPIEx.au3>

$sLog = ''
$sRar = 'Rar.exe'
$sFile = 'test.txt'
$sFileRar = 'test'
$iPID = Run(@ComSpec & ' /K ' & $sRar & ' a ' & $sFileRar & ' ' & $sFile, '', @SW_HIDE, $STDOUT_CHILD)

While 1
	$sLog &= StdoutRead($iPID)
	If @error Then ExitLoop
	Sleep(10)
WEnd
MsgBox(0, '', _WinAPI_OemToChar($sLog))

Другие команды и ключи смотрите в справке WinRAR.
WinAPIEx.au3.
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
madmasles в твоем примере даже я не сразу понял что и как ;D
вот есть проще намного способ без дополнительных библиотек и прочего:
Код:
; создадим архив из файлов по маске *.doc *.docx *.xls *.xlsx *.txt с максимальным сжатием и 3% информации для востановления
; поместим его в корень системного диска в виде MyDOCS_ГГГГММДД.rar
$dir = @ProgramFilesDir&'\WinRar'
$path = $dir&'\Rar.exe a -m5 -r -rr3p -y -- '&@HomeDrive&'\MyDOCS_'&@YEAR&@MON&@MDAY&'.rar '&@HomeDrive&'\*.doc *.docx *.xls *.xlsx *.txt'
$pid = Run($path,$dir,@SW_HIDE)
ProcessWaitClose($pid)
MsgBox(0,'','Готово!')
ShellExecute(@HomeDrive&'\MyDOCS_'&@YEAR&@MON&@MDAY&'.rar')




Добавлено:
Сообщение автоматически объединено:

единственный минус из справки:
Код:
-ilog[имя]
            Записывать протокол ошибок в файл (эта функция доступна только
            в зарегистрированной версии RAR).
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Guezt Gutsy [?]
в твоем примере даже я не сразу понял что и как
Имхо, все просто. Все выполняется в run, так же, как и в твоем примере.
А доп. UDF для чтения лога. На который, вполне, можно забить.

Опять же, госпада, а так ли принципиален WinRAR?
Имхо, гораздо лучше 7zip.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
qsort [?]
Чего вы мучаетесь, выкиньте окно за экран - пусть оно там и рарит и разраривает, сколько хочет...
Хммм....по мойму коммандный вариант, в данном случае, будет удобней.
Если вопрос о скрытом режиме, зачем вообще использовать GUI вриант?
Через коммандный режим: ни кнопок на панели задач, ни окон.
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
OffTopic:
qsort [?]
Чего вы мучаетесь, выкиньте окно за экран - пусть оно там и рарит и разраривает, сколько хочет...
Да но окно RAR будет на панели задач в таком случае :smile:
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
qsort
Вся суть в том. Что есть более лучшее решение данной задачи, чем вынести окно за пределы экрана.
И для реализации этих решений потребуется столько же времени.
А именно, использовать коммандный режим работы с архиватором:
1)
Код:
Run(@ComSpec & ' /K ' & $sRar & ' a ' & $sFileRar & ' ' & $sFile, '', @SW_HIDE)


И или скрыть окно:
2)
Код:
WinWait('Безымянный — Блокнот')
WinSetState('Безымянный — Блокнот', '', @SW_HIDE)


А лучше, потому, что в этих вариантов нет окон программы и кнопок на панели задач.
Причем вариант №1 выиграет у любого решения по скорости реализации и универсальности исполнения.
 
Автор
A

Arei

Скриптер
Сообщения
938
Репутация
115
Спасибо,
Код:
#include <Constants.au3>
#include <WinAPIEx.au3>

$sLog = ''
$sRar = 'Rar.exe'
$sFile = 'test.txt'
$sFileRar = 'test'
$iPID = Run(@ComSpec & ' /K ' & $sRar & ' a ' & $sFileRar & ' ' & $sFile, '', @SW_HIDE, $STDOUT_CHILD)

While 1
    $sLog &= StdoutRead($iPID)
    If @error Then ExitLoop
    Sleep(10)
WEnd
MsgBox(0, '', _WinAPI_OemToChar($sLog))


хороший пример, но скажите почему не хочет работать с файлами,или я что то не так понимаю.Заранее спасибо.
 
Верх