Что нового

[Окна, Диалоги] Ввод данных в поле другой программы

DeloresI

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

Описание:

Суть программы такова: сидит запущенная в трее, ждет запуска окна "Блокнота" (для примера) пользователем, когда окно "Блокнота" появляется, программа стает @SW_SHOW, с помощью элеменов UpDown вносятся значения в поля ввода, потом по нажатию кнопки Button1 = "<--------- " значения полей ввода объеденяются с какими-то значениями в текстовую строку и вставляются в "Блокнот", потом после закрытия окна "Блокнота" пользователем, данные полей ввода и Label11 очищаются и программа опять сворачивается в трей и ждет следующего запуска окна "Блокнота" до закрытия самой программы.
В коде не реализованно сворачивание и очистка после закрытия "Блокнота", остальное вроде работает хоть и криво (наверное).
закомменченный код не убирал, мож пригодится
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

;$Ntpd = WinGetPos("[CLASS:Notepad]")
;$Form1 = GUICreate("d35", 105, 320, $Ntpd[0]+$Ntpd[2]+5, $Ntpd[1]+20)
;$Form1 = GUICreate("d35", 105, 298, 673, 186)
$Form1 = GUICreate("d35", 105, 320, 673, 186)

$Label1= GUICtrlCreateLabel("Mark1", 6, 10, 39, 17, $WS_BORDER)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Mark2", 6, 42, 39, 17, $WS_BORDER)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Mark3", 6, 74, 39, 17, $WS_BORDER)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Mark4", 6, 106, 39, 17, $WS_BORDER)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label5 = GUICtrlCreateLabel("Mark5", 6, 138, 39, 17, $WS_BORDER)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label6 = GUICtrlCreateLabel("Mark6", 6, 170, 39, 17, $WS_BORDER)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label7 = GUICtrlCreateLabel("Mark7", 6, 202, 39, 17, $WS_BORDER)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")

$Input1 = GUICtrlCreateInput("", 51, 8, 41, 21)
GUICtrlCreateUpdown($Input1)
GUICtrlSetLimit(-1, 30, 0)
$Input2 = GUICtrlCreateInput("", 51, 40, 41, 21)
GUICtrlCreateUpdown($Input2)
GUICtrlSetLimit(-1, 30, 0)
$Input3 = GUICtrlCreateInput("", 51, 72, 41, 21)
GUICtrlCreateUpdown($Input3)
GUICtrlSetLimit(-1, 30, 0)
$Input4 = GUICtrlCreateInput("", 51, 104, 41, 21)
GUICtrlCreateUpdown($Input4)
GUICtrlSetLimit(-1, 30, 0)
$Input5 = GUICtrlCreateInput("", 51, 136, 41, 21)
GUICtrlCreateUpdown($Input5)
GUICtrlSetLimit(-1, 30, 0)
$Input6 = GUICtrlCreateInput("", 51, 168, 41, 21)
GUICtrlCreateUpdown($Input6)
GUICtrlSetLimit(-1, 30, 0)
$Input7 = GUICtrlCreateInput("", 51, 200, 41, 21)
GUICtrlCreateUpdown($Input7)
GUICtrlSetLimit(-1, 30, 0)

$Button1 = GUICtrlCreateButton("<---------", 8, 232, 59, 33)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("c", 75, 232, 19, 33)
;Global $Label11 = GUICtrlCreateLabel("xxxxxx", 8, 280, 80, 17)
$Label11 = GUICtrlCreateLabel("xxxxxx", 8, 280, 80, 120)

;WinWaitClose("[CLASS:Notepad]")
GUISetState(@SW_MINIMIZE)
WinWait("[CLASS:Notepad]")
GUISetState(@SW_SHOW)

;While Sleep(10)
   ;If WinWaitActive("[CLASS:Notepad]") Then
   ;GUISetState(@SW_SHOW)
   ;Else
   ;GUISetState(@SW_MINIMIZE)
   ;EndIf
;Wend

;While WinClose("[CLASS:Notepad]")
;GUISetState(@SW_MINIMIZE)
;Wend


While 1
	$nMsg = GUIGetMsg()
		Switch $nMsg
		 Case $GUI_EVENT_CLOSE
			Exit
		 Case $GUI_EVENT_MINIMIZE
			cleer()
		 Case $Button2
			cleer()
		 Case $Button1
			spleet()
		 ;Case WinWaitActive("[CLASS:Notepad]") = 1
			;GUISetState(@SW_SHOW)
		 ;Case WinWaitClose("[CLASS:Notepad]") = 1
			;GUISetState(@SW_MINIMIZE)
		 ;ExitLoop
		 EndSwitch
WEnd

;While 2
	;$mMsg = GUIGetMsg()
		;Switch $mMsg
		 ;Case $GUI_EVENT_CLOSE
			;Exit
		 ;Case WinWaitClose("[CLASS:Notepad]")
			;GUISetState(@SW_MINIMIZE)
			;cleer()
		 ;EndSwitch
;WEnd

Func cleer()
   GUICtrlSetData($Input1,"")
   GUICtrlSetData($Input2,"")
   GUICtrlSetData($Input3,"")
   GUICtrlSetData($Input4,"")
   GUICtrlSetData($Input5,"")
   GUICtrlSetData($Input6,"")
   GUICtrlSetData($Input7,"")
   GUICtrlSetData($Label11,"")
EndFunc

Func spleet()
   ;$a = GUICtrlRead($Input1)
   ;$b = GUICtrlRead($Input2)
   ;$c = GUICtrlRead($Input3)
   ;$d = GUICtrlRead($Input4)
   ;$e = GUICtrlRead($Input5)
   ;$f = GUICtrlRead($Input6)
   ;$g = GUICtrlRead($Input7)

   ;$dl = 'A-' & GUICtrlRead($Input1) & ' B-' & GUICtrlRead($Input2) & ' C-' & GUICtrlRead($Input3) & ' D-' & GUICtrlRead($Input4) & ' E-' & GUICtrlRead($Input5) & ' F-' & GUICtrlRead($Input6) & ' G-' & GUICtrlRead($Input7) ;@CRLF
   ;GUICtrlSetData($Label11, $dl)
   $dl = '1' & GUICtrlRead($Input1) & '2' & GUICtrlRead($Input2) & '3' & GUICtrlRead($Input3) & '4' & GUICtrlRead($Input4) & '5' & GUICtrlRead($Input5) & '6' & GUICtrlRead($Input6) & '7' & GUICtrlRead($Input7) ;@CRLF
   GUICtrlSetData($Label11, $dl)
   ;ClipPut($dl)
   ;Sleep(2000)
   ControlSend("[CLASS:Notepad]", "", "Edit1", $dl)
EndFunc

;WinWaitClose("[CLASS:Notepad]")
;GUISetState(@SW_MINIMIZE)


Примечания:
Желательно чтобы после вставки данных в блокнот его окно становилось активным;
Форма создавалась/разворачивалась рядом с окном блокнота, в 7-8 строчке кода есть рабочая реализация для создания но не для разворачивания/отображения;
И еще чтобы текст Label1 .. 7 брался с ini файла и записывался туда перед закрытием.
Все это не критично, главное, что бы основной функционал работал.
Это мой первый опыт с AutoIt)
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
DeloresI [?]
И еще чтобы текст Label1 .. 7 брался с ini файла и записывался туда перед закрытием.

Зачем записывать данные которые ниразу не изменяются? Может быть вы имели ввиду $Input1-7?
 
Автор
D

DeloresI

Новичок
Сообщения
2
Репутация
0
Tempo сказал(а):
Зачем записывать данные которые ниразу не изменяются? Может быть вы имели ввиду $Input1-7?
данные с которыми будут объединятся $Input1-7 (
Код:
$dl = '1' & GUICtrlRead($Input1) & '2' & GUICtrlRead($Input2) & '3'...
), будут менятся раз в месяц, думаю потом заменить $Label1 .. 7 на $Input8-14 и с них брать данные для объединения, но что бы не вводить эти значения в $Input8-14 каждый день можно было бы сохранять их значения, эта мысль пришла только от вчера.
 
Верх