Что нового

Как отследить изменение переменной в окне GUI

  • Автор темы at
  • Дата начала
A

at

Гость
Здравствуйте. Подскажите, как отследить изменение числа в окне GUI. Вопрос упаковал для наглядности в скрипт.

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ###

$vProgramma_2 = WinActive('Programma_2')
$vZhislo_Programma_2 = ControlGetText('Programma_2', '', '[CLASS:Static; INSTANCE:1]') ; число из программы 2 постоянно изменяется
$vProgramma_1 = GUICreate('Programma_1', 291, 423, 192, 113)
GUICtrlCreateGroup('', 0, 0, 289, 369)
$vMarker_1 = GUICtrlCreateLabel('Отображаем изменяемое число ', 8, 182, 270, 17)
$vMarker_2 = GUICtrlCreateLabel("   из окна 'Programma_2'    >>>", 8, 202, 270, 17)
$vOkno_Programmy_1 = GUICtrlCreateInput($vZhislo_Programma_2, 200, 192, 53, 21) ; здесь должно отображаться изменение числа из программы 2
GUICtrlCreateGroup('', -99, -99, 1, 1)
$vStatusBar1 = _GUICtrlStatusBar_Create($vProgramma_1)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

AdlibRegister('_Cycle001', 200)

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

Func _Cycle001()
	
    For $i = 5 to 1 Step -1
    MsgBox(0, 'Programma_2', $i)
    Next
        Exit
EndFunc
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ###

$vProgramma_2 = WinActive('Programma_2')
$vZhislo_Programma_2 = ControlGetText('Programma_2', '', '[CLASS:Static; INSTANCE:1]') ; число из программы 2 постоянно изменяется
$vProgramma_1 = GUICreate('Programma_1', 291, 423, 192, 113)
GUICtrlCreateGroup('', 0, 0, 289, 369)
$vMarker_1 = GUICtrlCreateLabel('Отображаем изменяемое число ', 8, 182, 270, 17)
$vMarker_2 = GUICtrlCreateLabel("   из окна 'Programma_2'    >>>", 8, 202, 270, 17)
$vOkno_Programmy_1 = GUICtrlCreateInput($vZhislo_Programma_2, 200, 192, 53, 21) ; здесь должно отображаться изменение числа из программы 2
GUICtrlCreateGroup('', -99, -99, 1, 1)
$vStatusBar1 = _GUICtrlStatusBar_Create($vProgramma_1)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

AdlibRegister('_Cycle001', 200)

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

Func _Cycle001()
    
    For $i = 5 to 1 Step -1
    GUICtrlSetData($vOkno_Programmy_1,$i)
    MsgBox(0, 'Programma_2', $i)
    Next
        Exit
EndFunc
 
Автор
A

at

Гость
:scratch:Приношу свои извинения, если не точно объяснил проблему. Ситуация немного иная. Я в своем скрипте попытался показать, что цикл - это другая программа. Иными словами разделим скрипт на две части. В окне Программы_1 должны отображаться любые изменения числа Программы_2.

Программа_1
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ###

$vProgramma_2 = WinActive('Programma_2')
$vZhislo_Programma_2 = ControlGetText('Programma_2', '', '[CLASS:Static; INSTANCE:1]') ; число из программы 2 постоянно изменяется
$vProgramma_1 = GUICreate('Programma_1', 291, 423, 192, 113)
GUICtrlCreateGroup('', 0, 0, 289, 369)
$vMarker_1 = GUICtrlCreateLabel('Отображаем изменяемое число ', 8, 182, 270, 17)
$vMarker_2 = GUICtrlCreateLabel("   из окна 'Programma_2'    >>>", 8, 202, 270, 17)
$vOkno_Programmy_1 = GUICtrlCreateInput($vZhislo_Programma_2, 200, 192, 53, 21) ; здесь должны отображаться изменение числа из программы 2
GUICtrlCreateGroup('', -99, -99, 1, 1)
$vStatusBar1 = _GUICtrlStatusBar_Create($vProgramma_1)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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


Программа_2
Код:
For $i = 5 to 1 Step -1
       MsgBox(0, 'Programma_2', $i)
    Next
 

VladUs

Скриптер
Сообщения
621
Репутация
181
at [?]
В окне Программы_1 должны отображаться любые изменения числа Программы_2.
1.Тогда нужен контрол Программы_2 в котором отображается число.
2.Считать данные с этого контрола
3.Записать данные в Программу_1
 

Zaramot

I ♥ AutoIt
Сообщения
1 160
Репутация
659
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ###

$vProgramma_2 = WinActive('Programma_2')
$vProgramma_1 = GUICreate('Programma_1', 291, 423, 192, 113)
GUICtrlCreateGroup('', 0, 0, 289, 369)
$vMarker_1 = GUICtrlCreateLabel('Отображаем изменяемое число ', 8, 182, 270, 17)
$vMarker_2 = GUICtrlCreateLabel("   из окна 'Programma_2'    >>>", 8, 202, 270, 17)
$vOkno_Programmy_1 = GUICtrlCreateInput($vZhislo_Programma_2, 200, 192, 53, 21) ; здесь должны отображаться изменение числа из программы 2
GUICtrlCreateGroup('', -99, -99, 1, 1)
$vStatusBar1 = _GUICtrlStatusBar_Create($vProgramma_1)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$vZhislo_Programma_2 = ControlGetText('Programma_2', '', '[CLASS:Static; INSTANCE:1]') ; число из программы 2 постоянно изменяется
	GUICtrlSetData($vOkno_Programmy_1, $vZhislo_Programma_2)
        $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
        Exit
    EndSwitch

WEnd
 
Автор
A

at

Гость
Тогда нужен контрол Программы_2...
Разве это не оно?

Код:
$vZhislo_Programma_2 = ControlGetText('Programma_2', '', '[CLASS:Static; INSTANCE:1]') ; число из программы 2 постоянно изменяется


Кстати, если добавить этот кусок в шапку предыдущего поста, то все работает отлично:

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ###
$vZhislo_Programma_2 = ControlGetText('Programma_2', '', '[CLASS:Static; INSTANCE:1]')
$vProgramma_2 = WinActive('Programma_2')
$vProgramma_1 = GUICreate('Programma_1', 291, 423, 192, 113)
GUICtrlCreateGroup('', 0, 0, 289, 369)
$vMarker_1 = GUICtrlCreateLabel('Отображаем изменяемое число ', 8, 182, 270, 17)
$vMarker_2 = GUICtrlCreateLabel("   из окна 'Programma_2'    >>>", 8, 202, 270, 17)
$vOkno_Programmy_1 = GUICtrlCreateInput($vZhislo_Programma_2, 200, 192, 53, 21) ; здесь должны отображаться изменение числа из программы 2
GUICtrlCreateGroup('', -99, -99, 1, 1)
$vStatusBar1 = _GUICtrlStatusBar_Create($vProgramma_1)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $vZhislo_Programma_2 = ControlGetText('Programma_2', '', '[CLASS:Static; INSTANCE:1]')
    GUICtrlSetData($vOkno_Programmy_1, $vZhislo_Programma_2)
        $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
        Exit
    EndSwitch

WEnd


Спасибо всем, за поддержку. Тема решена :beer:
 
Верх