Что нового

Как отправить WM_COPY другому окну?

Microteam

Осваивающий
Сообщения
74
Репутация
34
Здравствуйте. Как в AutoIt отправить окну WM_COPY, чтобы тот скопировал выделенный текст?

Пробовал так, эффекта нет:
Код:
#include<SendMessage.au3>

Global Const $WM_COPY = 0x0301

$hWnd = WinGetHandle("[ACTIVE]")
_SendMessage($hWnd, $WM_COPY)
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Сообщение нужно не окну отправить, а контролу. Для блокнота, например, так:
Код:
#include <SendMessage.au3>
#include <WindowsConstants.au3>

$hWnd = ControlGetHandle("Безымянный", "", "Edit1")
_SendMessage($hWnd, $WM_COPY)
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Вот полный пример сделал. Текст ещё надо выделить, что кажется не очевидным.

Код:
#include <SendMessage.au3>
#include <WindowsConstants.au3>

; Запуск блокнота
Run('notepad.exe')

; Ожидание 5 секунд до появление окна блокнота
$hCUI = WinWait("[CLASS:Notepad]", "", 5)
If Not $hCUI Then
	MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
	Exit
EndIf

ControlSend($hCUI, "", "Edit1", "Эта строка выслана в элемент Edit")

; Получает дескриптор элемента
$hCtrl = ControlGetHandle("Безымянный", "", "Edit1")

; Выделяет несколько слов
$iRand = Random(1, 6, 1)
Send('^+{LEFT ' & $iRand & '}')

; Копирует выделенный текст
_SendMessage($hCtrl, $WM_COPY)

; Закрывает блокнот.
WinClose($hCUI)


И ещё
Код:
#include <SendMessage.au3>
#include <WindowsConstants.au3>

; Запуск блокнота
Run('notepad.exe')

; Ожидание 5 секунд до появление окна блокнота
$hCUI = WinWait("[CLASS:Notepad]", "", 5)
If Not $hCUI Then
	MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
	Exit
EndIf

ControlSend($hCUI, "", "Edit1", "Эта строка выслана в элемент Edit")

; Получает дескриптор элемента
$hCtrl = ControlGetHandle("Безымянный", "", "Edit1")

; Выделяет несколько слов
$iRand = Random(1, 6, 1)
Send('^+{LEFT ' & $iRand & '}')

; Копирует выделенный текст в буфер обмена
_SendMessage($hCtrl, $WM_COPY)

; Вырезает выделенный текст в буфер обмена
; _SendMessage($hCtrl, $WM_CUT)

; Удаляет выделенный текст
; _SendMessage($hCtrl, $WM_CLEAR)
Sleep(500)

Send('^{End}')
Send('{Enter}')

; Вставляет содержимое буфера обмена
_SendMessage($hCtrl, $WM_PASTE)
Send('{Enter}')
_SendMessage($hCtrl, $WM_PASTE)

; Закрывает блокнот.
WinClose($hCUI)
 
Верх