76

Re: Вызов WinAPI функций в Lua

Сделал сборку для QUIK 8.5 (Lua 5.3).
Ссылки в первом сообщении.


toxa пишет:

и, чтобы два раза не вставать, добавьте GetCurrentProcessId()

GetCurrentProcessId() добавлена.

77

Re: Вызов WinAPI функций в Lua

Для QUIK версий 6.x и 7.x берём файл из каталога x32
Для QUIK версий 8.0..8.4 берём файл из каталога x64-Lua51
Для QUIK версий 8.5 и последующих берём файл из каталога x64-Lua53

Здравствуйте.
В каталоге по ссылке в первом сообщении увидел только х32 и х64.
Видимо осталась старая ссылка.

78

Re: Вызов WinAPI функций в Lua

Специально только что скачал файл по ссылке с данного сайта (из первого сообщения).
Файл называется w32.dll.zip, от 19.05.2020, размер 436 846 байт.
В этом архиве 3 папки:
x32
x64-Lua51
x64-Lua53

Так что всё на месте.
Я думаю у вас браузер закешировал скачку и не скачивает заново. Попробуйте другим браузером скачать, или предварительно перед скачиванием удалите файл с указанным именем из того места, куда производится скачивание.

79

Re: Вызов WinAPI функций в Lua

Да, действительно. С другого браузера все скачалось.

Спасибо.

80

Re: Вызов WinAPI функций в Lua

Здравствуйте.
Подскажите, как правильно использовать CreateProcess.
Пытаюсь запустить exe файл, который в свою очередь открывает и закрывает txt файлы для записи и чтения.
pp=getScriptPath().."\\myfile.exe";
w32.CreateProcess(pp,nil,nil,nil,0,0,nil,StartUpInfo, ProcessInfo);
В таком виде все работает. Можно запускать и останавливать скрипт сколь угодно раз. Но если закрыть и открыть квик и запустить скрипт, то txt файлы оказываются заняты другим процессом. Если удалить и добавить скрипт - все опять работает.
Возможно, необходимо воспользоваться
CloseHandle(hThread); // закрываем дескриптор процесса
CloseHandle(hProcess); // закрываем дескриптор потока
hThread и hProcess находятся в ProcessInfo. Как его получить?
Может я думаю не в том направлении?
Подскажите пожалуста.

81

Re: Вызов WinAPI функций в Lua

Вопрос закрыт.

82

Re: Вызов WinAPI функций в Lua

fin, было бы очень здорово, если бы вы поделились результатами и описанием того, как вы решили проблему.

83

Re: Вызов WinAPI функций в Lua

swerg пишет:

fin, было бы очень здорово, если бы вы поделились результатами и описанием того, как вы решили проблему.

Путь необходимо было прописать в двух местах
pp=getScriptPath().."\\Myfile.exe";
ppp=getScriptPath();
rez = w32.CreateProcess(pp,"","","",1,0,"",ppp,"", ProcessInfo);
Надеюсь кому-то поможет.
Все работает, но хотелось бы что бы в обратную сторону rez был ввиде таблицы (сейчас rez=1.0) с информацией от ProcessInfo, которая необходима и для CloseHandle и для TerminateProcess, может и для других функций. Причем, это не мои желания, это стандартный функционал самой ф-ции CreateProcess.

84

Re: Вызов WinAPI функций в Lua

swerg пишет:

GetCurrentProcessId() добавлена.

А как её использовать, например для автологина? Чтобы вводить пароль в правильном экземпляре Квик.

85

Re: Вызов WinAPI функций в Lua

Сравнивать с GetWindowThreadProcessId()

86 (2020-05-24 21:41:01 отредактировано swerg)

Re: Вызов WinAPI функций в Lua

fin пишет:

но хотелось бы что бы в обратную сторону rez был ввиде таблицы (сейчас rez=1.0) с информацией от ProcessInfo

Эта функция возвращает несколько параметров:

res, hProcess, hThread, dwProcessId, dwThreadId = w32.CreateProcess(...)

res равно либо 1 либо 0,
Если res == 1, то остальные параметры заполняются как раз значениями из lpProcessInformation.
Если res == 0, то остальные параметры заполняются nil.

87

Re: Вызов WinAPI функций в Lua

res, hProcess, hThread, dwProcessId, dwThreadId = w32.CreateProcess(...)

Спасибо.