Как бы такой скриптец написать, чтобы работало (псевдокод)

Sebasten

$DIR = ARGV[0];
for_each ($file in $DIR) {
file.open.with("mspaint");
sendto.mspaint.msg("crtl+S");
killProcess("mspaint");
}
print "Everything is done!";

artimon

А каков смысл этого скрипта?

evgen5555

Нафига тебе пэйнт? Для автоматизации удобнее всего использовать ImageMagick

Sebasten

Про смысл и нафига подробно описано , правда в офтопе

SPARTAK3959

CreateProcess, WM_CHAR/WM_KEYUP/WM_KEYDOWN, FindWindow, PostMessage, TerminateProcess,FindFileFirst/FindFileNext и Sleep (не забываем про задержки!) тебе в руки... Программа будет 200-1000 строчек.

katrin2201

batch процессинг у фотошопа есть, и есть еще у кучи программ
мне вот долгое время было лень в фотошопском процессинге разбираться, а потом разобрался, и мне понравилось
он правда немножко бубнотанцеплясовый, но все же..

Sebasten

Халявин, в натуре ты халявин, я тоже эти слова раньше слышал, надо работающий код и не больше 25 строчек, чтоб читать удобно было.
Фотошоп очень дорогой, не могу себе его пока никак поставить

ifani

Посмотри WSH - скрипт, практически, так и будет выглядеть...

Sebasten

Ну пришли пример, чайник ты долбаный А то куда мне смотреть, что смотреть?

0000

примерный вариант <filename>.vbs (WSН)

' Получаем текущую папку
objShell = WScript.CreateObject("WScript.Shell")
set objF = objFSO.GetFolder(objShell.CurrentDirectory)
' Поиск всех файлов, БЕЗ ВЛОЖЕННОСТИ!
Set objFileSearch = objF.Files
For Each objf1 in objFileSearch
objShell.Run("mspaint.exe " & objF1.name, 5)
sleep (500)
SendKeys (^S)
sleep (500)
SendKeys (^{F4})
Next

проверить не могу - виндоус староват - 98-ой

Sebasten

Зубастик, идею ты конечно уловил, но вот скриптец твоей слабоват с точки зрения синтаксиса. Вот новая версия, практически работает, но есть один баг, когда имя файла содержит пробелы или всякие там странные символы.

Set objShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objF = objFSO.GetFolder(objShell.CurrentDirectory)
' Нереккурсивный поиск всех файлов
Set objFileSearch = objF.Files
For Each objf1 in objFileSearch
if objF1.name <> "compress.vbs" Then 'Tut horoshoby opredelit' imja scripta
objShell.Run "mspaint.exe " & objF1.name, 5, false 'Un bug here
WScript.Sleep 1000
objShell.SendKeys "^s"
Wscript.Sleep 1000
objShell.SendKeys "%{F4}"
end if
Next

тогда пэинт вызывается что-то типа того "mspaint имя с пробелами.jpg" -> mspaint имя.bmp
Чувствую, что фикс в заключении этого имени в кавычки, не знаю только как это сделать.
Спасибо!

0000

> но вот скриптец твоей слабоват с точки зрения синтаксиса
Ну вообще пипец, сам попробуй попрогать когда на клаве не работают половина клавиш (клава у мя дохнет - кое-что из буффера вставлял) и нет возможности потестить (в 98-ой версия WSH более ранняя и не все функции поддерживаются). Так что тут дело НЕ В ТОМ, что идею уловил, а не знаю как реализовать
> не знаю только как это сделать.
Сhr (34) подставить кавычки
"mspaint" & Chr (34) & .. & Chr (34)
Да еще неплохобы после запуска mspaint делать его активным - но это сам умник делай

Sebasten

В натуре пашет, магическая пятёрка метода Run уже кажись всё для нас делает, конечно, можно было бы сделать лучше, чтоб сообщение всегда слалось окну пэинта, в независимости от того, активное оно или нет, а то пока скриптец ранается трогать ничего нельзя - всё позакрывается Ну это уже в следующей версии, эту уже тоже можно продавать

davidko

а то пока скриптец ранается трогать ничего нельзя - всё позакрывается
если я ещё правильно всё помню, чуваков из openwave такое вполне устраивало =)

Sebasten

Не уверен, мы вроде писали на ихнем встроенном ДжаваСкрипте, из него пэинт так просто не запустишь.

davidko

Мне BTE вечно страницу с форумом закрыть пытался

Sebasten

А вроде чёто и было, в натуре не помню уже
Оставить комментарий
Имя или ник:
Комментарий: