Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Конфликт опции "GUIOnEventMode" и функции "GUIGetMsg" (http://forum.oszone.net/showthread.php?t=285677)

replerk1334 28-07-2014 17:15 2382328

Конфликт опции "GUIOnEventMode" и функции "GUIGetMsg"
 
Вложений: 1
Здравствуйте!
Я в autoit новичок поэтому знаю еще не много и во время написания своего скрипта у меня возникла проблема с которой я обращаюсь ко все гуру Autoit и надеюсь на понимание и помощь.
Проблема заключается в том что не работают кнопки в GUI , я выяснил причину и оказалось что это явление происходит когда включена опция "GUIOnEventMode" если же она выключена все работает кроме зависимых от этой опции функций .
Объясните мне как с этим разобраться чтобы работали и опция и функция или поправьте скрипт .
Также я добавил файл скрипта к теме (если нужно).
Версия Autoit 3.3.12.
Заранее спасибо!
Код:

Opt('GUIOnEventMode',1);Если режим GUIOnEventMode выключен (значение "0") то функция GUIGetMsg работает , а когда режим GUIOnEventMode включен (значение "1") кнопки не работают.
Opt('MustDeclareVars',1)
Opt('TrayIconDebug',1)
Opt('TrayIconHide',0)

#include <GUIConstantsEx.au3>

Global          $REStart, $but1,$but2,$GUI

$GUI=GUICreate('Тест', 459, 240)
$but1 = GUICtrlCreateButton("Скрыть окно ", 26, 155, 172, 25)
$but2 = GUICtrlCreateButton("Выход", 26, 195, 172, 25)
$REStart = GUICtrlCreateButton('Перезапуск', 20, 60, 100, 25)
GUICtrlSetOnEvent($REStart, '_ReStart')
GUISetState()

While 1
        Switch GUIGetMsg()
        Case $but1
            GUISetState(@SW_HIDE,$GUI)
                Case $but2
                        Exit
                Case $GUI_EVENT_CLOSE
                        Exit
    EndSwitch
WEnd

Func _ReStart()
        Local $sAutoIt_File = @TempDir & "\~Au3_ScriptRestart_TempFile.au3"
    Local $sRunLine, $sScript_Content, $hFile

    $sRunLine = @ScriptFullPath
    If Not @Compiled Then $sRunLine = @AutoItExe & ' /AutoIt3ExecuteScript ""' & $sRunLine & '""'
    If $CmdLine[0] > 0 Then $sRunLine &= ' ' & $CmdLineRaw

    $sScript_Content &= '#NoTrayIcon' & @CRLF
    $sScript_Content &= 'While ProcessExists(' & @AutoItPID & ')' & @CRLF
    $sScript_Content &= '  Sleep(10)' & @CRLF
    $sScript_Content &= 'WEnd' & @CRLF
    $sScript_Content &= 'Run("' & $sRunLine & '")' & @CRLF
    $sScript_Content &= 'FileDelete(@ScriptFullPath)' & @CRLF

    $hFile = FileOpen($sAutoIt_File, 2)
    FileWrite($hFile, $sScript_Content)
    FileClose($hFile)

        Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sAutoIt_File & '"', @ScriptDir, @SW_HIDE)
    Sleep(1000)
    Exit
EndFunc


Creat0R 28-07-2014 18:49 2382382

GUIOnEventMode несовместим с GUIGetMsg.

Код:

#include <GUIConstantsEx.au3>

Opt('GUIOnEventMode', 1)
Opt('MustDeclareVars', 1)
Opt('TrayIconDebug', 1)
Opt('TrayIconHide', 0)

Global $REStart, $but1, $but2, $GUI

$GUI = GUICreate('Тест', 459, 240)

$but1 = GUICtrlCreateButton("Скрыть окно ", 26, 155, 172, 25)
$but2 = GUICtrlCreateButton("Выход", 26, 195, 172, 25)
$REStart = GUICtrlCreateButton('Перезапуск', 20, 60, 100, 25)

GUISetOnEvent($GUI_EVENT_CLOSE, '_Events')
GUICtrlSetOnEvent($but1, '_Events')
GUICtrlSetOnEvent($but2, '_Events')
GUICtrlSetOnEvent($REStart, '_Events')

GUISetState()

While 1
    Sleep(10)
WEnd

Func _Events()
    Switch @GUI_CtrlId
        Case $GUI_EVENT_CLOSE, $but2
            Exit
        Case $but1
            GUISetState(@SW_HIDE, $GUI)
        Case $REStart
            _ReStart()
    EndSwitch
EndFunc

Func _ReStart()
    Local $sAutoIt_File = @TempDir & "\~Au3_ScriptRestart_TempFile.au3"
    Local $sRunLine, $sScript_Content, $hFile

    $sRunLine = @ScriptFullPath
    If Not @Compiled Then $sRunLine = @AutoItExe & ' /AutoIt3ExecuteScript ""' & $sRunLine & '""'
    If $CmdLine[0] > 0 Then $sRunLine &= ' ' & $CmdLineRaw

    $sScript_Content &= '#NoTrayIcon' & @CRLF
    $sScript_Content &= 'While ProcessExists(' & @AutoItPID & ')' & @CRLF
    $sScript_Content &= '  Sleep(10)' & @CRLF
    $sScript_Content &= 'WEnd' & @CRLF
    $sScript_Content &= 'Run("' & $sRunLine & '")' & @CRLF
    $sScript_Content &= 'FileDelete(@ScriptFullPath)' & @CRLF

    $hFile = FileOpen($sAutoIt_File, 2)
    FileWrite($hFile, $sScript_Content)
    FileClose($hFile)

    Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sAutoIt_File & '"', @ScriptDir, @SW_HIDE)
    Sleep(1000)
    Exit
EndFunc


replerk1334 28-07-2014 19:35 2382395

Creat0R, спасибо большое !!!!


Время: 04:52.

Время: 04:52.
© OSzone.net 2001-