Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Не работает команда @SW_HIDE в Autoit последней версии

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

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый "вечер", уважаемые кодеры. Я новичок в 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.: если я взялся эксперементировать над программой такого рода, то это ещё совсем не значит, что я буду использовать её во вред другим. Помогите, пожалуйста разобраться.

Отправлено: 02:51, 29-06-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:50, 29-06-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


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 без видимого окна?

Последний раз редактировалось ZPro, 29-06-2012 в 13:24. Причина: попытался отредактировать, чтоб выглядело по человечески


Отправлено: 13:22, 29-06-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


ZPro, разумеется. Не забывайте, на всякий случай, обрамлять пути кавычками:
Код: Выделить весь код
RunWait('ProductKeyExplorer.exe /remote 127.0.0.1 /f "@ScriptDir\Logs\BackUp.html" /exit' , '"@ScriptDir"', 7)
Цитата ZPro:
запускаться будет из start.bat »
Старайтесь не давать пакетным файлам имён встроенных команд.


Цитата ZPro:
можно ли прописать в скрипте ключи, что бы он сам выполнялся без видимого окна? »
Так у него и нет видимого окна, только иконка в System Tray.

Отправлено: 16:03, 29-06-2012 | #4


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уважаемый Iska, к сожалению написанный вами пример не срабатывает, программа даже не запускается, а если убрать
Цитата Iska:
'"@ScriptDir"' »
то программа вообще отчёты не оставит

Отправлено: 19:07, 29-06-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата ZPro:
написанный вами пример не срабатывает, »
Угу. Языки перемешались.

Так:
Код: Выделить весь код
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» установлен в умолчальную папку.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:35, 29-06-2012 | #6


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, спасибо тебе большое! Всё получилось!
Я использую Portable версию и для неё у меня получилось вот так:
Код: Выделить весь код
 RunWait('"' & 'ProductKeyExplorer.exe" /remote 127.0.0.1 /f "' & @ScriptDir & '\Logs\BackUp.html" /exit', '', 7 , True)
Ещё раз спасибо! Хороший язык, надеюсь у меня получится изучить его.

Отправлено: 19:47, 29-06-2012 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


ZPro, если исполняемый файл «ProductKeyExplorer.exe» находится рядом со скриптом…
читать дальше »
…тогда надёжнее указать на сей факт:
Код: Выделить весь код
RunWait('"' & @ScriptDir & '\ProductKeyExplorer.exe" /remote 127.0.0.1 /f "' & @ScriptDir & '\Logs\BackUp.html" /exit', '', 7 , True)


Цитата ZPro:
Хороший язык, надеюсь у меня получится изучить его. »
Не забывайте про русскоязычное сообщество: Русское сообщество AutoIt - Главная страница.

Отправлено: 20:12, 29-06-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Не работает команда @SW_HIDE в Autoit последней версии

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Настройка русской версии SciTE под AutoIt Vlasssov AutoIt 55 20-01-2016 23:17
Microsoft рассказывает о возможностях последней версии Internet Explorer 10 OSZone News Новости и события Microsoft 0 02-06-2012 14:30
CMD/BAT - Удаление всех приложений Java батником и установка последней версии timur_t Скриптовые языки администрирования Windows 1 03-11-2010 14:05
Не работает команда Run archiver AutoIt 6 30-12-2009 22:01
[решено] @SW_HIDE и *.msi Frag-o-Matik AutoIt 3 21-04-2009 15:46




 
Переход