<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK v2:  Превосходство AHK]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=18524</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18524&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK v2:  Превосходство AHK».]]></description>
		<lastBuildDate>Fri, 19 Dec 2025 13:06:17 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162979#p162979</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>AHK v2: Превосходство AHK</p></blockquote></div><p>Превосходство тёплого над мягким <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Smitis)]]></author>
			<pubDate>Fri, 19 Dec 2025 13:06:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162979#p162979</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162953#p162953</link>
			<description><![CDATA[<p>Однако и это неправильно. Надо<br /></p><div class="codebox"><pre><code>@echo off
rem Обновление архива текущего года документами прошлого и текущего месяцев
rem предполагается, что архивация ежемесячная
chcp 1251 &gt; nul
SETLOCAL ENABLEEXTENSIONS
set year=%DATE:~-4%
IF %year% LSS 2025 (
    echo На компьютере неправильная дата
    pause
    exit /B
)
if %DATE:~3,1%==0 (set month=%DATE:~4,1%) else set month=%DATE:~3,2%
if %month%==1 (
    set month=12
    set /A ta=year-1
) else (
    set /A month=month-1
    if %month% LEQ 9 set month=0%month%
    set ta=%year%
)
Set rar=&quot;C:\Program Files\WinRAR\Rar.exe&quot;  u -ed -r -rr -ta%ta%%month% E:\BackUp\Doc

echo 1.Архивация Desktop
%rar%\Desktop%year% D:\Desktop
if errorlevel 1 (
    pause
    if NOT %errorlevel%==10 if NOT %errorlevel%==1 exit /B
)

echo 2.Архивация Documents
%rar%\Documents%year% D:\Documents
if errorlevel 1 pause
exit /B
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (haridev)]]></author>
			<pubDate>Sun, 07 Dec 2025 10:06:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162953#p162953</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162952#p162952</link>
			<description><![CDATA[<p>Возращаясь к сложности. В коде для cmd обнаружилась ошибка. После строки 12 нужно&nbsp; вставить строку <br /></p><div class="codebox"><pre><code>if %month:~0,1%==0 set month=%month:~1,1%</code></pre></div><p>То есть должно быть <br /></p><div class="codebox"><pre><code>:ARCH
set month=%DATE:~3,2%
if %month:~0,1%==0 set month=%month:~1,1%
set /A month=%month%-1 </code></pre></div><p>Ошибка проявляется на месяце &lt;= 9 <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (haridev)]]></author>
			<pubDate>Sat, 06 Dec 2025 17:13:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162952#p162952</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162942#p162942</link>
			<description><![CDATA[<p>Думаю, если от нейросети попросить код для архивации на оптимальном языке, то будет AHK <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Речь же об этом. К тому же за правильность кода ИИ не отвечает, его надо проверять, а простой и короткий код легче проверить <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (haridev)]]></author>
			<pubDate>Fri, 05 Dec 2025 18:29:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162942#p162942</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162941#p162941</link>
			<description><![CDATA[<p><strong>haridev</strong><br />Возмутило ЭТО--&gt;<br /></p><div class="quotebox"><cite>haridev пишет:</cite><blockquote><p>Код проще и короче</p></blockquote></div><p>Проще, если знать все тонкости каких либо скобок, двоеточий и плюсиков, двойных, тройных и т.д. языка на котором юзер пишет. Но если говорить о вообще человеческой простоте, то я вижу простоту лишь в одном.<br />&quot;сижу на диване, смотрю новости и говорю. <br />- Нейросеть, а ну как давай, залезь в интернет и найди мне все новости про этого самого, банка, который сейчас показывают по телеку!&quot;<br />И нейросеть напишет на любом языке код прогу которая выполнить это задание и покажет юзеру результат поиска. И юзеру пофигу на каком языке нейросеть будет делать запрос поиска.<br />Другие же юзеры в этом диалоге с нейросетью, будут видеть своей задачи &quot;улучшать&quot; запрос к нейросети. Типа &quot;убрать лишнее слово&nbsp; - а ну как давай, залезь в интернет &quot;. Другие же добавят, и &quot;убрать слова - все новости..-&quot; .<br />Вот ЭТО я понимаю простоту программирования. А не то что юзеру нужно знать язык &quot;С++&quot; что бы написать этот запрос. Или любой другой язык программирования, который требует знания закодированных символов, которые были придуманы неким основателем этого программного языка. <br />Самый простой, это человеческий язык. И то его надо очень хорошо знать что бы правильно сформулировать запрос, другому человеку, которому этот запрос адресован. Я знаю из &quot;нейронауки&quot;, что чел в возрасте уже начинает перегонять своими мыслями, сигналы для голосовых связок. И поэтому очень часто его речь становиться непонятной, из-за &quot;проглатывания&quot; слов.&nbsp; &nbsp; <br />Самый простой язык програмирования, это язык который адресован нейросети, для решения определённых задач. И пусть это &quot;предложение&quot; (язык), будет в 10 раз длиннее, того же С++ по количеству символов. Но я точно знаю, что для того что бы добиться результата, самый простой способ это человеческий язык.</p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Fri, 05 Dec 2025 18:06:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162941#p162941</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162939#p162939</link>
			<description><![CDATA[<p>Код проще и короче <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (haridev)]]></author>
			<pubDate>Fri, 05 Dec 2025 06:52:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162939#p162939</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162938#p162938</link>
			<description><![CDATA[<p>А что именно вы тут сравниваете? В обоих случаях архивация не делается силами скрипта, вызывается стороннее приложение.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 04 Dec 2025 23:02:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162938#p162938</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162933#p162933</link>
			<description><![CDATA[<p>Возьмём типовую задачу для cmd, архивацию.<br /></p><div class="codebox"><pre><code>@echo off
rem Обновление архива текущего года документами прошлого и текущего месяцев
rem предполагается ежемесячная архивация
chcp 1251
SETLOCAL ENABLEEXTENSIONS
set year=%DATE:~-4%
IF %year% GEQ 2025 goto ARCH
echo На компьютере неправильная дата
pause
exit /B
:ARCH
set month=%DATE:~3,2%
set /A month=%month%-1
if month EQU 0 (
set month=12
set /A ta=%year%-1
) else set ta=%year%
if %month% LEQ 9 set month=0%month%
Set rar=&quot;C:\Program Files\WinRAR\Rar.exe&quot;  u -ed -r -rr -ta%ta%%month% E:\BackUp\Doc
echo 1.Архивация Desktop
%rar%\Desktop%year% D:\Desktop
if %errorlevel%==0 goto ARCH2
pause
if %errorlevel%==10 goto ARCH2
if %errorlevel%==1 goto ARCH2
exit /B
:ARCH2
echo 2.Архивация Documents
%rar%\Documents%year% D:\Documents
if NOT %errorlevel%==0 pause
exit /B
</code></pre></div><p>И AHK<br /></p><div class="codebox"><pre><code>year := substr(A_Now, 1, 4)
ta := substr(DateAdd(A_Now, -31, &#039;days&#039;), 1, 6)
rar := &#039;C:\Program Files\WinRAR\Rar.exe u -ed -r -rr -ta&#039; . ta . &#039; E:\BackUp\Doc&#039;
TrayTip &#039;Архивация Desktop&#039;,,&#039;Iconi&#039;
if ExitCode := RunWait(rar . &#039;\Desktop&#039; . year . &#039; D:\Desktop&#039;)
	MsgBox &#039;Ошибка &#039; ExitCode
if ExitCode &amp;&amp; ExitCode != 1 &amp;&amp;  ExitCode != 10
	ExitApp
TrayTip &#039;Архивация Documents&#039;,,&#039;Iconi&#039;
if ExitCode := RunWait(rar . &#039;\Documents&#039; . year . &#039; D:\Documents&#039;)
	MsgBox &#039;Ошибка &#039; ExitCode
ExitApp</code></pre></div><p>Комментарии излишни.</p>]]></description>
			<author><![CDATA[null@example.com (haridev)]]></author>
			<pubDate>Thu, 04 Dec 2025 16:54:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162933#p162933</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162929#p162929</link>
			<description><![CDATA[<p>О превосходстве над cmd. Вроде очевидно, но cmd тоже развивался. Есть полный разворот cmd https://ab57.ru/cmdlist.html, и там есть прямо сложные вещи. Но сложно и неудобно! И в cmd нет ничего, чего нет в AHK. Или я не увидел.</p>]]></description>
			<author><![CDATA[null@example.com (haridev)]]></author>
			<pubDate>Wed, 03 Dec 2025 16:24:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162929#p162929</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162901#p162901</link>
			<description><![CDATA[<p>Ну пайтон создавался, как язык программирования.<br />А у автохотки была изначально задача сделать так, чтоб любая домохозяйка без знаний функций и объектов могла заниматься автоматизацией.<br />И если бы Lexikos был бы заинтересован развивать автохотки в подобном ключе, то он бы не ahk v2 (версию для более продвинутых пользователей) писал бы, а добавлял новые фичи для автоматизации уже в существующий код.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 20 Nov 2025 06:24:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162901#p162901</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162899#p162899</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Потом Lexikos писал много лет autohotkey v2, таки дописал, убрал полностью обратную совместимость с ahk v1, но не добавил ничего нового в плане автоматизации.<br />Ни одного фреймворка.<br />То есть, столько лет потратить на создание второй версии, убрать полностью обратную совместимость с библиотеками, написанными за все эти 20 лет, и не добавить ничего нового в плане автоматизации.<br />Ну такое...</p></blockquote></div><p>Можно смотреть на v2 как на новое воплощение старой идеи. Если неудачное, то не приживётся, а если удачное, то можно и переписать старые библиотеки. ИИ, кстати, в помощь.<br />А вот v3 Python тоже несовместима с v2. Что об этом скажете?</p>]]></description>
			<author><![CDATA[null@example.com (haridev)]]></author>
			<pubDate>Wed, 19 Nov 2025 16:35:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162899#p162899</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162894#p162894</link>
			<description><![CDATA[<p>Попросил GigaChat перевести с AHK на Python. Не проверял, но выглядит правдоподобно<br /></p><div class="codebox"><pre><code>import os
import shutil
from pyautogui import hotkey, alert
import time

# Настройки путей и переменных
save_dir1 = r&#039;d:\Мои документы\\&#039;   # Обратите внимание на двойной слеш
save_dir2 = r&#039;d:\Portable\\&#039;
spider_sav = &#039;spider.sav&#039;
window_title_spider = &#039;Пасьянс &quot;Паук&quot;&#039;
window_title_confirm = &#039;#32770&#039;     # Класс окна диалогового окна подтверждения Windows

def main():
    if not window_exists(window_title_spider):
        print(&quot;Окно приложения Пасьянс \&quot;Паук\&quot; не найдено.&quot;)
        return

    args_length = len(os.sys.argv)-1
    
    try:
        if args_length &gt; 0:          # Восстанавливаем игру
            shutil.copy(save_dir2 + spider_sav, save_dir1 + spider_sav)
            activate_window_and_send_keys(window_title_spider, &#039;^o&#039;)
        else:                        # Сохраняем игру
            shutil.move(save_dir1 + spider_sav, save_dir2 + spider_sav)
            activate_window_and_send_keys(window_title_spider, &#039;^s&#039;)
        
        wait_for_confirmation()
    except Exception as e:
        alert(str(e))

def window_exists(title):
    &quot;&quot;&quot;Проверка существования окна&quot;&quot;&quot;
    from win32gui import FindWindowEx
    hwnd = FindWindowEx(None, None, None, title)
    return bool(hwnd)

def activate_window_and_send_keys(title, key_sequence):
    &quot;&quot;&quot;Активирует окно и отправляет последовательность клавиш&quot;&quot;&quot;
    from win32gui import SetForegroundWindow, GetForegroundWindow
    from win32con import SW_SHOWNOACTIVATE
    from win32api import SendMessageTimeout
    from win32gui import EnumWindows, IsWindowVisible, IsWindowEnabled
    
    def find_window_by_title(title):
        hwnd = None
        def callback(hwnd_, _):
            nonlocal hwnd
            if IsWindowVisible(hwnd_) and IsWindowEnabled(hwnd_) and title in win32gui.GetWindowText(hwnd_):
                hwnd = hwnd_
        EnumWindows(callback, None)
        return hwnd
    
    hwnd = find_window_by_title(title)
    if hwnd is None or not hwnd:
        raise RuntimeError(f&quot;Не удалось найти окно с заголовком &#039;{title}&#039;&quot;)
    
    # Активируем окно
    SetForegroundWindow(hwnd)
    # Отправляем горячую комбинацию клавиш
    hotkey(*key_sequence.split(&#039;+&#039;))

def wait_for_confirmation(timeout=3):
    &quot;&quot;&quot;Ожидает появления окна подтверждения и нажимает первую кнопку&quot;&quot;&quot;
    from win32gui import FindWindowEx
    from win32api import PostMessage
    from win32con import WM_LBUTTONDOWN, WM_LBUTTONUP, MK_LBUTTON
    
    for i in range(int(timeout*10)):
        confirm_hwnd = FindWindowEx(None, None, window_title_confirm, None)
        if confirm_hwnd:
            break
        time.sleep(0.1)
    else:
        alert(&#039;Нет окна подтверждения.&#039;)
        return
    
    button_hwnd = FindWindowEx(confirm_hwnd, None, &#039;Button&#039;, None)
    if button_hwnd:
        PostMessage(button_hwnd, WM_LBUTTONDOWN, MK_LBUTTON, 0)
        PostMessage(button_hwnd, WM_LBUTTONUP, MK_LBUTTON, 0)
    else:
        alert(&#039;Ошибка взаимодействия с окном подтверждения.&#039;)

if __name__ == &quot;__main__&quot;:
    main()

&#039;&#039;&#039;
Описание реализации:
Перемещение файлов:Используем стандартную библиотеку shutil для копирования (copy) и перемещения (move) файла сохранения.
Нажатие горячих клавиш: Для отправки комбинации клавиш используем библиотеку pyautogui. Она также позволяет активировать нужное окно перед отправкой команд клавиатуры.
Работа с окнами: Используется библиотека WinAPI через ctypes и стороннюю библиотеку win32gui для активации окон и проверки их наличия.
Обработка ошибок: Исключения обрабатываются через конструкцию try-except.
Требования к среде исполнения:
Для работы данного сценария потребуется установить необходимые зависимости:

pip install pyautogui pypiwin32

Таким образом, этот скрипт обеспечит аналогичную функциональность, как ваш исходный AutoHotKey-вариант, однако он требует больше зависимостей и проверок окружения, характерных для Python-программ.
&#039;&#039;&#039;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (haridev)]]></author>
			<pubDate>Tue, 18 Nov 2025 16:56:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162894#p162894</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162893#p162893</link>
			<description><![CDATA[<div class="quotebox"><cite>haridev пишет:</cite><blockquote><p>используя библиотеки. Их надо найти ещё нужные, в окольной документации</p></blockquote></div><p>ИИ подскажет, какие библиотеки использовать.<br /></p><div class="quotebox"><cite>haridev пишет:</cite><blockquote><p>Управление окном игры и взаимодействием с элементами окна напрямую практически невозможно реализовать без специальных расширенных методов автоматизации оконных элементов (таких как UI Automation Framework).</p></blockquote></div><p>Автохотки тоже нативно это не поддерживает.<br />В принципе автохотки бейсик был написан на основе окрытого кода автоита, после чего авторы автоита обиделись, переписали код и закрыли исходники. <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /><br />Потом Lexikos переписал код автохотки бейсик, назвал Ahk-L и помимо улучшений структуры кода и прочих новшеств, добавил много чего для автоматизации и более-менее сохранил обратную совместимость.<br />На что автор автохотки Chris Mallett отреагировал негативно, типа нафиг все это надо и умыл руки.<br />Потом Lexikos писал много лет autohotkey v2, таки дописал, убрал полностью обратную совместимость с ahk v1, но не добавил ничего нового в плане автоматизации.<br />Ни одного фреймворка.<br />То есть, столько лет потратить на создание второй версии, убрать полностью обратную совместимость с библиотеками, написанными за все эти 20 лет, и не добавить ничего нового в плане автоматизации.<br />Ну такое...</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 18 Nov 2025 07:33:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162893#p162893</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162892#p162892</link>
			<description><![CDATA[<p>Так это философия программирование на Питоне — использование библиотек.<br /></p><div class="quotebox"><cite>haridev пишет:</cite><blockquote><p>востребованного круга задач</p></blockquote></div><p>Ну да, это смотря, какие задачи востребованы. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Если отправка клавиш, тогда проще использовать AHK, а если обучение нейросетей, то Питон. Мне сдаётся, что последнее сейчас более востребовано.<br /></p><div class="quotebox"><cite>haridev пишет:</cite><blockquote><p>покажите решение годным инструментом, чтобы можно было сравнить</p></blockquote></div><p>Я даже не знаю о существовании игры &quot;паук&quot;, не стану с этим заморачиваться. Но уверен, что даже Дипсик с подобной задачей справится, если написать верный промпт (скопировать файлы и отправить клавиши).</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 16 Nov 2025 15:47:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162892#p162892</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2:  Превосходство AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162891#p162891</link>
			<description><![CDATA[<p>Так именно, что используя библиотеки. Их надо найти ещё нужные, в окольной документации. В питоне нет нативных средств для работы с окнами Windows. AHK даёт простое и эффективное решение встроенными средствами востребованного круга задач.<br />Что касается негодного инструмента, покажите решение годным инструментом, чтобы можно было сравнить.</p>]]></description>
			<author><![CDATA[null@example.com (haridev)]]></author>
			<pubDate>Sun, 16 Nov 2025 15:32:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162891#p162891</guid>
		</item>
	</channel>
</rss>
