[решено] Не работает команда @SW_HIDE в Autoit последней версии

Ответить
Аватара пользователя
ZPro

[решено] Не работает команда @SW_HIDE в Autoit последней версии

Сообщение ZPro »

Добрый "вечер", уважаемые кодеры. Я новичок в AutoIt, поэттому прошу сильно не пинать, если что. Так вот, я часто бываю на данном форуме, наткнулся на интересную статью про AutoIt и заинтересовался программой, прочитал почти всю справку и решил опробывать полученные знания, а чтоб было интересней (чтоб не бросить на пол пути) стал эксперементировать над программой Product Key Explorer. Сначала я долго не мог понять, как же передать программе ключи командной строки, но потом разобрался, всё вроде бы работает, кроме команды @SW_HIDE, окно попросту не прячется. Код получился вот такой:



Код:

Код: Выделить всё

 RunWait('ProductKeyExplorer.exe /remote 127.0.0.1 /f BackUp.xls /exit ' ,@ScriptDir, @SW_HIDE)

за счёт использования ключа "/exit" программа выходит, притом пока она работает, её окно видно, получается, что окно программы моргает вместо того, что бы не появляться вообще. Если не использовать ключ "/exit", то программа выполнит своё дело, а её окно останется висеть, пока не нажмёшь кнопку выхода. собственно сабж: как же заставить окно программы не появляться, а делать свои дела по-тихому?



P.S.: если я взялся эксперементировать над программой такого рода, то это ещё совсем не значит, что я буду использовать её во вред другим. Помогите, пожалуйста разобраться.
Аватара пользователя
Iska

Re: [решено] Не работает команда @SW_HIDE в Autoit последней версии

Сообщение Iska »

ZPro, если приложение после своего запуска самостоятельно устанавливает видимость своего окна — никак (разве что кроме правки самого кода):


Цитата:





wShowWindow

If dwFlags specifies STARTF_USESHOWWINDOW, this member can be any of the SW_ constants defined in Winuser.h. Otherwise, this member is ignored.



For GUI processes, wShowWindow specifies the default value the first time ShowWindow is called. The nCmdShow parameter of ShowWindow is ignored. In subsequent calls to ShowWindow, the wShowWindow member is used if the nCmdShow parameter of ShowWindow is set to SW_SHOWDEFAULT.





Максимум, что Вы можете сделать — запустить приложение, дождаться появления его окна, скрыть это окно. От кратковременного мигания, конечно, сим не избавитесь. Другой вариант, если приложение запоминает последнее местоположение своего окна, попробовать использовать сие, заранее задав тем или иным способом (зависит от конкретно взятого приложения) положение окна заведомо за границами экрана.



В случае же «Product Key Explorer» первое:


читать дальше »




Код:

Код: Выделить всё

Run("""c:\Program Files\Nsasoft\ProductKeyExplorer\ProductKeyExplorer.exe"" /remote 127.0.0.1 /f ""c:\Temp\BackUp.xls"" /exit", "", @SW_HIDE)
WinSetState(WinWait("[TITLE:Product Key Explorer; CLASS:#32770]"), "", @SW_HIDE)



не особо помогает (поскольку приложение отрабатывает быстрее, нежели скрывается окно), а второе попросту неприменимо, поскольку не используется приложением. Так что, самое реальное решение — используйте флаг @SW_MINIMIZE или значение «7» — «SW_SHOWMINNOACTIVE»:



Код:

Код: Выделить всё

#define SW_SHOWMINNOACTIVE  7
Аватара пользователя
ZPro

Re: [решено] Не работает команда @SW_HIDE в Autoit последней версии

Сообщение ZPro »

Iska, спасибо, работает, но вот ещё вопрос: можно ли запустить PKE вот так:

Код:

Код: Выделить всё

 RunWait('ProductKeyExplorer.exe /remote 127.0.0.1 /f BackUp.html /exit' ,@ScriptDir, 7)

но так что бы программа складывала файлы отчёта не в ту же папку, а в другую папку внутри этой? Эээ... как то я заморочено написал Изображение, ну примерно так: @ScriptDir\Logs. Просто прямые пути, как тут:


Цитата:



""c:\Temp\BackUp.xls""



не известны.



P.S.: Скрипт потом будет откомпилированн в *.exe, запускаться будет из start.bat, можно ли прописать в скрипте ключи, что бы он сам выполнялся без видимого окна? или как запустить его (скрипт) из start.bat без видимого окна?
Аватара пользователя
Iska

Re: [решено] Не работает команда @SW_HIDE в Autoit последней версии

Сообщение Iska »

ZPro, разумеется. Не забывайте, на всякий случай, обрамлять пути кавычками:



Код:

Код: Выделить всё

RunWait('ProductKeyExplorer.exe /remote 127.0.0.1 /f "@ScriptDir\Logs\BackUp.html" /exit' , '"@ScriptDir"', 7)


Цитата ZPro:



запускаться будет из start.bat
[решено] Не работает команда @SW_HIDE в Autoit последней версии




Старайтесь не давать пакетным файлам имён встроенных команд.




Цитата ZPro:



можно ли прописать в скрипте ключи, что бы он сам выполнялся без видимого окна?
[решено] Не работает команда @SW_HIDE в Autoit последней версии




Так у него и нет видимого окна, только иконка в System Tray.
Аватара пользователя
ZPro

Re: [решено] Не работает команда @SW_HIDE в Autoit последней версии

Сообщение ZPro »

Уважаемый Iska, к сожалению написанный вами пример не срабатывает, программа даже не запускается, а если убрать
Цитата Iska:



'"@ScriptDir"'
[решено] Не работает команда @SW_HIDE в Autoit последней версии




то программа вообще отчёты не оставит
Аватара пользователя
Iska

Re: [решено] Не работает команда @SW_HIDE в Autoit последней версии

Сообщение Iska »

Цитата ZPro:



написанный вами пример не срабатывает,
[решено] Не работает команда @SW_HIDE в Autoit последней версии




Угу. Языки перемешались.



Так:



Код:

Код: Выделить всё

RunWait("""" & @ProgramFilesDir & "\Nsasoft\ProductKeyExplorer\ProductKeyExplorer.exe"" /remote 127.0.0.1 /f """ & @ScriptDir & "\BackUp.xls"" /exit", "", 7 , True)

Или так:



Код:

Код: Выделить всё

RunWait('"' & @ProgramFilesDir & '\Nsasoft\ProductKeyExplorer\ProductKeyExplorer.exe" /remote 127.0.0.1 /f "' & @ScriptDir & '\BackUp.xls" /exit', '', 7 , True)

Предполагается, что «Product Key Explorer» установлен в умолчальную папку.
Аватара пользователя
ZPro

Re: [решено] Не работает команда @SW_HIDE в Autoit последней версии

Сообщение ZPro »

Iska, спасибо тебе большое! Всё получилось!

Я использую Portable версию и для неё у меня получилось вот так:



Код:

Код: Выделить всё

 RunWait('"' & 'ProductKeyExplorer.exe" /remote 127.0.0.1 /f "' & @ScriptDir & '\Logs\BackUp.html" /exit', '', 7 , True)

Ещё раз спасибо! Хороший язык, надеюсь у меня получится изучить его.
Аватара пользователя
Iska

Re: [решено] Не работает команда @SW_HIDE в Autoit последней версии

Сообщение Iska »

ZPro, если исполняемый файл «ProductKeyExplorer.exe» находится рядом со скриптом…


читать дальше »


…тогда надёжнее указать на сей факт:



Код:

Код: Выделить всё

RunWait('"' & @ScriptDir & '\ProductKeyExplorer.exe" /remote 127.0.0.1 /f "' & @ScriptDir & '\Logs\BackUp.html" /exit', '', 7 , True)








Цитата ZPro:



Хороший язык, надеюсь у меня получится изучить его.
[решено] Не работает команда @SW_HIDE в Autoit последней версии




Не забывайте про русскоязычное сообщество:
Русское сообщество AutoIt - Главная страница
.
Ответить

Вернуться в «AutoIt»