1 (изменено: Странникх, 2014-05-05 22:29:35)

Тема: AHK: Проблема с буфером

1::
clipboard =
clipboard := "Hello"
SendEvent {Enter}^{vk0x56}{Enter}
return

Работает нормально.


xui1 := 0
xui2 := 300
yui1 := 0
yui2 := 300
skypevoice := 0

~*RButton::
IfWinActive, Skype
{
if skypevoice = 0
{
MouseGetPos, xcoord, ycoord
    if !(xcoord < xui1 || xcoord > xui2 || ycoord < yui1 || ycoord > yui2)
    {
clipboard =
clipboard := "Hello"
ClipWait, 1
if ErrorLevel = 1
MsgBox, Неудачно

If ErrorLevel = 0
Send {Enter}
sleep, 100
Send {Ctrl Down}v{Ctrl Up}
sleep, 100
Send {Enter}
    }
}
}
return

Не работает. Точнее, ErrorLevel присваивается 0, а вставка из буфера не происходит. В первом примере происходит. Пробовал по-разному делать вставку, но все сводится к тому, что вставка не происходит, а при повторном клике (если окно не сворачивать, а затем снова не разворачивать) буфер не сбрасывается - не происходит эта часть:

 clipboard =
clipboard := "Hello"

Грубо говоря, есть окно Skype. В нем при щелчке ПКМ в определенных координатах очищается буфер и заносится в буфер текст Hello, а затем этот текст отсылается в чат. В процессе этого возникает ошибка в том, что вставка из буфера не происходит, хотя Enter отсылается корректно.
Я пока в тупике, не понимаю в чем проблема. Знающие, можете помочь разобраться?

2

Re: AHK: Проблема с буфером

xui1 := 0
xui2 := 300
yui1 := 0
yui2 := 300
skypevoice := 0

#IfWinActive, Skype
~*RButton::
   if (skypevoice != 0)
      Return

   MouseGetPos, xcoord, ycoord
   if (xcoord < xui1 || xcoord > xui2 || ycoord < yui1 || ycoord > yui2)
      Return

   clipboard := "Hello"
   Send {Enter}
   sleep, 100
   Send ^{vk56}
   sleep, 100
   Send {Enter}
   Return

Только непонятно, зачем вообще здесь буфер обмена используется?
Вместо

   clipboard := "Hello"
   Send {Enter}
   sleep, 100
   Send ^{vk56}
   sleep, 100
   Send {Enter}

проще

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

3

Re: AHK: Проблема с буфером

В вашем варианте такое же поведение вставки. Не вижу разницы в поведении вставки из буфера.

~*RButton::
if (skypevoice != 0)
Return

MouseGetPos, xcoord, ycoord
if !(xcoord < xui1 || xcoord > xui2 || ycoord < yui1 || ycoord > yui2)    
clipboard := "Hello"
Send {Enter}
sleep, 100
Send ^{vk56}
sleep, 100
Send {Enter}
Return

Только непонятно, зачем вообще здесь буфер обмена используется?

То, что я показал - это кусок большого кода. То есть под RButton выполняется положение мыши в нескольких координатах, а не в одной как здесь. Соответственно, разной длины посылаемые сообщения. Например:

SendInput {Enter}Привет. Как дела? Сегодня хорошо прошел день, но завтра обещают дожди{Enter}

Если оставить в таком виде, то сообщение отошлется не полным за пару миллисекунд. Можно отсылать через обычную команду Send, но тогда текст будет печататься, как будто его набирает пользователь - то есть медленно, однако он отошлется полным видом. Моя цель стоит - отослать сообщение любой длины без задержки и без потери за пару миллисекунд, поэтому я пришел к варианту с буфером обмена (нужный текст отсылается в буфер, а затем между Enter'ами выполняется вставка из буфера), но он почему-то не хочет себя хорошо вести.

4

Re: AHK: Проблема с буфером

Не пойму, мой первый вариант не работает, что ли?

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

5

Re: AHK: Проблема с буфером

Да. Не работает у меня по-крайней мере. Давайте я вам скину целиком все с RButton.

#SingleInstance Force
#NoEnv
SetTitleMatchMode 2
DetectHiddenWindows, On
SetKeyDelay, 0, 0
#InstallKeybdHook
#MaxThreads 30
#MaxHotKeysPerInterval 1000
#MaxThreadsBuffer on
#KeyHistory 0
Process, priority, , Realtime


xcoord1 := 0
ycoord1 := 617
xcoord2 := 86
ycoord2 := 704


yui1 := 786
yui2 := 807


xui1 := 39
xui2 := 65


xui3 := 66
xui4 := 91  


xui5 := 92
xui6 := 117

 
xui7 := 118
xui8 := 143


xui9 := 144
xui10 := 170


xui11 := 167
xui12 := 195


xui13 := 196
xui14 := 222


yui3 := 891
yui4 := 929


xui15 := 299
xui16 := 350


xui17 := 349
xui18 := 404  


xui19 := 405
xui20 := 450


yui5 := 930
yui6 := 964


xui21 := 299
xui22 := 350


xui23 := 351
xui24 := 402


xui25 := 403
xui26 := 450


yui7 := 965
yui8 := 999


xui27 := 299
xui28 := 348


xui29 := 349
xui30 := 404


xui31 := 405
xui32 := 450


yui9 := 1000
yui10 := 1037


xui33 := 299
xui34 := 346


xui35 := 347 
xui36 := 403


xui37 := 404
xui38 := 450


yui11 := 1040
yui12 := 1072


xui39 := 302
xui40 := 347


xui41 := 348
xui42 := 399


xui43 := 400
xui44 := 450

skypevoice := 0

~*RButton::
IfWinActive, Skype
{
if skypevoice = 0
{
MouseGetPos, xcoord, ycoord

 ; Это к другой части кода, интересует то, что ниже
    if !(xcoord < xcoord1 || xcoord > xcoord2 || ycoord < ycoord1 || ycoord > ycoord2)
    {
    Lock = 1
    sleep, 60
    {
    Num = -5
    Num2 = -5
    Num3 = -5
    GuiControl, 22: Hide 
    GuiControl, 22: Hide
    GuiControl, 22: Hide
    }
    }

 ; Здесь
    if !(xcoord < xui1 || xcoord > xui2 || ycoord < yui1 || ycoord > yui2)    
    {
   clipboard := "Hello"
   Send {Enter}  ; Работает
   sleep, 100
   Send ^{vk56} ; Не работает в моем окне
   sleep, 100
   Send {Enter}  ; Работает
    }

    if !(xcoord < xui2 || xcoord > xui4 || ycoord < yui1 || ycoord > yui2)    
    {
;фраза
    }

    if !(xcoord < xui5 || xcoord > xui6 || ycoord < yui1 || ycoord > yui2)    
    {
;фраза
    }

    if !(xcoord < xui7 || xcoord > xui8 || ycoord < yui1 || ycoord > yui2)    
        {
;фраза
    }

    if !(xcoord < xui9 || xcoord > xui10 || ycoord < yui1 || ycoord > yui2)
    {
;фраза
    }

    if !(xcoord < xui11 || xcoord > xui12 || ycoord < yui1 || ycoord > yui2) 
    {
;фраза
    }

    if !(xcoord < xui13 || xcoord > xui14 || ycoord < yui1 || ycoord > yui2)
    {
;фраза
    }

    if !(xcoord < xui15 || xcoord > xui16 || ycoord < yui3 || ycoord > yui4) 
    {
;фраза
    }

    if !(xcoord < xui17 || xcoord > xui18 || ycoord < yui3 || ycoord > yui4) 
    {
;фраза
    }

    if !(xcoord < xui19 || xcoord > xui20 || ycoord < yui3 || ycoord > yui4) 
    {
;фраза
    }

    if !(xcoord < xui21 || xcoord > xui22 || ycoord < yui5 || ycoord > yui6)
    {
;фраза
    }

    if !(xcoord < xui23 || xcoord > xui24 || ycoord < yui5 || ycoord > yui6)
    {
;фраза
    }

    if !(xcoord < xui25 || xcoord > xui26 || ycoord < yui5 || ycoord > yui6) 
    {
;фраза
    }

    if !(xcoord < xui27 || xcoord > xui28 || ycoord < yui7 || ycoord > yui8) 
    {
;фраза
    }

    if !(xcoord < xui29 || xcoord > xui30 || ycoord < yui7 || ycoord > yui8) 
    {
;фраза
    }

    if !(xcoord < xui31 || xcoord > xui32 || ycoord < yui7 || ycoord > yui8) 
    {
;фраза
    }

    if !(xcoord < xui33 || xcoord > xui34 || ycoord < yui9 || ycoord > yui10) 
    {
;фраза
    }

    if !(xcoord < xui35 || xcoord > xui36 || ycoord < yui9 || ycoord > yui10) 
    {
;фраза
    }

    if !(xcoord < xui37 || xcoord > xui38 || ycoord < yui9 || ycoord > yui10) 
    {
;фраза
    }

    if !(xcoord < xui39 || xcoord > xui40 || ycoord < yui11 || ycoord > yui12) 
    {
;фраза
    }

    if !(xcoord < xui41 || xcoord > xui42 || ycoord < yui11 || ycoord > yui12) 
    {
;фраза
    }

    if !(xcoord < xui43 || xcoord > xui44 || ycoord < yui11 || ycoord > yui12) 
    {
;фраза
    }

}
}
return


Вставка не происходит. Виновато окно куда посылается?

6

Re: AHK: Проблема с буфером

Для начала, у меня у окна с чатом заголовок не Skype, а имя контакта. У вас по-другому? Кроме того, если использовать вариант RButton с тильдой (~), то появляется контекстное меню. Так нужно? Возможно, оно и мешает.

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

7 (изменено: Странникх, 2014-05-06 02:26:12)

Re: AHK: Проблема с буфером

С заголовком я уверен, что все в порядке. Проверил по коду из первого стартового сообщения. У меня контекстное меню не открывается в нужных мне координатах, это исключается тоже значит. Без ~ попробовал, результат такой же. Ради эксперимента сделал так:

1::
IfWinActive, Skype
MouseGetPos, xcoord, ycoord
if !(xcoord < xui1 || xcoord > xui2 || ycoord < yui1 || ycoord > yui2)
clipboard := "Я отправляю большой текст с целью выяснения дошел ли он до окна или нет"
Send {Enter}
sleep, 100
Send ^{vk56}
sleep, 100
Send {Enter}
Return

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

1::
clipboard := "Я отправляю большой текст с целью выяснения дошел ли он до окна или нет"
Send {Enter}
sleep, 100
Send {Ctrl Down}v
sleep, 10
Send {Ctrl Up}
sleep, 100
Send {Enter}
Return

Убрал определение окна - такая же проблема. Убрал и координаты - тоже самое.

Нашел в чем проблема:

1::
IfWinActive, Skype
MouseGetPos, xcoord, ycoord
if !(xcoord < xui1 || xcoord > xui2 || ycoord < yui1 || ycoord > yui2)
clipboard := "Я отправляю большой текст с целью выяснения дошел ли он до окна или нет"
Send {Enter}
sleep, 100
Send {Ctrl Down}v
sleep, 10
Send {Ctrl Up}
sleep, 100
Send {Enter}
Return

Странно, но, действительно, почему-то ^v не работает корректно в отличии от такого варианта. Даже если записать вот так:

Send {Ctrl Down}v{Ctrl Up}

Не сработает.
Upd:
В данном коде у меня почему-то в буфер попадают лишние строки из скрипта. Например, сейчас это произошло так: Запустил скрипт, нажал 1 в нужный координатах. В буфер скопировался нужный мне текст и отправился окну. Затем я в буфер я взял {Ctrl Up}, после чего снова нажал в окне 1 в тех же координатах, однако отправился мне {Ctrl Up}, а не мой текст. Почему?
Upd:
Почему

clipboard := "Я отправляю большой текст с целью выяснения дошел ли он до окна или нет"

текст не заносится в буфер повторно после нажатия 1?

8

Re: AHK: Проблема с буфером

Возникала похожая проблема, решилось банально "ClipWait, 2" вместо "ClipWait, 1".

9 (изменено: stealzy, 2014-05-06 11:30:13)

Re: AHK: Проблема с буфером

Странникх пишет:

Если оставить в таком виде, то сообщение отошлется не полным за пару миллисекунд. Можно отсылать через обычную команду Send, но тогда текст будет печататься, как будто его набирает пользователь - то есть медленно, однако он отошлется полным видом. Моя цель стоит - отослать сообщение любой длины без задержки и без потери за пару миллисекунд, поэтому я пришел к варианту с буфером обмена (нужный текст отсылается в буфер, а затем между Enter'ами выполняется вставка из буфера), но он почему-то не хочет себя хорошо вести.

Да? А я пришел к варианту посылки текста контролу:
text:="Hello!"
Control, EditPaste, %text%, Edit1, ahk_id %SkypeHwnd%

10

Re: AHK: Проблема с буфером

Да? А я пришел к варианту посылки текста контролу:
text:="Hello!"
Control, EditPaste, %text%, Edit1, ahk_id %SkypeHwnd%

1::
text:="Hello!"
Control, EditPaste, %text%, Edit1
return

По такому способу даже в активное окно ничего не посылается.

Возникала похожая проблема, решилось банально "ClipWait, 2" вместо "ClipWait, 1".

Ставил даже 10 - безрезультатно.
Вся проблема в том, что Clipboard не хочет время от времени заносить в буфер указанный ему текст. Он первый раз заносит, затем мы берем что угодно другое в буфер и уже последующие разы он печатает то, что мы взяли в буфер вручную. Автоматически он может занести указанный ему текст повторно если переразвернуть окно заново, либо перезагрузкой скрипта.

11 (изменено: Alectric, 2014-05-06 21:00:53)

Re: AHK: Проблема с буфером

clipboard := "Текст"

Попробуйте без двоеточия и кавычек:

clipboard = Текст

Мало ли...

Странникх пишет:

С заголовком я уверен, что все в порядке. Проверил по коду из первого стартового сообщения. У меня контекстное меню не открывается в нужных мне координатах, это исключается тоже значит. Без ~ попробовал, результат такой же. Ради эксперимента сделал так:

1::
IfWinActive, Skype
  MouseGetPos, xcoord, ycoord
if !(xcoord < xui1 || xcoord > xui2 || ycoord < yui1 || ycoord > yui2)
  clipboard := "Я отправляю большой текст с целью выяснения дошел ли он до окна или нет"
Send {Enter}
sleep, 100
Send ^{vk56}
sleep, 100
Send {Enter}
Return

Попробуйте так:

1::
clipboard := "Я отправляю большой текст с целью выяснения дошел ли он до окна или нет"
Send {Enter}
sleep, 100
Send ^{vk56}
sleep, 100
Send {Enter}
Return

Если сработает - значит ошибка в расчетах координат (относительно окна или всего экрана).

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

12

Re: AHK: Проблема с буфером

Вся проблема в том, что Clipboard не хочет время от времени заносить в буфер указанный ему текст.


clipboard =
clipboard = текст
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: Проблема с буфером

1::
clipboard =
clipboard = Я отправляю большой текст с целью выяснения дошел ли он до окна или нет
Send {Enter}
sleep, 100
Send {Ctrl Down}v
sleep, 100
Send {Ctrl Up}
sleep, 100
Send {Enter}
Return

2::
clipboard =
clipboard = text0000
sleep, 100
Send {Ctrl Down}v
sleep, 100
Send {Ctrl Up}
sleep, 100
Send {Enter}
Return

Работает если ничего не брать в буфер вручную. Очистка буфера так и не происходит каждый раз при нажатии 1 или 2.
Попробовал сделать очистку через цикл:

x := 0

Loop
{
if x = 1
{
clipboard =
x = 0
}

sleep, 1
}
return


1::
clipboard =
clipboard = Я отправляю большой текст с целью выяснения дошел ли он до окна или нет
Send {Enter}
sleep, 100
Send {Ctrl Down}v
sleep, 100
Send {Ctrl Up}
sleep, 100
Send {Enter}
x = 1
Return

2::
clipboard =
clipboard = text0000
sleep, 100
Send {Ctrl Down}v
sleep, 100
Send {Ctrl Up}
sleep, 100
Send {Enter}
x = 1
Return

Очень странно ведет себя скрипт в разных окнах. В текстовых документах он работает идеально. В окне Skype отсылает v, в других окнах отсылает вообще часть кода (т.е. то , что было в буфере (если в буфере был код, то отошлет код) ).

14

Re: AHK: Проблема с буфером

С кодом в нижеследующем виде не удалось воспроизвести проблему ни в одном из протестированных окон, в том числе в окне скайпа.

1::
clipboard = Я отправляю большой текст с целью выяснения дошел ли он до окна или нет
ClipWait, 2
Send, ^v{enter}
Return

2::
clipboard = text0000
ClipWait, 2
Send, ^v{enter}
Return

15 (изменено: Странникх, 2014-05-06 23:19:56)

Re: AHK: Проблема с буфером

Send, ^v{enter}

В текстовых редакторах все нормально посылается с Ctrl. В остальных окнах посылает просто v и enter, даже в скайпе.

SendInput, ^{vk0x56}{enter}
Send, {Ctrl Down}v{Ctrl Up}{enter}
Send, {Ctrl Down}
sleep, 1
Send, v
sleep, 1
Send, {Ctrl Up}
sleep, 1
Send, {enter}

Не работает.

Send, {Ctrl Down}
sleep, 1
Send, m ; русская 
sleep, 1
Send, {Ctrl Up}
sleep, 1
Send, {enter}
Send, ^{vk0x56}{enter}

Работает. Видимо, когда буфер берет русский текст, происходит баг в смене раскладки клавиатуры.
Upd:

1::
clipboard =
clipboard = russian text is broken
ClipWait, 2
Send, {Ctrl Down}
sleep, 1
Send, {vk0x56} 
sleep, 1
Send, {Ctrl Up}
sleep, 1
Send, {enter}
Return

2::
clipboard =
clipboard = text0000
ClipWait, 2
Send, {enter}^{vk0x56}{enter}
Return

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

16

Re: AHK: Проблема с буфером

Заменял в своем примере "Send, ^v{enter}" на "Send, ^{vk0x56}{enter}", "SendInput, ^{vk0x56}{enter}" - проблема по-прежнему не воспроизводится.
При замене "v" на русскую "м" ожидаемо вставляется "м", поскольку раскладка по-умолчанию английская. При смене раскладки проблема опять исчезает.
Наоборот, при русской раскладке при "v" она и печатается.
Варианты со сканкодами работают независимо от раскладки и воспроизвести проблему мне так и не удается.

17

Re: AHK: Проблема с буфером

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

18

Re: AHK: Проблема с буфером

Очень странно. Не понимаю в чем проблема. Может решение крыться в версии AHK? У меня 1.1.13.00, текущая 1.1.15.00.

19

Re: AHK: Проблема с буфером

Дайте вариант, который у Вас гарантированно воспроизводит проблему и окно назовите соответствующее в придачу. Запущу в исходном виде и сообщу результат.

20

Re: AHK: Проблема с буфером

АНК посмотрел 1.1.14.03 у меня.

21

Re: AHK: Проблема с буфером

NumPad1::
clipboard =
clipboard = Пример русского текста
ClipWait, 2
Send, {Ctrl Down}
sleep, 1
Send, {vk0x56} ; русская 
sleep, 1
Send, {Ctrl Up}
sleep, 1
Send, {enter}
Return

NumPad2::
clipboard =
clipboard = English example
ClipWait, 2
Send, {enter}^{vk0x56}{enter}
Return

В скайпе работает, в большинстве окон тоже. А вот, например, в Photoshop CS6 если создать слой, туда инструмент текста и в поле нажать сначала NumPad1, а затем скопировать в этом поле любой символ и нажать NumPad2, то появится текст, который мы скопировали, а не с заданного в скрипте. Тоже самое будет при последующих нажатиях клавиш NumPad1 или NumPad2, пока вы не переразвернете окно. Баг?

22

Re: AHK: Проблема с буфером

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

23 (изменено: Malcev, 2014-05-07 02:31:16)

Re: AHK: Проблема с буфером

У меня так работает:

NumPad1::
clipboard =
clipboard = Пример русского текста
ClipWait, 2
WinActivate, ahk_class Shell_TrayWnd
WinActivate, ahk_class Photoshop
Send, {Ctrl Down}
sleep, 1
Send, {vk0x56} ; русская 
sleep, 1
Send, {Ctrl Up}
sleep, 1
Send, {enter}
Return

24

Re: AHK: Проблема с буфером

В редких случаях такое помогает.


1::
Clipboard = Ahk
ControlGetFocus, CtrlFocus, A          
PostMessage,0x302,,,%CtrlFocus%,A ; WM_PASTE
Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

25 (изменено: Странникх, 2014-05-07 15:01:01)

Re: AHK: Проблема с буфером

NumPad4::
clipboard =
clipboard = Пример русского текста
ClipWait, 2
WinActivate, ahk_class Shell_TrayWnd
WinActivate, ahk_class Photoshop
Send, {enter}^{vk0x56}{enter}
Return

NumPad5::
clipboard =
clipboard = English example
ClipWait, 2
WinActivate, ahk_class Shell_TrayWnd
WinActivate, ahk_class Photoshop
Send, {enter}^{vk0x56}{enter}
Return

Malcev, спасибо. Этот способ работает, но возникает проблема с панелью задач если окно развернуто на весь экран полностью. Команда WinActivate активирует указанное окно, но если Photoshop уже активен, и находится поверх остальных окон, и полностью развернут на весь экран, то тогда на на полсекунды видно как "просвечивается"(показывается, высвечивается, открывается) панель задач Windows, а затем "скрывается" и становится все как было до нажатия кнопки NumPad4 или NumPad5. Можно ли как-нибудь не задействовать панель задач, то есть, чтобы она не показывалась при выполнении кода?

1::
Clipboard = Ahk
ControlGetFocus, CtrlFocus, A          
PostMessage,0x302,,,%CtrlFocus%,A ; WM_PASTE
Return

Мне не помогло.

26

Re: AHK: Проблема с буфером

У меня не просвечивмется.
Возможно у вас Aero стоит.
Как вариант можно попробовать так:

NumPad4::
clipboard =
clipboard = Пример русского текста
ClipWait, 2
WinActivate, Start ahk_class Button
WinActivate, ahk_class Photoshop
Send, {enter}^{vk0x56}{enter}
Return

27

Re: AHK: Проблема с буфером

У меня Windows 7 Упрощенный стиль. По вашему примеру буфер не принимает другое значение, кроме самого первого, того что в него попало (это все описано в сообщениях выше). Есть другие варианты?

28

Re: AHK: Проблема с буфером

Приведите полный алгоритм действий.
Повторяюсь, у меня так все работает и ничего не просвечивается:

NumPad4::
clipboard =
clipboard = Пример русского текста
ClipWait, 2
WinActivate, Start ahk_class Button
WinActivate, ahk_class Photoshop
Send, {enter}^{vk0x56}{enter}
Return

NumPad5::
clipboard =
clipboard = English example
ClipWait, 2
WinActivate, Start ahk_class Button
WinActivate, ahk_class Photoshop
Send, {enter}^{vk0x56}{enter}
Return

29 (изменено: Странникх, 2014-05-07 17:50:39)

Re: AHK: Проблема с буфером

Photoshop работает без просвета, как вы и написали, даже в развернутом на весь экран виде. На данный момент я протестировал большинство используемых окон для которых мне нужен этот скрипт и выяснилась удивительная вещь. Он не работает конкретно в одном окне - Dota 2. Во всех остальных окнах(играх L4D2, TF2, CS:GO) от такого же разработчика Valve все работает идеально, хотя движок Source одинаковый для них. При этом дальнейшие эксперименты показали, что в консоли этот текст, записанный буфером скрипта, также корректно отсылается, однако уже непосредственно в игре, в его игровом чате, происходит сбой - из буфера посылается то, что было в нем последнее. То есть не выполняются очистка буфера и присвоение ему содержимого. Эти строки:

clipboard =
clipboard = присвоение текста

30

Re: AHK: Проблема с буфером

Все забываю спросить - а зачем перед присвоением очистка буфера?

31

Re: AHK: Проблема с буфером

Потому, что иначе ClipWait, 2 - бессмысленен.

32

Re: AHK: Проблема с буфером

Но это объяснение искомого через средство.
Зачем это с точки зрения задач рассматриваемого скрипта?