Что нового

[Автоматизация] Копирование текста WinGetText с label и перенос всего в отдельное окно

exdead

Новичок
Сообщения
6
Репутация
0
Версия AutoIt: 3.3.9.0

Описание: Здравствуйте еще раз, для быстрой работы моего скрипт я захотел что бы он не печатал текст вручную из label а копировал и вставлял его в окно, но я как новичок не могу этого сделать

Примечания:

Лэйбл у меня $key1

Код:
While 1
$msg = GUIGetMsg()

Select


Case $msg = $startbutton
$send1 = GUICtrlRead($key1)
$sleep1 = GUICtrlRead($time1)


While 1
$startbutton = WinGetHandle("DOTA 2")

ControlSend("DOTA 2", "", "", $send1)
Sleep($sleep1)
ControlSend("DOTA 2", "", "", "{ENTER}")
Sleep($sleep1)
ControlSend("DOTA 2", "", "", $send1)

WEnd

case $exitbutton = $GUI_EVENT_CLOSE
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Описание промптом переведено что ли?
 
Автор
E

exdead

Новичок
Сообщения
6
Репутация
0
Такс, я не правильно написал вопрос, вроде справился, но теперь у меня одна огромная проблема
Код:
send("^+{V}")
send("{LCTRL}+{V}")

Функия ClipGet мне не нравится, т.к он все равно печатает и идет задержка
Он просто пишет V не вставляет текст, а просто пишет V...я задолбался уже битый час сижу =(
помагите
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
e:rofl:ead
1. если ты сам создаешь контролы, то для вставки значений надо просто
Код:
GUICtrlSetData

2. ты в справке в разделе
Код:
Send

только до знака "^" дошел, а знак "+" уже не осилил?
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Лучше использовать:
Код:
ControlSetText()

вместо:
Код:
Send()
 
Автор
E

exdead

Новичок
Сообщения
6
Репутация
0
Вот полный текст программы уже готовой, рабочей, но все же я хочу копировать текст и вставить командой Ctrl V

Код:
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
$hDota = WinWait("[CLASS:Valve001]", "", 0)
If Not $hDota Then
    MsgBox(4096, 'Сообщение', 'Доту запусти чурбан')
    Exit
EndIf

GUICreate("name", 490, 130)

GUISetState(@SW_SHOW)

GUICtrlCreateLabel("Че флудим?", 8, 10)
$key1 = GUICtrlCreateInput("", 90, 8, 390)
GUICtrlCreateLabel("Задержка", 8, 44)
$time1 = GUICtrlCreateInput("", 90, 40, 120)

$startbutton = GUICtrlCreateButton("Start", 90, 80, 60)





While 1
$msg = GUIGetMsg()

Select

Case $msg = $startbutton

$send1 = GUICtrlRead($key1)
$sleep1 = GUICtrlRead($time1)


While 1

$startbutton = WinGetHandle("DOTA 2")
ControlSend("DOTA 2", "", "", $send1)
Sleep($sleep1)
ControlSend("DOTA 2", "", "", "{ENTER}")

WEnd

GUIDelete()
ExitLoop

EndSelect

WEnd


Тут у меня текст тупо списывается и переписывается вручную :(
Хотелось бы сделать что то типо ClipGet а потом CtrlV в клиент но че то не получается, сколько раз не тренеровался в блокнотике с простой Send
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Для ускорения ControlSend используйте
Код:
Opt("SendKeyDelay", 0)
Opt("SendKeyDownDelay", 0)


А для переноса через буфер обмена
Код:
...
$send1 = GUICtrlRead($key1)
ClipPut($send1) ; отправить в буфер обмена
$sleep1 = GUICtrlRead($time1)

While 1

$startbutton = WinGetHandle("DOTA 2")
ControlSend("DOTA 2", "", "", "^v") ; нажать Ctrl+V
Sleep($sleep1)
ControlSend("DOTA 2", "", "", "{ENTER}")

WEnd
...
 
Автор
E

exdead

Новичок
Сообщения
6
Репутация
0
Код:
$startbutton = WinGetHandle("DOTA 2")
ControlSend("DOTA 2", "", "", "^v") ; нажать Ctrl+V


У меня он просто пишет v =(
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
А так?
Код:
ControlSend("DOTA 2", "", "", "+{ins}")
 
Верх