Автор Тема: [Окна, Диалоги] Ввод данных в поле другой программы  (Прочитано 379 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DeloresI [?]

  • Новичок
  • *
  • Сообщений: 2
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.3.14.3

Описание:

Суть программы такова: сидит запущенная в трее, ждет запуска окна "Блокнота" (для примера) пользователем, когда окно "Блокнота" появляется, программа стает @SW_SHOW, с помощью элеменов UpDown вносятся значения в поля ввода, потом по нажатию кнопки Button1 = "<--------- " значения полей ввода объеденяются с какими-то значениями в текстовую строку и вставляются в "Блокнот", потом после закрытия окна "Блокнота" пользователем, данные полей ввода и Label11 очищаются и программа опять сворачивается в трей и ждет следующего запуска окна "Блокнота" до закрытия самой программы.
В коде не реализованно сворачивание и очистка после закрытия "Блокнота", остальное вроде работает хоть и криво (наверное).
закомменченный код не убирал, мож пригодится
Код: AutoIt [Выделить]
#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)

Русское сообщество AutoIt


Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 393
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
DeloresI  [?]
Цитировать
И еще чтобы текст Label1 .. 7 брался с ini файла и записывался туда перед закрытием.

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

Оффлайн DeloresI [?]

  • Новичок
  • *
  • Сообщений: 2

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Зачем записывать данные которые ниразу не изменяются? Может быть вы имели ввиду $Input1-7?
данные с которыми будут объединятся $Input1-7 (
Код: AutoIt [Выделить]
$dl = '1' & GUICtrlRead($Input1) & '2' & GUICtrlRead($Input2) & '3'...

), будут менятся раз в месяц, думаю потом заменить $Label1 .. 7 на $Input8-14 и с них брать данные для объединения, но что бы не вводить эти значения в $Input8-14 каждый день можно было бы сохранять их значения, эта мысль пришла только от вчера.

Русское сообщество AutoIt

Re: [Окна, Диалоги] Ввод данных в поле другой программы
« Ответ #2 Отправлен: Март 23, 2018, 09:22:20 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
3577 Просмотров
Последний ответ Апрель 22, 2012, 21:55:03
от Woland_D
2 Ответов
2443 Просмотров
Последний ответ Май 02, 2013, 07:14:25
от Vlasssov
16 Ответов
6037 Просмотров
Последний ответ Ноябрь 16, 2013, 19:45:36
от valdur2000
9 Ответов
5693 Просмотров
Последний ответ Март 19, 2014, 21:20:31
от alex33
0 Ответов
728 Просмотров
Последний ответ Ноябрь 26, 2014, 09:48:23
от Crusaderman
8 Ответов
4911 Просмотров
Последний ответ Май 05, 2015, 13:35:48
от madmasles
0 Ответов
993 Просмотров
Последний ответ Май 05, 2015, 14:05:31
от madmasles
5 Ответов
611 Просмотров
Последний ответ Июнь 19, 2017, 19:25:37
от InnI
6 Ответов
680 Просмотров
Последний ответ Сентябрь 16, 2017, 05:22:39
от lixar21
2 Ответов
358 Просмотров
Последний ответ Ноябрь 06, 2017, 18:23:15
от Boolinteg