Что нового

Связь кнопок и еще кое что.

Jaga-Jaga

Новичок
Сообщения
1
Репутация
0
Всем привет. Недавно начал заниматься этим делом, может глупый вопрос)
Нужна такая программка для нажатия клавиш в неактивном окне.

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

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

#region
GUICreate("Макрос", 320,100, @DesktopWidth/2-160, @DesktopHeight/6-45, -1, 0x00000018); WS_EX_ACCEPTFILES
$windd = GUICtrlCreateInput ( "Window", 10, 5, 300, 20)
$waitt = GUICtrlCreateInput ( "Wait", 10, 35, 300, 20)
$key = GUICtrlCreateInput ( "Key", 200, 70, 60, 20)
$b1 = GUICtrlCreateButton ("Start", 20, 70, 50)
$b2 = GUICtrlCreateButton ( "Stop", 72, 70, 50)
#endregion
GUISetState (@SW_SHOW)
While 1 = 1
If GUICtrlRead($b1) = 0 Then
ControlSend(GUICtrlRead($windd), "","", "GUICtrlRead($key)")
Sleep(GUICtrlRead($waitt))
Else
Exit
EndIf
WEnd
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Один из примеров:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

#region
GUICreate("Макрос", 320,100, @DesktopWidth/2-160, @DesktopHeight/6-45, -1, 0x00000018)
$windd = GUICtrlCreateInput ( "[Class:Notepad]", 10,  5, 300, 20)
$waitt = GUICtrlCreateInput ( "1000", 10,  35, 300, 20)
$key = GUICtrlCreateInput ( "{F5}", 200,  70, 60, 20)
$b1 = GUICtrlCreateButton ("Start",  20, 70, 50)
$b2 = GUICtrlCreateButton ( "Stop",  72, 70, 50)
#endregion
GUISetState (@SW_SHOW) 

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
			
		Case $b1
			$Win = GUICtrlRead ($windd)
			$Wait = GUICtrlRead ($waitt)
			$VarKey = GUICtrlRead ($key)
			MyFuncSend($Win, $Wait, $VarKey)			
		Case $b2
			Exit
	EndSwitch
WEnd

Func MyFuncSend($Win, $Wait, $VarKey)	
	Run("Notepad.exe")
	WinWaitActive ($Win)
	Sleep($Wait)
	ControlSend($Win, "", "Edit1", $VarKey)
EndFunc
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Но тут есть засада:
Код:
WinWaitActive ($Win)

Не дождется ошибочно заданного окна (так и будет ждать)

Код:
Sleep($Wait)

Если задали не целое число от 100, то поймет как 1 кажись
 

FoxTiM

Новичок
Сообщения
22
Репутация
2
Вот попробуй вот так!

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $Autot = 0 

#Region ### START Koda GUI section ### Form=
$_1 = GUICreate("Макрос", 468, 270, 192, 125, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))
$b1 = GUICtrlCreateButton("Применить", 28, 174, 418, 73)
$Group1 = GUICtrlCreateGroup("Активное Окно", 16, 16, 305, 57)
$Input1 = GUICtrlCreateInput("Безымянный — Блокнот", 32, 40, 273, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Задержка(сек)", 16, 88, 305, 57)
$Input2 = GUICtrlCreateInput("1", 32, 112, 273, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Клавиша посыла", 328, 16, 129, 57)
$Input3 = GUICtrlCreateInput("F5", 344, 40, 97, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("ВКЛ\ВЫКЛ", 328, 88, 129, 57)
$Input4 = GUICtrlCreateInput("F1", 344, 112, 97, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
        Case $b1
            $Win = GUICtrlRead ($Input1)
            $Wait = GUICtrlRead ($Input2)
            $VarKey = GUICtrlRead ($Input3)
			$VarKey2 = GUICtrlRead ($Input4)
			AdlibRegister('Zkey')
		EndSwitch
	If $Autot = 1 then
	MyFuncSend()
EndIf			
WEnd


Func MyFuncSend()  
    Sleep($Wait * 1000)
    ControlSend($Win, "", "","{" & $VarKey & "}")
EndFunc


Func Zkey()
	
            HotKeySet('{' & $VarKey2 & '}', 'atk')
	
EndFunc



 Func atk() 
   If $Autot = 0 Then 
     $Autot = 1 
   Else 
     $Autot = 0 
   EndIf 
 EndFunc
 
Верх