1

Тема: AHK: Сравнение 10-ти значных чисел

Есть интернет страница на которой нужно сравнить два 10-ти значных числа, если они равны то нажать одну клавишу, если нет то другую, и так сравнивать по циклу, возможно ли это реализовать, и как или хотя бы с помощью каких команд?

2

Re: AHK: Сравнение 10-ти значных чисел

Только с помощью апи. Можно скачать страницу, найти и сравнить нужные числа, но нажать кнопку на этой странице не получится.

3

Re: AHK: Сравнение 10-ти значных чисел

Александр_ пишет:

но нажать кнопку на этой странице не получится.

Таки можно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:
Александр_ пишет:

но нажать кнопку на этой странице не получится.

Таки можно.

Вырвано из контекста:

Александр_ пишет:

Только с помощью апи. Можно скачать страницу, найти и сравнить нужные числа, но нажать кнопку на этой странице не получится.

5

Re: AHK: Сравнение 10-ти значных чисел

Не усёк противоречия. Сравниваем с помощью апи, нажимаем, используя COM.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

Не усёк противоречия. Сравниваем с помощью апи, нажимаем, используя COM.

COM- это один из способов оформления API.

7

Re: AHK: Сравнение 10-ти значных чисел

Я так понял, что ты имел в виду, что нельзя "стандартными" командами AHK? Так они тоже лишь способ оформления api, в т. ч. и DllCall().

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

Я так понял, что ты имел в виду, что нельзя "стандартными" командами AHK? Так они тоже лишь способ оформления api, в т. ч. и DllCall().

апи- это внешние процедуры функции и т.п. Например функция FileRead- не является API- функцией, поскольку ей можно пользоваться только в скриптах на AHK. А ReadFile(A|W) из Kernel32.dll является, т.к. её можно использовать в других проектах. Так же, например, Direct Graphics является API.

9

Re: AHK: Сравнение 10-ти значных чисел

Так ведь и DllCall() можно пользоваться только в скриптах AHK.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

Так ведь и DllCall() можно пользоваться только в скриптах AHK.

Это и не API функция. Но с её помощью можно вызывать API.

11

Re: AHK: Сравнение 10-ти значных чисел

C помощью остальных команд точно так же вызываются функции API, они, как и в случае COM, лишь оболочка. Сравни, например MessageBox() и MsgBox.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

12

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

C помощью остальных команд точно так же вызываются функции API, они, как и в случае COM, лишь оболочка. Сравни, например MessageBox() и MsgBox.

Ну конечно вызывают, это же Windows! Только цель у неё не вызвать API-функцию MessageBox(A|W), а отобразить диалоговое окно. Например в C++ функция fopen не является API, хотя она и вызывает какую-то API функцию типа CreateFile. А в UNIX-подобных ОС функции CreateFile нет, но fopen всё равно будет работать, т.к. это по сути часть языка. Тоже самое и с MsgBox- она должна работать даже если в Windows 9 уберут функцию MessageBox(конечно если AHK доживёт до этого).

13

Re: AHK: Сравнение 10-ти значных чисел

Так ведь и COM должна точно так же работать, не взирая на изменения в функциях, оболочкой которых она является.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

Так ведь и COM должна точно так же работать, не взирая на изменения в функциях, оболочкой которых она является.

Нет же!
API- это интерфейс программирования приложений.
COM- это один из способов оформления API(не точно, но отражает суть).
Например Direct Graphics - это API, состоящий в основном из COM- объектов. А OpenGL, представляющий аналогичный функционал,- это тоже API, но представленный в виде отдельных функций. Конкретнее о COM тут.

15

Re: AHK: Сравнение 10-ти значных чисел

Александр_ пишет:

API- это интерфейс программирования приложений.
COM- это один из способов оформления API(не точно, но отражает суть).

По сути, COM — это просто удобный интерфейс для функций API. Но и на обычные команды AHK можно смотреть с той же точки зрения. В этом смысле не вижу между ними принципиальной разницы. Вспомни свой первый ответ:

Александр_ пишет:

Только с помощью апи.

Это условие сработает в любом случае: и при использовании COM, и "обычных" команд, и DllCall().

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

Это условие сработает в любом случае: и при использовании COM, и "обычных" команд, и DllCall().

Для использования COM придётся использовать DllCall- методы объектов вызываются как и обычные функции, только нужно передавать ещё и указатель на объект. А "обычные" команды нельзя рассматривать как API, поскольку они служат только для "внутреннего пользования". Например я не могу вызывать эти функции в своих проектах на C++ или паскале. Определение из википедии:

wikipedia.org пишет:

Интерфейс программирования приложений (иногда интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай]) — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах.

17

Re: AHK: Сравнение 10-ти значных чисел

Александр_ пишет:

Для использования COM придётся использовать DllCall

Вовсе не обязательно, AHK_L поддерживает COM.

Александр_ пишет:

А "обычные" команды нельзя рассматривать как API, поскольку они служат только для "внутреннего пользования".

Не как API, а как оболочку для API. Просто COM — это оболочка, которую можно использовать в разных языках, а команды AHK — да, оболочка, которую можно использовать только в AHK, но от этого они не перестают быть оболочкой API в рамках данного языка.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

Вовсе не обязательно, AHK_L поддерживает COM.

Не знал.

teadrinker пишет:

Не как API, а как оболочку для API. Просто COM — это оболочка, которую можно использовать в разных языках, а команды AHK — да, оболочка, которую можно использовать только в AHK, но от этого они не перестают быть оболочкой API в рамках данного языка.

Ну тогда эти API будут оболочками для других, более низкоуровневых API. Не понимаю к чему ты клонишь.
И вообще странное сравнение технологического стандарта(COM) с подпрограммами в AHK .

19

Re: AHK: Сравнение 10-ти значных чисел

Александр_ пишет:

Не понимаю к чему ты клонишь.

Только к тому, что и при использовании COM из AHK, и при использовании обычных команд происходит обращение к API посредством определённого интерфейса, в этом сходство этих действий.

Александр_ пишет:
teadrinker пишет:

Вовсе не обязательно, AHK_L поддерживает COM.

Не знал.

Ну, тогда спор, видимо, исчерпан!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

20

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

Только к тому, что и при использовании COM из AHK, и при использовании обычных команд происходит обращение к API посредством определённого интерфейса, в этом сходство этих действий.

Это очевидно. Суть в том, что вызывая "стандартные функции" мы не обращаемся к API, а вызывая методы COM-объектов- обращаемся.

21

Re: AHK: Сравнение 10-ти значных чисел

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

22

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

Повторюсь, на команды AHK также можно смотреть, как на интерфейс к API, ведь никакого другого способа их выполнения не существует.

И что? API-функциями они от этого не становятся. По твоей логике API-функции- это функции, не содержащие вложенных функций, а это не верно, тем более что API не обязательно ограничивается функциями.

teadrinker пишет:

Последнего тезиса не понял.

"стандартные функции"- это не API-функции. Методы COM-объектов- это API-функции.

23

Re: AHK: Сравнение 10-ти значных чисел

Александр_ пишет:

Методы COM-объектов- это API-функции.

Но чтобы вызвать метод COM-объекта, к примеру, из AHK-скрипта, нужен определённый интерфейс, который сам по себе API-функцией не является, как и "стандартная функция".

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

24

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

Но чтобы вызвать метод COM-объекта, к примеру, из AHK-скрипта, нужен определённый интерфейс, который сам по себе API-функцией не является, как и "стандартная функция".

Как и для любых API-функций.

25

Re: AHK: Сравнение 10-ти значных чисел

Вот смотри, мы пишем в исходном коде, к примеру, MsgBox, и интерпретатор вызывает соответствующую WinAPI-функцию. Или мы, используя требуемый синтаксис, пишем

oShell := ComObjCreate("Shell.Application")

и интерпретатор также обращается к соответствующей API. В чём ты видишь разницу?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

26

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

Вот смотри, мы пишем в исходном коде, к примеру, MsgBox, и интерпретатор вызывает соответствующую WinAPI-функцию. Или мы, используя требуемый синтаксис, пишем

oShell := ComObjCreate("Shell.Application")

и интерпретатор также обращается к соответствующей API. В чём ты видишь разницу?

Во втором случае мы явно используем сторонний объект(Shell), который не является частью языка.

27

Re: AHK: Сравнение 10-ти значных чисел

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

28

Re: AHK: Сравнение 10-ти значных чисел

teadrinker пишет:

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

Ещё как меняет. Вызывая стандартную msgbox я не говорю интерпретатору вызвать MessageBox, я могу даже не знать о её существовании. Да и интерпретатор не обязан её вызывать, он может сразу вызвать MessageBoxEx, MessageBoxTimeout, или SoftModalMessageBox- это никого волновать не должно.

29

Re: AHK: Сравнение 10-ти значных чисел

В контексте нашего спора не так уж важно, знаем ли мы, какая конкретно API-функция вызывается. Главное, что это происходит и в случае использования стандартных команд, и в случае обращения к COM, и в обоих случаях не напрямую, а опосредованно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

30 (изменено: lprooo, 2011-12-27 10:33:55)

Re: AHK: Сравнение 10-ти значных чисел

Все таки я вот придумал такой вот колхозный способ решения только он не работает:(здесь я написал только пример так сказать главный код(данный скрипт должен копировать содержимое веб страницы, вставлять в  текстовый документ и затем сравнивать две строки, если они не равны то должен прозвучать звук динамика)) В чем у меня ошибка подскажите ?

numpad9::
clipboard=
Send, ^a
Send, ^c
clipwait
fileappend, %clipboardall%, c:\txt.txt
sleep, 1000
filereadline, var1, c:\txt.txt, line1
filereadline, var2, c:\txt.txt, line2
if (var1<>var2) soundbeep