|
LuaPosh, Новые возможности пилота |
|
|
Fors1k |
23.3.2020, 18:20
|
Journeyman
Сообщений: 497
Регистрация: 19.12.2017 Группа: Пользователи Наличность: 1712
Пользователь №: 18.746
|
Установка:Написал модуль для возможности писать на PoSh прямо из пилота. Можно писать одновременно как на lua, так и на PoSh внутри одного скрипта. PoSh очень гибкий и компактный язык. Все его возможности доступны без необходимости установки дополнительных модулей (за исключением, кончено, специфических потребностей). Примеры компактности языка: №1задача
Цитата(FREEON @ 17.2.2020, 15:38) Вот еще задачка. нужно найти все комментарии однострочные и многострочные, но данная регулярка не совсем корректно находит многострочные комментарии. Всего комментариев 7(для наглядности в тексте примера их пронумеровал и отметил жиром) из них: 5 однострочных и 2 многострочных Вот рег: <!--(.+|(.|\s)*)--> Вот пример текста: <!--1 однострочный коментарий--> текст <!-- 2 Это -- комментарий --> текст <!-- 3 многострочный коментарий текст какой-то--> текст Эт0 к0д какой-то <!-- 4 это еще один ногострочный коментарий --> текст <!-- 5 это считается коментарием <!-- и это коментарием --> а этот текст уже нет--> <!-- 6 --><!--7-->
Решение на Pilot (только для Ansi, так как с utf pilot не работает вовсе)
Код log clear_current log mode compact load_array %a C:\1.txt for #i 1 size(%a) set $a %a[#i] while regexp(#p $r $a <!--.*?(-->|$)) log $r while copy($r eval(size($r)-2) 3) != --> set #i #i + 1 set $a %a[#i] if regexp(#p $r $a ^.*?-->) log $r break end_if log %a[#i] end_while set $a string_replace($a $r "") end_while end_for log save_current C:\2.txt end_script
Решение на lua
Код --lua log "clear" log "mode compact" package.path = "LuaPlugins\\winapi\\?.lua;" .. package.path package.path = "LuaPlugins\\?.lua;" .. package.path setfenv(1, require'winapi') require'utf8'
local s = readfile([[C:\1.txt]]) local f2 = io.open([[C:\2.txt]], "wb")
if s and f2 then
for w in s:gmatch("<%!%-%-.-%-%->") do log (w .. "\r\n") f2:write(w .. "\r\n") end f2:close() end
exec ("notepad.exe", [[C:\2.txt]])
end_script ()
Решение на LuaPoSh. Сам код на ps занимает всего одну строку. Исходная кодировка текста может быть как юникод, так и Ansi.
--lua require "LuaPoSh";PScode('void',{[[#} # [regex]::Matches((Get-Content C:\1.txt), '<!--.+?-->').value > C:\2.txt;C:\2.txt # ]]})
№2задача
Цитата(neves @ 15.3.2020, 15:57) Hello everyone. I have a problem with showwindow() state commands. In the wiki page are given only these states: Код HIDE: спрятать окно MAXIMIZE: развернуть во весь экран MINIMIZE: свернуть RESTORE: развернуть SHOW: показать TOP: вытащить на поверхность. My question is: Are there any other states which I can use, because none of these worked for my problem? I am trying to minimize and restore given window in windows 10 virtual desktops, without switching between the desktops automatically. I need more like a popup state. When I use RESTORE or MAXIMIZE state, it switches to the virtual desktop where the window is located automatically.
Решение на lua
Код --lua package.path = "LuaPlugins\\winapi\\?.lua;" .. package.path package.path = "LuaPlugins\\glue\\?.lua;" .. package.path setfenv(1, require'winapi') require[[winapi.winuser]]
local ffi = require("ffi") ffi.cdef[[ BOOL ShowWindow(int hWnd, int nCmdShow); ]]
local SW_SHOWNOACTIVATE = 4
hndl=findwindow ("Калькулятор")
C.ShowWindow(hndl[1][1], SW_SHOWNOACTIVATE)
Решение на LuaPoSh. Сам код на ps занимает всего одну строку.
--lua require "LuaPoSh";PScode('void',{[[#} # WinApi ShowWindow([int]$input, 4) # ]]}, findwindow("Калькулятор")[1][1])
№3задача
Цитата(portos @ 3.9.2020, 14:41) в папке D\3 находятся папки с фото,нужно оставить только файлы jpg которые больше 100х100 пикс
Решение на lua
Код --lua local ffi = require('ffi') local gdip = ffi.load('Gdiplus.dll') local CP_ACP = 0
ffi.cdef[[ typedef unsigned int UINT; typedef unsigned long DWORD; typedef struct {UINT GdiplusVersion; int DebugEventCallback; bool SuppressBackgroundThread; bool SuppressExternalCodecs;} GdiplusStartupInput, *pGdiplusStartupInput;
bool DeleteFileA(const char *lpFileName); int GdiplusStartup(int *token, pGdiplusStartupInput GdiplusStartupInput, int *output); int GdiplusShutdown(int token); int GdipDisposeImage(int image); int GdipLoadImageFromFile(const wchar_t *filename, int *image); int GdipGetImageWidth(int image, UINT *width); int GdipGetImageHeight(int image, UINT *height); int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, const char *lpMultiByteStr, int cbMultiByte, wchar_t *lpWideCharStr, int cchWideChar); ]]
function image_size(path) local buf = ffi.new('wchar_t[?]', #path+1) local StartupInput = ffi.new('GdiplusStartupInput', {1, 0, 0, 0}) local token, image, w, h = ffi.new('int[1]'), ffi.new('int[1]'), ffi.new('int[1]'), ffi.new('int[1]') ffi.C.MultiByteToWideChar(CP_ACP, 0, path, #path, buf, ffi.sizeof(buf)) gdip.GdiplusStartup(token, StartupInput, nil) gdip.GdipLoadImageFromFile(buf, image) gdip.GdipGetImageWidth(image[0], w) gdip.GdipGetImageHeight(image[0], h) gdip.GdipDisposeImage(image[0]) gdip.GdiplusShutdown(token[0]) return w[0], h[0] end
log 'clear' log 'mode compact'
local path = [[D:\3]] -- путь к папке
local resultarray, count = dir (path, "*.bmp;*.jpg") -- получить список всех файлов в формате bmp и jpg log ("Найдено файлов: " .. count)
if count then -- если файлы найдены for i=1, #resultarray do local width, height = image_size( resultarray[i][1] ) log(resultarray[i][1].. '\tШирина: ' .. tostring(width) .. '\t'.. 'Высота: ' .. tostring(height)) -- размеры картинки if width < 100 and height < 100 then -- если ширина и высота меньше 100 ffi.C.DeleteFileA( resultarray[i][1] ) -- удалить файл end end end local resultarray, count = dir (path, "*.?*") -- получить список всех файлов log ("Найдено файлов: " .. tostring(count)) if count then -- если файлы найдены for i=1, #resultarray do if resultarray[i][4] ~= '.jpg' then -- если не jpg log('Удаление файла: ' .. resultarray[i][1]) ffi.C.DeleteFileA( resultarray[i][1] ) -- удалить файл end end end
Решение на LuaPoSh. Сам код на ps в 5 раза короче и проще, чем на lua.
--lua require "LuaPoSh";PScode('void',{[[#} # $path = 'D:\3' function Check-PicSize($p){#} $img = [Drawing.Image]::FromFile( $p.fullname ) if($img.width -gt 100 -and $img.Height -gt 100) {$img.Dispose(); $true}else{$img.Dispose(); $false} } Get-ChildItem $path -file -rec|ForEach{#} if(!($_.Extension -eq '.jpg' -and (Check-PicSize $_))) {ri $_.FullName} } # ]]})
Также на PoSh можно создавать задачи в планировщике, редактировать word/excel документы, читать excel по строкам, столбцам, книгам, менять значения в реестре, можно использовать классы и методы .Net, писать в нем на c#...в общем всего не перечислить, а большинство повседневных задач решаются в паре строчек кода.Сообщение отредактировал Deadly - 27.12.2023, 8:38
Прикрепленные файлы
LuaPosh.rar ( 14,29 килобайт )
Кол-во скачиваний: 565
--------------------
Для связи
|
|
|
|
|
|
Ответов
Levo222 |
17.6.2020, 16:48
|
Journeyman
Сообщений: 399
Регистрация: 18.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.689
|
Цитата(Fors1k @ 23.3.2020, 22:20) Распаковать рядом с exe пилота. v. 4.1 Прикрепленный файл luaposh_v4.1.rar ( 5,08 килобайт ) Кол-во скачиваний: 51
Архив битый --Upd--Вот это поворот) Все версии архивов битые Цитата Совет: Распаковать рядом с exe пилота.
v. 4 Прикрепленный файл luaposh_v4.rar ( 5,01 килобайт ) Кол-во скачиваний: 34 Совет: Распаковать рядом с exe пилота.
v. 3 Прикрепленный файл luaposh_v3.rar ( 3,31 килобайт ) Кол-во скачиваний: 28 Совет: Распаковать рядом с exe пилота.
v. 2 Прикрепленный файл luaposh_v2.rar ( 1,88 килобайт ) Кол-во скачиваний: 41 Совет: Распаковать рядом с exe пилота.
v. 1 Прикрепленный файл luaposh.rar ( 1010 байт ) Кол-во скачиваний: 34
Как закончилось моё знакомство с LuaPoshk)))
|
|
|
|
Сообщений в этой теме
Fors1k LuaPosh 23.3.2020, 18:20 Fors1k Синтаксис:
PScode('return/void',{... 23.3.2020, 18:41 FREEON Прыыыкона.
Ток пытался погуглить чо за Lua Posh сп... 24.3.2020, 20:46 Fors1k Прыыыкона.
пытался погуглить чо за Lua PoshНаписал... 24.3.2020, 21:36 Levo222 Как он может решить задачу findcolor/findimage? 27.3.2020, 14:10 Fors1k
Как он может решить задачу findcolor/findimage?
... 27.3.2020, 15:43 cirus
Никак. Таких функции у винды нет. 27.3.2020, 14:13 Fors1k [font=Arial Black]LuaPosh V2
[*]Добавил prompt. Вр... 30.3.2020, 18:48 Fors1k [font=Arial Black]LuaPosh V3
[*]
[quote name='Levo... 13.4.2020, 1:21 Fors1k Дополнение к V3
Отображение текста(и не только) в ... 14.4.2020, 1:16 Levo222 Ладно. С многопоточкой твой LuaPosh точно не справ... 14.4.2020, 11:49 cirus
Она и не нужна, таймеры пригодились бы... 14.4.2020, 11:59 Fors1k
таймеры пригодились бы...
Да я думаю можно будет... 14.4.2020, 15:52 Fors1k Дополнение к V3
И еще одна новинка. Вывод части из... 14.4.2020, 16:42 Fors1k [font=Arial Black]LuaPosh V4Добавил таймеры. Тайме... 17.4.2020, 18:47 Fors1k Демонстрация вывода данных в лог
https://fors1k.ru... 18.4.2020, 14:07 Fire73 Доброго времени суток!
Подскажите, как с его ... 21.4.2020, 18:21 Fors1k Подскажите, как с его помощью получить из файла вс... 21.4.2020, 18:43 Fire73
--lua
log"clear";log"mode compact... 21.4.2020, 19:28 Fors1k Небольшие изменения и исправления.
Архив с обно... 23.4.2020, 20:54 Fire73 Дано:
89997001234:Forsik007:Алла Пугачева:uopilot... 6.6.2020, 18:09 Fors1k Благодаря команде split, мы можем обойтись без пос... 6.6.2020, 18:36 Levo222
Тогда в чем здесь вина моего архива?
Когда он не... 17.6.2020, 19:17 Fors1k Может именно rar не хочет открывать у вас.
17.6.2020, 20:49 Fors1k [font=Arial Black]LuaPosh V5
[*] Добавил команду о... 9.7.2020, 19:15 Fors1k Prompt с возможностью выбора вариантов.
[note][b]... 15.7.2020, 15:13 DarkMaster Скорость работы этой либы отличается от скорости з... 20.9.2020, 8:51 cirus Долго первый запуск, потом нормально. 20.9.2020, 11:40 Fors1k У меня старт занимает 1.73 сек. Поработаю еще над ... 21.9.2020, 18:47 Fors1k [font=Arial Black]LuaPosh V6
[color=#000000][b]Диа... 28.9.2020, 1:33 Fors1k [font=Arial Black]LuaPosh V7
[color=#000000][b]Экр... 9.10.2020, 17:52 Fors1k [b]Добавлены параметры для экранной лупы.
[b]-fr... 14.10.2020, 15:40 Fors1k Поколдовал над запуском.
[color=#006400]--lua
log ... 18.10.2020, 20:38 Fors1k Лично у меня пош стартует около 15 секунд.Всё, нак... 22.12.2020, 0:33 Fors1k [font=Arial Black]LuaPosh V8
[color=#000000][b]Sel... 25.12.2020, 15:17 Fors1k [b]Тернарный оператор.Синтаксис сделал обычный: [b... 2.2.2021, 18:46 Madeus Как работает хайд и есть ли возможность хайдить др... 7.4.2021, 16:55 Fors1k Madeus, Hide-UoPilot прячет процесс пилота от защи... 7.4.2021, 17:39 Fors1k Набросал вот по-быстрому, попробуй.
[color=#006400... 7.4.2021, 18:25 Madeus
Набросал вот по-быстрому, попробуй.
Что-то не ро... 7.4.2021, 18:39 Fors1k Скачал notepad++, у меня получилось.
А, ну этой к... 7.4.2021, 18:49 Madeus
А, ну этой команде нужно передавать два параметра... 7.4.2021, 19:00 Fors1k
Все так же
Создаётся процесс с именем notepad++.... 7.4.2021, 19:19 Madeus
Создаётся процесс с именем notepad++.exe?
У меня ... 7.4.2021, 19:46 Madeus В общем нужна помощь) Вчера скачал - распаковал - ... 7.4.2021, 22:04 Fors1k Переустанови luaposh. Удали luaposh.lua и папку po... 8.4.2021, 1:31 Madeus
Переустанови luaposh. Удали [b]luaposh.lua и папк... 8.4.2021, 3:28 Fors1k переименование в настройкахЭто?
Оно просто меняет... 8.4.2021, 11:41 Madeus
Это?
Оно просто меняет имя окна, процесс так и о... 8.4.2021, 13:45 cirus
Посмотри журнал антивирусника/защитника windows, ... 8.4.2021, 3:07 Fors1k Notepad не получится так запустить, так как его вл... 8.4.2021, 18:06 dron4938 не нашел кнопки скачать) 25.11.2021, 0:43 yodich Библиотека LuaPosh 18.12.2023, 23:12 Deadly Библиотека LuaPosh
Прикрепили файл в начало темы. 27.12.2023, 9:29 фонарик Вроде работало как-то давно у меня данная штуковин... 1.6.2024, 5:16 DarkMaster Уважаемый фонарик... Как же вы уметете невзначай п... 2.6.2024, 21:56 фонарик подгружать через require
вызов:
[code]local hint =... 4.6.2024, 2:46 DarkMaster --lua
local ffi = require 'ffi'
local C = ... 3.6.2024, 11:14 DarkMaster
не дались оно мне сразу. часа 3 просидел перед ре... 4.6.2024, 6:00 фонарик А можно как-нибудь посчитать в пикселях, сколько б... 6.6.2024, 23:06 DarkMaster можно. для этого есть спец функция в апи. тебе оно... 7.6.2024, 18:03
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|