1 (изменено: AndrasD, 2019-02-27 20:11:02)

Тема: AHK: Работа скрипта на медленном компьютере.

Приветствую.
Есть скрипт, управляющий стандартной для Windows программой "Ножницы". Да, я знаю, что есть возможность делать скриншоты иначе, с подключением GDI и использования внешней dll, но это для меня сложновато пока. А использовать некий код, в котором происходит что-то мне совсем непонятное не хочется. Хочется понимать происходящее.
Но это отступление. Суть в другом. Вот этот кусок кода:

	MouseClickDrag, left, %PositionStartX%, %PositionStartY%, %PositionEndX%, %PositionEndY%
	Sleep, 100
	Send ^s 
	WinWaitActive, Сохранить как
	Sleep, 100
	Send %FolderPlace%\%PrefixName% %FileCount%.png
	Sleep, 100	
	Send {Enter}
	WinActivate, ahk_class Microsoft-Windows-Tablet-SnipperEditor	
	WinWaitActive, ahk_class Microsoft-Windows-Tablet-SnipperEditor
	WinClose, ahk_class Microsoft-Windows-Tablet-SnipperEditor

на моем машине ведет себя как надо. На чужом компьютере, только если ставить Sleep. Как только я Sleep убираю, начинаются проблемы. Не всегда, иногда работает. А иногда нет. На одном из этих этапов. То есть, окно не успевает обрабатывать поступающие команды, а скрипт идет дальше. То не вводится имя файла, а Enter уже пошел. То ещё чего. И WinWaitActive здесь не помогают. При добавлении Sleep, все успевает обрабатываться, но возможно, есть какой-то более корректный метод.
Хотелось бы услышать мнение. Наверняка кто-то с таким уже сталкивался.

2

Re: AHK: Работа скрипта на медленном компьютере.

AHK: Сохранить маленький произвольный кусок экрана

3

Re: AHK: Работа скрипта на медленном компьютере.

Да, я знаю. Я про это упомянул. Но все, что связано с DllCall для меня сложно. Вслепую пользоваться чужим не хочу. Пусть лучше будет кособокое, но свое .

4

Re: AHK: Работа скрипта на медленном компьютере.

Тогда создайте окно GUI с прозрачным фоном с возможностью растягивать. Получится рамка. Наводите её на нужное место и жмёте Alt+Enter, получаете в буфер обмена кусочек экрана. Просто и ясно.

5 (изменено: AndrasD, 2019-02-28 02:17:50)

Re: AHK: Работа скрипта на медленном компьютере.

Я когда-то такое пробовал. С тем, чтобы загрузить что-то в буфер обмена проблем нет. Вот только сохранить это в файл просто так не получится. Либо, опять же, внешняя Dll, либо стороннее приложение. Paint, по ряду причин, не подходит, он неудобен, а больше из стандартных программ нечем.

6

Re: AHK: Работа скрипта на медленном компьютере.

Сложным кажется всё, что лежит за рамками опыта. Даже общение в письменном виде в формате этого форума, некоторым не осилить. Рамки привычного упираются в череп изнутри подсказывая, что, мол: "и так сайдёт  .ашипки   неделают сказаноен ипанятным и это ния тупой а вокрук адни ЧСВшники". Однако же Вы запросто демонстрируете культурное общение. Это говорит в пользу Ваших способностей собирать волю в кулак и преодолевать трудность.

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

Решать за Вас, Ваши задачи, в этой ветке обсуждений, никто не будет. Если так просто сдаётесь, но позарез нужно, есть коммерческий раздел. Стучитесь, соблазняйте условиями. Но, на мой взгляд — "Не то пальто", можно и самому вечерами справку поштудировать и всё непонятное тут пообсуждать.

Если вопросы понятны и содержательны и в них заметно Ваше стремленье узнавать, скорее всего Вы получите ответ. Пользуйтесь так же поиском. Очень многие Ваши вопросы ещё не были заданы, но уже получали свои ответы.

7

Re: AHK: Работа скрипта на медленном компьютере.

Понятно, что все можно освоить. Но не все сразу. И здесь я задал как раз конкретный вопрос, связанный с разной скоростью работы скрипта и другого приложения. Я решил эту проблему через Sleep и хотел узнать есть ли какой-то другой способ борьбы именно с этой проблемой.
Наверное, я просто зря упомянул что это был за скрипт, в связи с чем обсуждение ушло в другую сторону. Ну и понятно, что отвечать никто ни на что не обязан. Но я подумал, что может кто-то с подобным сталкивался и сделал не Sleep, а что-то другое.

8 (изменено: ypppu, 2019-02-28 19:13:48)

Re: AHK: Работа скрипта на медленном компьютере.

Если продолжительность Sleep не хватает, значит Вы упёрлись в быстродействие компьютера. Компьютер ещё не отреагировал, а скрипт уже подкидывает ему следующую задачу. Это повод отказаться от команд WinActive и MouseClickDrag. Потому нужно не переделывать имеющийся скрипт, а полностью переработать алгоритм.

9

Re: AHK: Работа скрипта на медленном компьютере.

Вроде со Sleep работает. Но жалко, что не всегда есть возможность удостовериться, что компьютер отреагировал на поданную команду.

10

Re: AHK: Работа скрипта на медленном компьютере.

Можно добавить SetWinDelay, чтобы не ставить Sleep после каждой оконной команды.
Если без разницы какой программой делать скриншот, есть утилита командной строки NirCmd.

Run, nircmd.exe savescreenshot "%A_Desktop%\fileName.png" ; или 9 60 293 656  выделенной области 

11

Re: AHK: Работа скрипта на медленном компьютере.

SetWinDelay здесь, как я понимаю, не годится, поскольку проблемы возможны даже в промежутке между командами send, которые к оконным командам не относятся.
А вот насчет NirCmd, то утилита выглядит очень интересно. Спасибо за наводку.

12

Re: AHK: Работа скрипта на медленном компьютере.

AndrasD пишет:

Но я подумал, что может кто-то с подобным сталкивался и сделал не Sleep, а что-то другое.

AndrasD пишет:

Вслепую пользоваться чужим не хочу.

AndrasD пишет:

утилита выглядит очень интересно

http://forum.script-coding.com/viewtopi … 90#p121790

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


https://i.ytimg.com/vi/60BeLbWJ4AE/maxresdefault.jpg

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

13

Re: AHK: Работа скрипта на медленном компьютере.

serzh82saratov, думаю тем, что команда Run выглядит куда понятнее команды DllCall .

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

14

Re: AHK: Работа скрипта на медленном компьютере.

Здесь разграничение Autohotkey/ неAutohotkey. В первом случае, это язык, с которым я сейчас разбираюсь и в том, что связано с Dll, разобраться возможность тоже есть. Позже. То есть, если я что-то пишу  именно в виде кода, я хочу понимать, что я пишу. Даже если это вставлен чужой кусок. Хотя прямой копипастой я не пользуюсь. А в случае с NirCmd, Ножницами, интерпретатором AHK, и т.д., то это за гранью моих планов по изучению того, какой там внутри код. Принимаю as is.
То есть, это самоограничение, разумеется, искусственное и оно не связано с недоверием к чужой работе, а носит совсем иной характер.

15

Re: AHK: Работа скрипта на медленном компьютере.

То есть если скомпилировать те сто строчек по ссылке, с возможностью передачи параметров запуска, и сказать что это не на Autohotkey написано, то это предпочтительнее для вашей парадигмы самоограничения иного характера?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

16

Re: AHK: Работа скрипта на медленном компьютере.

Что-то я не пойму, вы это к чему? Брось писать свою неведомую фигню, все уже написано до тебя. Верно?
Я делаю так, как считаю нужным.

17

Re: AHK: Работа скрипта на медленном компьютере.

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

Но как так выходит что "непонятно_что.ехе" вызывает у вас большее предпочтение, чем открытый код в одну страницу с 20 DllCall про вызов каждой из которых написано на msdn, и читать и вникать в это не требуется. По сути вам просто предлагают готовую функцию в точности под ваши нужды.

AndrasD пишет:

Наверное, я просто зря упомянул что это был за скрипт, в связи с чем обсуждение ушло в другую сторону

Если абстрагироваться от примера со скриншотом в топике, то после ввода строки через Send надо проверять что она введена правильно.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

18

Re: AHK: Работа скрипта на медленном компьютере.

На всем, что написано на Autohotkey автоматически ставится флаг "Изучить для дальнейшего использования". На exe такого флага нет. Просто, чтобы не отвлекаться на то, что отложено на потом.

19

Re: AHK: Работа скрипта на медленном компьютере.

AndrasD, неразумно не пользоваться готовыми функциями только из-за того, что вы их не понимаете и возможно никогда не поймете.

20

Re: AHK: Работа скрипта на медленном компьютере.

Выбирая между одинаково-непонятно решающими одну задачу подходами, Вы противоречите себе останавливаясь своим выбором именно на том из них, который не раскрывает того, что происходит "за кулисами", пока Ваша задача решается, AndrasD, утверждая при этом:

AndrasD пишет:

На всем, что написано на Autohotkey автоматически ставится флаг "Изучить для дальнейшего использования". На exe такого флага нет. Просто ...

Просто, Вам именно об этом говорят, попутно рассуждая о плюсах отвергаемого Вами подхода.

21

Re: AHK: Работа скрипта на медленном компьютере.

Я разделяю код на Autohotkey, который я хочу понимать, и все остальное, где я являюсь не более, чем пользователем. Да, это выглядит нерационально. Тем не менее.

22

Re: AHK: Работа скрипта на медленном компьютере.

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

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

23

Re: AHK: Работа скрипта на медленном компьютере.

А вот с этим согласен:). Много неконструктивных разговоров.

24

Re: AHK: Работа скрипта на медленном компьютере.

AndrasD пишет:

Я разделяю код на Autohotkey, который я хочу понимать, и все остальное, где я являюсь не более, чем пользователем

Берете функцию на автохотки, которую не можете использовать из-за принятых вами ограничений, компилируете ее, после чего можете смело запускать полученный экзешник, как "не более, чем пользователь".

25

Re: AHK: Работа скрипта на медленном компьютере.

Повтор, автор уже дал исчерпывающие пояснения.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

26

Re: AHK: Работа скрипта на медленном компьютере.

Исчерпывающих пояснений не нашел.

AndrasD пишет:

На всем, что написано на Autohotkey автоматически ставится флаг "Изучить для дальнейшего использования". На exe такого флага нет

27

Re: AHK: Работа скрипта на медленном компьютере.

Плохо искал:

AndrasD пишет:

Я делаю так, как считаю нужным.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

28

Re: AHK: Работа скрипта на медленном компьютере.

Мне кажется, что он просто не понял идеи твоего предложения.
Подождем, что скажет автор.

29

Re: AHK: Работа скрипта на медленном компьютере.

Берете функцию на автохотки, которую не можете использовать из-за принятых вами ограничений, компилируете ее, после чего можете смело запускать полученный экзешник, как "не более, чем пользователь".

А зачем? Не, ребята, ваше мнение я услышал и прекрасно понял. Этот функционал я планирую использовать. Но не вот прямо сейчас.
Тем более, что вот такие утверждения

...20 DllCall про вызов каждой из которых написано на msdn, и читать и вникать в это не требуется

мне не кажутся такими уж бесспорными.
Вот здесь: https://docs.microsoft.com/en-us/windows/desktop/gdiplus/-gdiplus-gdi-start сказано про С++, и как это все стыкуется с AHK точно требует времени для понимания. Возможно, вам кажется, что я говорю глупость, но мне пока все это весьма непонятно. Ибо не вникал.
И ещё раз. О том, что это прекрасно можно использовать и без понимания, я тоже вас понял.

30

Re: AHK: Работа скрипта на медленном компьютере.

AndrasD пишет:

... ваше мнение я услышал и прекрасно понял.

Понял = это когда в решении закрепил позицию после практического изучения мнений. А раз речь об этом ни разу не заходила и повесть последнего утверждения подчёркнуто расходится с предложением, то Вы нас прекрасно, не "поняли", а прекрасно "почитали".

31

Re: AHK: Работа скрипта на медленном компьютере.

AndrasD, АХК и С++ стыкуются идеально, как и пара абсолютно любых разных языков в одной среде. Вопрос только в наборе инструментов и команд.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

32

Re: AHK: Работа скрипта на медленном компьютере.

KusochekDobra Я понял, что вы хотите мне сказать.
belyankin12 Даже не сомневаюсь. Я к тому, что эти инструменты и команды мне неизвестны. Там есть с чем разбираться.
Предлагаю прекратить дискуссию, которая давно потеряла какое-либо практическое содержание. Вряд ли, кто-то из будущих посетителей, кто зайдет в эту тему, найдет в обсуждении что-нибудь полезное.