Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> exec / execandwait / os.execute, командная строка в свернутом виде?
sergeyk1980
сообщение 16.2.2022, 10:27
Сообщение #1


**

Neophyte
Сообщений: 15
Регистрация: 16.10.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.162
Возраст: 40



Идёт сканирование окна на цвет.
В зависимости от цвета срабатывает условие и в командную строку шлётся команда. Вспрывающий терминал перекрывает окно
Есть ли техническая возможность (без правки реестра) запускать командную строку в свёрнутом или минимизированном по размерам виде (exec / execandwait / os.execute).
Игры с cmd/start ни к чему не привели. Они срабатывают в уже открытом окне

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 16.2.2022, 11:14
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26763
Пользователь №: 16.971
Возраст: 29



Код
--lua
local h = io.popen([[cmd.exe /c start calc.exe]])  -- запустить cmd и отправить команду открыть калькулятор
h:close()
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sergeyk1980
сообщение 16.2.2022, 11:35
Сообщение #3


**

Neophyte
Сообщений: 15
Регистрация: 16.10.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.162
Возраст: 40



Цитата(cirus @ 16.2.2022, 11:14) *

Код
--lua
io.popen([[cmd.exe /c start calc.exe]])  -- запустить cmd и отправить команду открыть калькулятор



тоже выскакивает окно.
Механика вот такая. И пока единственным способом иметь стабильный счётчик - это расположение окна в нижнем правом углу. Что дико неудобно. Хочу это обойти. На видео видно что счётчик сбоит пропуская когда вылазит черное окно
[+]
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 16.2.2022, 12:13
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26763
Пользователь №: 16.971
Возраст: 29



Код
--lua
local ffi = require("ffi")
local shell = ffi.load('Shell32.dll')
local SW_HIDE = 0
ffi.cdef[[int ShellExecuteA(int hwnd, const char* lpOperation, const char* lpFile, const char* lpParameters, const char* lpDirectory, int nShowCmd);]]


shell.ShellExecuteA(0, 'open', 'cmd.exe', 'start /c calc.exe', '', SW_HIDE)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sergeyk1980
сообщение 16.2.2022, 12:57
Сообщение #5


**

Neophyte
Сообщений: 15
Регистрация: 16.10.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.162
Возраст: 40



Цитата(cirus @ 16.2.2022, 12:13) *

Код
--lua
local ffi = require("ffi")
local shell = ffi.load('Shell32.dll')
local SW_HIDE = 0
ffi.cdef[[int ShellExecuteA(int hwnd, const char* lpOperation, const char* lpFile, const char* lpParameters, const char* lpDirectory, int nShowCmd);]]
shell.ShellExecuteA(0, 'open', 'cmd.exe', 'start /c calc.exe', '', SW_HIDE)



Ратотает, благодарю (IMG:style_emoticons/default/rolleyes.gif)

Я так понял вызов shell работает асинхронно. Что рождает новые вопросы.
1. возможно ли получить ответ в переменную выполнение командной строки через shell.ShellExecuteA минуя clipboard
2. ожидать завершения выполнения.

в моём случае запрос выглядит так:
shell.ShellExecuteA(0, 'open', 'cmd.exe', 'start /c netsh advfirewall firewall show rule name=RAID | clip', '', SW_HIDE)
s = clipboard ()

Решение нашел тут.
запуск командной строки в скрытом режиме с ожиданием ответа.
https://forum.uokit.com/index.php?s=&sh...st&p=439344
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 7.5.2024, 3:26
Designed by Nickostyle