Autoit скомпилировать как консольное приложение
Мне нужна очень простая программа для запуска на любой версии Windows, скажем >= Win 98, не требуя никакого предустановленного фреймворка, такого как dotnet. Я подумал, что C будет отличной идеей сделать это.
Программа должна запустить процесс из родительского каталога с помощью системной команды.
Пуск C программа (невидимая) > запуск программы Процесс > выход из программы
Вот как это выглядит:
Я вызываю эту программу из проектора Flash, который позволяет запускать программы только в определенной подпапке "fscommand" – но я должен запустить процесс, расположенный в том же каталоге, что и проектор.
Во всяком случае, это прекрасно работает! Но программа C открывает окно команд, затем запускает процесс и оставляет окно команд открытым до тех пор, пока процесс выполняется. Итак, вот как это должно работать, чтобы я мог это оценить:
- Вообще не открывайте командное окно (мне бы этого очень хотелось ;)
- И 3) , и 4)
- Закройте командное окно после запуска процесса (выйдите из программы C)
- Откройте окно команд свернутое по умолчанию
Я не могу изменить какие-либо настройки Windows для исполняемого файла C или использовать ярлык, так как это будет выполняться непосредственно из CD позже.
Я использую Open Watcom для компиляции своей программы. Оба типа изображений (целевые параметры) , которые создают исполняемый файл (исполняемый файл в символьном режиме / оконный исполняемый файл), имеют один и тот же результат.
Я хотел бы скомпилировать свою программу Java в Eclipse, но не запускать ее. Я не могу понять, как это сделать. Как я могу скомпилировать программу Java в .class файлов в Eclipse без ее запуска?
Если вы используете консольное приложение, вы можете изменить его на приложение windows, используя winmain()
Вы можете использовать ярлык для файла в той же папке, не зная, почему вы отказываетесь от этого метода.
start даст вам fork, чтобы ваше промежуточное приложение могло закрыться - не уверен насчет win98 tho.
Вместо системы, которую вы можете использовать createProcess для запуска приложения, пользователь будет избегать консоли команд system .
Друг придумал совершенно другое решение. Теперь я использую AutoIt с коротким скомпилированным скриптом для запуска процесса. Это очень просто, и процесс запуска полностью невидим. :)
Я думаю , что функции _exec и/или _spawn делают то, что вам нужно, хотя я не уверен.
Если нет, вы всегда можете использовать CreateProcess , хотя в некоторых отношениях это может быть немного более утомительным.
Вы можете (например) использовать hstart вместо своей собственной программы для запуска этого exe.
(Это привело бы к отсутствию черного ящика вообще.)
Я хочу знать, как я могу скомпилировать программу C++ с Xcode 3.2.3? В предыдущей версии Xcode был доступен инструмент C++ для утилиты командной строки. Однако после того, как я обновился до последней версии Xcode 3.2.3, эти опции исчезли.
Раньше я использовал Xcode для создания и запуска программы C++ . Я использую командную строку для компиляции того же исходного кода в моем проекте Xcode . Компиляция отдельного файла .cpp - это OK. Компиляция более сложного проекта (более одного файла) - это не нормально. Я пробовал gcc , g++ .
CreateProcess с флагом CREATE_NO_WINDOW -это то, что вам нужно, но я хочу кое-что добавить. Чтобы также поддерживать команды стиля cmd (например , DIR , SET , . ), которые не имеют исполняемых файлов и не могут быть переданы в CreateProcess самостоятельно, вы должны вызвать cmd.exe /C someprogram , где someprogram -имя исполняемого файла, файла bat или команды.
Окно консоли отображается, потому что вы создали свою программу как консольное приложение. Я не знаю, как избежать этого в C, но в Delphi это была простая прагма в файле проекта.
GCC имеет опцию командной строки -mwindows , которая, я думаю, достигает того же, поэтому вы можете искать в этом направлении.
Похожие вопросы:
У меня есть эта структура проекта netbeans: /my_project |__/controllers | |__/factories | |__Factory.java | |__/integrator | |__Integrator.java | |__/models | |_Models.java | |__/main |_Main.java Но.
Я хочу скомпилировать программу c в командной строке dos с помощью tcc, а также tc без использования редактора c. пожалуйста, дайте полную процедуру.
Я установил переменные окружения Path и ClassPath. Но все же я не могу скомпилировать свою программу HelloWorld.java из командной строки. Пожалуйста, помогите мне скомпилировать и запустить.
Я хотел бы скомпилировать свою программу Java в Eclipse, но не запускать ее. Я не могу понять, как это сделать. Как я могу скомпилировать программу Java в .class файлов в Eclipse без ее запуска?
Я хочу знать, как я могу скомпилировать программу C++ с Xcode 3.2.3? В предыдущей версии Xcode был доступен инструмент C++ для утилиты командной строки. Однако после того, как я обновился до.
Раньше я использовал Xcode для создания и запуска программы C++ . Я использую командную строку для компиляции того же исходного кода в моем проекте Xcode . Компиляция отдельного файла .cpp - это OK.
Я понимаю, что когда компилятор C компилирует код, он компилирует его в машинный код, специфичный для процессора, на котором он был скомпилирован. Можно ли, например, скомпилировать мою программу C.
int fd1, fd2[2], i, tmp; char c; int offset, n; fd1 = open(argv[1], 0400); fd2[0] = mkdir(
/Assignment, S_IRUSR | S_IWUSR); fd2[1] = creat(argv[2], 0670); pipe(fd2); offset = lseek(fd1, (off_t)0.
Осторожно: скрипт для компиляции не должен содержать синтаксических ошибок, поскольку программа компиляции не проверяет синтаксис. Aut2Exe может быть использован тремя путями:
Метод 1 - Меню Пуск [ ]
Доступно только при полной установке.
1. Откройте Меню Пуск и найдите группу AutoIt v3.
2. Выберите Compile Script to .exe
3. Основное окно Aut2Exe должно появиться.
4. Используйте кнопку Browse для выбора входного файла (.au3) и выходного (.exe) файла.
5. Можно изменить иконку для выходного файла .exe - просто укажите путь к нужной иконке в поле Custom Icon (несколько иконок можно найти в Program Files\AutoIt3\Aut2Exe\Icons).
6. Ещё одна опция, которую вы хотели бы изменить - уровень сжатия (особенно при использовании FileInstall для добавления дополнительных файлов). Используйте пункт меню Compression, чтобы установить уровень сжатия. Чем выше уровень сжатия - тем дольше будет происходить компиляция. Но! Независимо от выбранного уровня сжатия скорость распаковки будет одинаковой.
7. Нажмите Convert, чтобы начать компиляцию.
Метод 2 - Правый клик [ ]
Доступно только при полной установке.
1. В Проводнике выберите файл .au3 для компиляции.
2. Вызовите контекстное меню правым кликом и выберите пункт Compile Script.
3. Файл будет скомпилирован с таким же именем и расширением .exe.
При компиляции этим методом, Aut2Exe исользует текущие настройки для иконки/уровня сжатия (из последнего запуска Aut2Exe методом 1).
Метод 3 - Командная строка [ ]
Синтаксис командной строки при запуске программы Aut2Exe.exe:
Aut2exe.exe /in <путь к файлу .au3> [/out <путь к файлу .exe>] [/icon <путь к файлу .ico>] [/comp 0-4] [/nopack] [x64] [/bin <путь к файлу .bin>]
Ключ | Использование | Значение по умолчанию |
/in | <путь к файлу.au3> Указывает путь к файлу скрипта для компиляции. | Нет. Путь к файлу должен быть указан |
/out | <путь к файлу.exe> Указывает путь к выходному файлу. <путь к файлу.a3x> Указывает путь к выходному файлу для создания *.a3x файла. | Имя входного файла с расширением .exe |
/icon | <путь к файлу .ico> Указывает путь к иконке для скомпилированного файла. | Иконка AutoIt |
/comp | Указывает уровень сжатия скрипта и включённых файлов (Это НЕ относится к UPX). Число между 0 (нет) и 4 (максимум). | 2 |
/nopack | Указывает, что файл не должен быть сжат с помощью UPX после компиляции. | pack |
/pack | Указывает, что файл должен быть сжат с помощью UPX после компиляции. | pack |
/x64 | Указывает, что скрипт должен быть скомпилирован для системы с архитектурой x64 (64-битная). | См. замечания |
/x86 | Указывает, что скрипт должен быть скомпилирован для системы с архитектурой x86 (32-битная). | См. замечания |
/console | Указывает, что скрипт должен быть скомпилирован, как консольное приложение. | Оконное приложение (/gui) |
/gui | Указывает, что скрипт должен быть скомпилирован, как оконное приложение. | Оконное приложение (/gui) |
/bin | <путь к файлу.bin> Указывает путь к бинарной основе для компиляции скрипта. | Используется файл из каталога Aut2exe |
Примеры использования [ ]
В результате будет создан файл c:\myapp.exe (нормальное сжатие) с указанной иконкой для системы с архитектурой x64.
В результате будет создан файл c:\myscript.exe (нормальное сжатие) со стандартной иконкой для системы с архитектурой x86.
Замечания по использованию [ ]
Пути с пробелами должны заключаться в двойные кавычки: "C:\Program Files\Test\test.au3".
Кроме /in все ключи опциональны.
По умолчанию, 32-битный компилятор создаёт 32-битный исполняемый файл, а 64-битный компилятор - 64-битный исполняемый файл. Используйте параметры /x86 и /x64, чтобы явно указать архитектуру выходного файла.
Ключи /pass и /nodecompile не используются, начиная с версии 3.2.8.1. Они будут проигнорированы при компиляции.
Ключи /ansi и /unicode не используются, начиная с версии 3.3.0.0.
Технические детали [ ]
Скомпилированный скрипт и дополнительные файлы, включённые с помощью FileInstall, сжимаются моим собственным (Jon) алгоритмом сжатия.
Раннее мы обновляли справочник страховых организаций, делается это редко, и я успеваю забыть, что нужно делать. Да и выполнять все эти действия мне просто лень. Но обновлять справочник надо. Поэтому я затеял с помощью не сложной программы упростить такую скучную работу. Программу для загрузки справочника я сделаю на ISN Autoit Studio.
Если вы еще не установили эту IDE, вот ссылка на сайт автора этого проекта и ссылки на загрузку. Установив и настроив Autoit Studio, приступим к созданию первого проекта.
Создаем новый проект.
Запускается редактор форм. Для тестирования формы добавим первую кнопку и укажем её текст и дескриптор.
Ну вот форма готова и подключена через инклуд в основной скрипт. Попробуем запустить компиляцию. Скорее всего ничего не произойдет, т.к. мы не указали параметры для отображения нашей формы. Пропишем в скрипте следующий код:
Скачивание и установка
На момент написания этой статьи версия Autoit была v3.3.14.5.
Можно конечно пользоваться и NotePad++, он поддерживает синтаксис Autoit, но я предпочитаю оригинальный редактор.
Порядок установки такой:
- Скачиваем и устанавливаем сначала autoit-v3-setup.exe;
- Затем уже ставим редактор SciTE4AutoIt3.exe.
После установки у нас в меню Пуск должен появиться пункт Autoit, заходим в него и выбираем Autoit Windows Info, открываем приложение.
Откройте этот пустой файл в оригинальном редакторе и увидите пару строк по умолчанию, это комментарии, все это можно удалить.
Autoit Windows Info.
Основы Autoit
Итак, самое простое, как заставить курсор мыши бегать по экрану, кликать там где нужно, крутить колесиком мыши, щелкать правой кнопкой и тд. и тп. Основы синтаксиса и самые необходимые базовые конструкции я приведу ниже, все остальное найдете сами в интернете:
Вкладка Mouse.
Важно ! Координаты X и Y отсчитываются конкретно под ваш монитор и ваше разрешение экрана. То есть, написав скрипт у себя дома, на работе он может кликать не туда куда нужно, обязательно нужно писать координаты под конкретное разрешение монитора.
Больше автоматизации, к примеру, как сделать, чтобы курсор гулял по какому-то сайту и периодически кликал по нужным местам, при этом не прописывая кучу строк MouseClick ? Для этого, как и в любом языке, есть понятие цикл. Приведу простые истины и углубляться в виды циклов не буду. Запомните это и пока хватит:
. набор команд, любой код.
Until (пока) $i = 5
MouseClick("left", 150, 255, 1)
Sleep(1000)
MouseClick("left", 155, 269, 1)
Sleep(1500)
MouseClick("left", 120, 251, 1)
Sleep(3000)
В самом начале цикл пробежал один раз и добавил +1 переменной $a, которая теперь стала равна 1: $a = 0 + 1, затем сравнил, выполнилось ли условие, что $a = 4 ? И так до тех пор, пока условие не выполнится и $a не станет равно 4.
Насчет Sleep, как я уже говорил, это просто задержка. Советую всегда ставить Sleep между конструкциями действий, например, перемещения мыши.
И последнее, операции условий (ветвления) или как хотите называйте.
If (в скобках пишутся условия или выражения) Then (тогда)
. набор строк или команд.
Else (иначе)
. набор строк или команд.
Endif (конец ветвления)
MouseClick("left", 150, 255, 1)
MouseClick("right", 150, 255, 1)
Понятно, думаю. Если $i равно 4, то кликаем левой кнопкой мыши 1 раз по координатам 150, 255. Иначе (если $i не равно 4) кликаем правой кнопкой мыши 1 раз по координатам 150, 255.
К примеру, в созданиях ботов для игр в качестве условия может выступать цвет пикселя, на который наведен курсор. Как вы помните, в утилите кроме координат еще показывает цвет пикселя в HEX формате.
В моем примере на картинке это 0xF0F4F9 (значение можно скопировать CTRL + C).
А как получить цвет пикселя непосредственно в программе автоматически ? Для этого есть несколько способов, самый простой это конструкция:
$x = 27
$y = 445
$i = "0xF0F4F9"
$color = PixelGetColor($x, $y)
if ($i = $color) Then
MouseClick("left", 150, 255, 1)
Разберем. В переменных $x и $y лежат координаты соответственно для X и Y, куда будем перемещаться. Переменной $color присвоим значение, которое отдаст PixelGetColor. Дальше условие, если переменная $i = переменной $color, то кликаем левой кнопкой мышки 1 раз по нужным координатам.
Ну и напоследок, одной из кучи возможности Autoit является набор текста, вы можете послать в нужное место нужные набор символов.
Ну про колесико мыши упомяну:
Запуск скрипта
Ну хорошо, мы все написали, сохранили и хотим проверить. Как запустить скрипт Autoit на исполнение? Есть два способа:
- В редакторе нажимаем Tools -> Go (запуск), Tools -> Stop Executing (остановка);
- В редакторе жмем F5 (запуск) и CTRL + Break (остановка).
Если вы не расставите нужные задержки через Sleep, то не успеете остановить скрипт. Кстати, в редактор встроен отладчик, который подсветит красным неверный синтаксис и не даст запуститься скрипту, если в нем есть ошибки.
Писать можно долго, возможностей у языка очень много, это были просто основы для понимания. Если есть вопросы задавайте в комментариях. И не забывайте ставить Sleep.
Читайте также: