1

Тема: AHK: Копирование из одного окна в другое

Есть необходимость из SAPа скопировать много ячеек в Excel. В САПе они не выделяются => очень геморно и долго. Попытался на скорую руку освоить программу, чтобы быстро копировать по одной - не получилось.

F7::SendEvent, !{tab}{down}{down}^c!{tab}{down}^v


По моей логике, при нажатии Ф7 - мы Альттабаемся, спускаемся на ячейку вниз, копируем, снова альттабаемся, спускаемся на ячейку и вставляем. Если проводить манипуляции вручную - все работает. Подскажите, пожалуйста, почему не работает скрипт?

2 (изменено: Alectric, 2013-11-08 18:10:20)

Re: AHK: Копирование из одного окна в другое

Можно увидеть скриншот "SAP-а", откуда будет копирование?

Какие-то важные данные "затрите" на всякий случай, или пустой откройте.

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

3 (изменено: bobbypchel, 2013-11-08 18:15:56)

Re: AHK: Копирование из одного окна в другое

Скриншот

В коде случайно дважды {down}, скрипт с одиночным, разумеется

4

Re: AHK: Копирование из одного окна в другое

Всё же ячейки в САПе выделяются, но только по одной?

5 (изменено: Alectric, 2013-11-08 18:26:02)

Re: AHK: Копирование из одного окна в другое

Сделайте еще скриншот с запущенным скриптом:
Только мышку держите над тем что копировать.

#SingleInstance,Force
Gui,5:-Caption +Border +ToolWindow +AlwaysOnTop
Gui,5:Color,EEEEEE
Gui,5:Margin,0,0
Gui,5:Show,x0 y0 w1 h1 NoActivate,Рамка
WinGet,eguiid,id,Рамка
WinSet,TransColor,EEEEEE,ahk_id %eguiid%

loop
{
  sleep,20
  MouseGetPos,exc,eyc,ewinid,eCtrl
  winGetPos,eWinX,eWinY,,,ahk_id %ewinid%
  ControlGetPos,eCtrlX,eCtrlY,eCtrlW,eCtrlH,%eCtrl%,ahk_id %ewinid%
  ex:=eWinX+eCtrlX
  y:=eWinY+eCtrlY
  if (ex!="" and ey!="" and eCtrlW!="" and eCtrlH!="")
    Gui,5:Show,x%eX% y%eY% w%eCtrlW% h%eCtrlH% NoActivate,Рамка
  tooltip,%eCtrl%
}
return

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

6

Re: AHK: Копирование из одного окна в другое

Да, по одной, конечно, выделяются. Но по несколько за раз выделяются только полные строки.

7

Re: AHK: Копирование из одного окна в другое

Тут нужно использовать "ControlGet" с параметрами "List" и "Selected".

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

8

Re: AHK: Копирование из одного окна в другое

Спасибо! В понедельник попробую

9 (изменено: Alectric, 2013-11-08 19:01:32)

Re: AHK: Копирование из одного окна в другое

Можете сейчас попробовать.

F4::
clipboard=
return

F5::
mousegetpos,,,id,ctrl
ControlGet, OutputVar, List, Selected, %ctrl%, ahk_id %id%
if errorlevel
{
  tooltip,Этот контрол не поддерживается: %ctrl%
  sleep,3000
  tooltip
}
else
{
  clipboard.=OutputVar "`n"
  send, {Down}
  tooltip,%clipboard%
  settimer,tooltipoff,-1000
}
return

tooltipoff:
tooltip, Теперь вставте куда вам нужно обычной вставкой.`n`nНажмите F4 для очистки буфера.
sleep,3000
tooltip
return

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

OFF:
Мне просто делать нечего...

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

10

Re: AHK: Копирование из одного окна в другое

"Этот контрол не поддерживается:SAPTreeList4"

11

Re: AHK: Копирование из одного окна в другое

Тогда я не знаю как еще можно получить этот текст...

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