<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Параллельно (одновременно) выполнить несколько действий по хоткею]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=6628</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6628&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Параллельно (одновременно) выполнить несколько действий по хоткею».]]></description>
		<lastBuildDate>Fri, 30 Dec 2011 12:47:51 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[AHK: Параллельно (одновременно) выполнить несколько действий по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55180#p55180</link>
			<description><![CDATA[<p>Что делает скрипт сейчас? По нажатию левой кнопки мыши, зажимается левая кнопка мыши и мышь перемещается в определенном направлении. Когда я отпускаю левую кнопку мыши, мышь двигаться перестает и левая кнопка мыши отпускается. Еще с помощью Alt+стрелка можно изменять значения XAxis и YAxis и соответственно менять направление и скорость движения мыши по нажатию левой кноки мыши.</p><p>Что нужно чтобы делал скрипт? Мне нужно, чтобы по нажатию левой кнопки мыши, начиналось зацикливание нажатия левой кнопки мыши и параллельно с этим начинала двигаться мышь в определенном направлении.<br />Вот скрипт:</p><div class="codebox"><pre><code>;SetTitleMatchMode 3 ; Название окна должно полностью совпадать
;#IfWinActive , XXX, 

; Считываются параметры из NR.ini

IniRead , XAxis, NR.ini, Main, XAxis, %XAxis%
IniRead , YAxis, NR.ini, Main, YAxis, %YAxis%

timer = 10
PauseOn = 0
SleepTime = 25

; После нажатия левой кнопки мыши, зажимается левая кнопка мыши и мышь начинает перемещаться.
*$lButton::

Send {LButton Down}

LOOP
{
DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, XAxis
                              , Int, -YAxis
                              , UInt, 0
                              , Int, 0)
			Sleep, SleepTime
GetKeyState, state, lButton, P
if state = U
break
}
Return

LButton Up::
{
Send {LButton Up}
}
Return

; Звуковое оповещение при Suspend&#039;e скрипта

*$XButton1::

    Suspend
    If not SuspendOn
    {
        SuspendOn = 1
        SoundPlay, C:\Windows\Media\Windows Logoff Sound.wav
    }
    Else
    {
        SuspendOn = 0
        SoundPlay, C:\Windows\Media\Windows Logon Sound.wav
    }
Return




; Дальше идет регулировка значений XAxis и YAxis и вывод текущего значения на экран. Это нужно для того, чтобы указывать направление движения мыши, когда жмется левая кнопка мыши

!Right::
!Left::

XAxis := 80
XAxis_Step = 1 ; шаг регулировки

vol_DisplayTime_XAxis = 1500
vol_TransValue_XAxis = 500
vol_CW_XAxis = 000000 
vol_Thick_XAxis = 10
vol_PosX := 1996
vol_PosY := 1108
vol_Width = 50
vol_BarOptionsMaster_XAxis = 1:B1 R0-299 ZH%vol_Thick_XAxis% ZX8 ZY4 W%vol_Width% X%vol_PosX% Y%vol_PosY% CW%vol_CW_XAxis%

IniRead , XAxis, NR.ini, Main, XAxis, %XAxis%

XAxis += (InStr(A_ThisHotkey, &quot;!Left&quot;) ? -XAxis_step : XAxis_step )

IniWrite , %XAxis%, NR.ini, Main, XAxis

vol_ShowBars_XAxis:
vol_Master := XAxis

if vol_Master &lt;&gt; 80
{
vol_Colour = F19720 
vol_Text = %XAxis%
}

Else
{
vol_Colour = red
vol_Text = %XAxis%
}

IfWinNotExist, Rapidfire

{
WS_EX_TRANSPARENT := 0x20
WS_EX_LAYERED := 0x80000

Gui +AlwaysOnTop

Progress , %vol_BarOptionsMaster_XAxis% CT%vol_Colour% CB%vol_Colour%, , %vol_Text%, Rapidfire

WinSet, Transparent, %vol_TransValue_XAxis%, Rapidfire

WinSet, ExStyle, % &quot;+&quot; WS_EX_LAYERED|WS_EX_TRANSPARENT, Rapidfire
Gui -Caption +ToolWindow
}

Progress, 1:%vol_Master% , , %vol_Text%

SetTimer, vol_BarOff_XAxis, %vol_DisplayTime_XAxis%
return

vol_BarOff_XAxis:
SetTimer, vol_BarOff_XAxis, off
Progress, 1:Off
return


!Up::
!Down::

YAxis := 80
YAxis_Step = 1 ; шаг регулировки

vol_DisplayTime_YAxis = 1500
vol_TransValue_YAxis = 500
vol_CW_YAxis = 000000 
vol_Thick_YAxis = 10
vol_PosX := 1996
vol_PosY := 1108
vol_Width = 50
vol_BarOptionsMaster_YAxis = 1:B1 R0-299 ZH%vol_Thick_YAxis% ZX8 ZY4 W%vol_Width% X%vol_PosX% Y%vol_PosY% CW%vol_CW_YAxis%

IniRead , YAxis, NR.ini, Main, YAxis, %YAxis%

YAxis += (InStr(A_ThisHotkey, &quot;!Down&quot;) ? -YAxis_step : YAxis_step )

IniWrite , %YAxis%, NR.ini, Main, YAxis

vol_ShowBars_YAxis:
vol_Master := YAxis

if vol_Master &lt;&gt; 80
{
vol_Colour = F19720 
vol_Text = %YAxis%
}

Else
{
vol_Colour = red
vol_Text = %YAxis%
}

IfWinNotExist, Rapidfire

{
WS_EX_TRANSPARENT := 0x20
WS_EX_LAYERED := 0x80000

Gui +AlwaysOnTop

Progress , %vol_BarOptionsMaster_YAxis% CT%vol_Colour% CB%vol_Colour%, , %vol_Text%, Rapidfire

WinSet, Transparent, %vol_TransValue_YAxis%, Rapidfire

WinSet, ExStyle, % &quot;+&quot; WS_EX_LAYERED|WS_EX_TRANSPARENT, Rapidfire
Gui -Caption +ToolWindow
}

Progress, 1:%vol_Master% , , %vol_Text%

SetTimer, vol_BarOff_YAxis, %vol_DisplayTime_YAxis%
return

vol_BarOff_YAxis:
SetTimer, vol_BarOff_YAxis, off
Progress, 1:Off
return</code></pre></div><p>Я могу сделать что-то вроде этого:</p><div class="codebox"><pre><code>*$lButton::

LOOP
{
Send {LButton Down}
Sleep, 10
Send {Lbutton Up}
Sleep, 10
DllCall(&quot;mouse_event&quot;, UInt, 0x1
                              , Int, XAxis
                              , Int, -YAxis
                              , UInt, 0
                              , Int, 0)
			Sleep, SleepTime
GetKeyState, state, lButton, P
if state = U
break
}
Return</code></pre></div><p>Но это будет не параллельно, а последовательно, а мне нужно именно параллельно. Может есть идеи, как все-таки сделать параллельно?<br />До меня не доходит, как все-таки сделать параллельно.</p>]]></description>
			<author><![CDATA[null@example.com (bigden)]]></author>
			<pubDate>Fri, 30 Dec 2011 12:47:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55180#p55180</guid>
		</item>
	</channel>
</rss>
