Что нового

Копирование текста при клике на Input

scanfail

Знающий
Сообщения
244
Репутация
17
Скажем, есть такой простенький код:
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region
$Form1 = GUICreate("Form1", 154, 34, 192, 124)
$Input1 = GUICtrlCreateInput("Пробуй кликнуть на меня", 8, 8, 137, 21, $ES_READONLY)
GUISetState(@SW_SHOW)
#EndRegion

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
 Case $Input1
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd

Как заставить скрипт копировать текст при клике на этот Input?
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Вот:
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region
$Form1 = GUICreate("Form1", 154, 34, 192, 124)
$Input1 = GUICtrlCreateInput("Пробуй кликнуть на меня", 8, 8, 137, 21, $ES_READONLY)
GUISetState(@SW_SHOW)
#EndRegion

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
 Case $Input1
        Case $GUI_EVENT_CLOSE
            Exit
		Case $GUI_EVENT_PRIMARYUP
            $aMousePos = MouseGetPos()            
            $stPoint = DllStructCreate("int X;int Y")
            DllStructSetData($stPoint, 1, $aMousePos[0])
            DllStructSetData($stPoint, 2, $aMousePos[1])		
            $hWnd = _WinAPI_WindowFromPoint($stPoint)		
            Switch $hWnd
                Case GUICtrlGetHandle ($Input1)
					$sText=GUICtrlRead ($Input1)
					MsgBox(0,"Опа!!!",$sText)
			EndSwitch	
	EndSwitch
WEnd



Добавлено:
Сообщение автоматически объединено:

Или еще проще:
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>	
#Region
$Form1 = GUICreate("Form1", 154, 34, 192, 124)
$Input1 = GUICtrlCreateInput("Пробуй кликнуть на меня", 8, 8, 137, 21, $ES_READONLY)
GUISetState(@SW_SHOW)
#EndRegion

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
 Case $Input1
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_PRIMARYUP   
            $hWnd = _WinAPI_GetFocus()      
            Switch $hWnd
                Case GUICtrlGetHandle ($Input1)
                    $sText=GUICtrlRead ($Input1)
                    MsgBox(0,"Опа!!!",$sText)
            EndSwitch   
    EndSwitch
WEnd
 
Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
А что делать, если инпатов много?
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
scanfail [?]
А что делать, если инпатов много?
Можно так :

Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>	
#Region
$Form1 = GUICreate("Form1", 154, 64, 192, 124)
$Input1 = GUICtrlCreateInput("Пробуй кликнуть на меня", 8, 8, 137, 21, $ES_READONLY)
$Input2 = GUICtrlCreateInput("И Здесь", 8, 28, 137, 21, $ES_READONLY)
GUISetState(@SW_SHOW)
#EndRegion

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
 Case $Input1
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_PRIMARYUP   
            $hWnd = _WinAPI_GetFocus()      
            Switch $hWnd
                Case GUICtrlGetHandle ($Input1)
                    $sText=GUICtrlRead ($Input1)
				Case GUICtrlGetHandle ($Input2)
					 $sText=GUICtrlRead ($Input2)
					
            EndSwitch   
		MsgBox(0,"Опа!!!",$sText)
	EndSwitch
WEnd
 
Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
А как быть, если в скрипте присутствует пауза, а?
Пример:
Код:
Global $Paused

HotKeySet("{PAUSE}", "TogglePause")

Func TogglePause()
    $Paused = Not $Paused
    While $Paused
        Sleep(100)
    WEnd
EndFunc
 

AZJIO

Меценат
Меценат
Сообщения
2,903
Репутация
1,200
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Global $aiInput[11] = [10]
GUICreate("WM_COMMAND", 390, 260)
For $i = 1 To 10
	$aiInput[$i] = GUICtrlCreateInput(Random(1, 10000, 1), 10, $i * 25 - 20, 95, 23)
Next
$iEdit = GUICtrlCreateEdit('клик', 115, 5, 270, 250, $ES_MULTILINE)
GUICtrlSetBkColor(-1, 0xfffbd7)
GUICtrlSetFont(-1, 24)
GUISetState()

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

Do
Until GUIGetMsg() = -3

Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
	Local $nID = BitAND($wParam, 0x0000FFFF) ; _WinAPI_LoWord
	Local $nNotifyCode = BitShift($wParam, 16) ; _WinAPI_HiWord

	Switch $nID
		Case $aiInput[1] To $aiInput[$aiInput[0]]
			GUICtrlSetData($iEdit, GUICtrlRead($nID))
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc


scanfail
А как быть, если в скрипте присутствует пауза, а?
Режим OnEvent использовать
 
Верх