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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Не работает команда @SW_HIDE в Autoit последней версии (http://forum.oszone.net/showthread.php?t=237515)

ZPro 29-06-2012 02:51 1942455

Не работает команда @SW_HIDE в Autoit последней версии
 
Добрый "вечер", уважаемые кодеры. Я новичок в 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 29-06-2012 03:50 1942463

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 29-06-2012 13:22 1942668

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 29-06-2012 16:03 1942797

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

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

Цитата ZPro
запускаться будет из start.bat »

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


Цитата:

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

Так у него и нет видимого окна, только иконка в System Tray.

ZPro 29-06-2012 19:07 1942921

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

Цитата Iska
'"@ScriptDir"' »

то программа вообще отчёты не оставит

Iska 29-06-2012 19:35 1942937

Цитата:

Цитата 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» установлен в умолчальную папку.

ZPro 29-06-2012 19:47 1942942

Iska, спасибо тебе большое! Всё получилось!
Я использую Portable версию и для неё у меня получилось вот так:
Код:

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

Iska 29-06-2012 20:12 1942959

ZPro, если исполняемый файл «ProductKeyExplorer.exe» находится рядом со скриптом…
читать дальше »
…тогда надёжнее указать на сей факт:
Код:

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


Цитата:

Цитата ZPro
Хороший язык, надеюсь у меня получится изучить его. »

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


Время: 05:18.

Время: 05:18.
© OSzone.net 2001-