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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Изменить текст кнопки MSGBOX'a (http://forum.oszone.net/showthread.php?t=157576)

sashadeg 19-11-2009 09:06 1274223

Изменить текст кнопки MSGBOX'a
 
Здраствуйте. Нужно изменить текст кнопки Отмена в msgbox'e который вылазит после подключения с интернетом.

8 и 21 строка кода - это тот самый msgbox
Вот код программы:
Код:

Opt("TrayAutoPause", 0)
TrayTip("The Internet is Сonnected? v.1.3.beta", "Подождите...", 5, 1)
$var = Ping("www.google.com")

;------------------------------------------------------------------------------------------

If $var<> 0 Then
    MsgBox(65, "The Internet is Сonnected?", "Все в порядке, Интрернет работает :)"& @CRLF &"Время подключения:  " & @hour &":"& @min &":"&@sec)
    Exit
Else

    $1=_MsgBoxTimer(36, 'The Internet is Сonnected? v.1.3.beta',"К сожалению, сейчас Интернет не подключен :(" & @CRLF & "Сообщить, если Интернет будет работать?", 5)
EndIf

;------------------------------------------------------------------------------------------

If $1 <> 7 Then
    TrayTip("The Internet is Сonnected? v.1.3.beta","Программа ожидает подключения сети Интернет...", 7, 1)
    While 1
        $var = Ping("www.google.com")
            If $var <> 0 Then
                MsgBox(65, "The Internet is Сonnected? v.1.3.beta", "Все в порядке, Интрернет работает :)"& @CRLF &"Время подключения:  " & @hour &":"& @min &":"&@sec)
            Exit
            EndIf

    sleep(500)
    WEnd
Else

    TrayTip("The Internet is Сonnected? v.1.3.beta","Bye-bye!!!", 3, 1)
    Sleep(3000)
EndIf

Func
_MsgBoxTimer($iFlag, $sTitle, $sText, $iMBTimeOut = 0, $hWnd = 0)
    Local $hFile, $sMBLine, $sSet_Text, $iRet
    $sMBLine
= '#NoTrayIcon' & @CRLF
    $sMBLine &= '$h_Title = WinGetHandle("' & $sTitle & '")' & @CRLF
    $sMBLine &= 'Opt("WinWaitDelay", 1)' & @CRLF
    $sMBLine &= 'While Not WinExists($h_Title)' & @CRLF
    $sMBLine &= '    Sleep(10)' & @CRLF
    $sMBLine &= 'WEnd' & @CRLF

    If $iMBTimeOut > 0 Then
        $sMBLine &= _
                '$sButtonText = ControlGetText($h_Title, "", "Button1")' & @CRLF & _
                'ControlSetText($h_Title, "", "Button1", $sButtonText & " (' & $iMBTimeOut & ')")' & @CRLF & _
                '$TimerInit = TimerInit()' & @CRLF & _
                '$iTime = ' & $iMBTimeOut & @CRLF & _
                'While $iTime > 0' & @CRLF & _
                '  If Not WinExists($h_Title) Then ExitLoop' & @CRLF & _
                '  $sButtonText = StringRegExpReplace(ControlGetText($h_Title, "", "Button1"), " \(\d+\)$", "")' & @CRLF & _
                '  ControlSetText($h_Title, "", "Button1", $sButtonText & " (" & $iTime & ")")' & @CRLF & _
                '  If Not WinExists($h_Title) Then ExitLoop' & @CRLF & _
                '  Sleep(1000)' & @CRLF & _
                '  If Not WinExists($h_Title) Then ExitLoop' & @CRLF & _
                '  $iTime -= 1' & @CRLF & _
                'WEnd'
    EndIf
    $hFile = FileOpen(@TempDir & '\MiscMMB.tmp', 2)
    FileWrite($hFile, $sMBLine)
    FileClose($hFile)

    Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & @TempDir & '\MiscMMB.tmp"')
    $iRet = MsgBox($iFlag, $sTitle, StringFormat($sText, $iMBTimeOut), $iMBTimeOut)

    While FileExists(@TempDir & '\MiscMMB.tmp')
        FileDelete(@TempDir & '\MiscMMB.tmp')
    WEnd

    Return
$iRet
EndFunc  ;==>_MsgBoxTimer


Creat0R 19-11-2009 10:10 1274288

Что это? Пример, или тут есть скрытый вопрос? :)

sashadeg 19-11-2009 10:35 1274313

Ой, простите пожалуйста... Почему то не вывелся текст сообщения, щас исправлю

оффтоп лично Creatory
Creator, ты входишь в состав команды MultiAC???Я даже подумать не мог, что на этом форуме увижу ТАКИХ ЛЮДЕЙ!!! РЕСПЕКТ И УВАЖУХА!!!!

beve 19-11-2009 13:23 1274535

Цитата:

Цитата sashadeg
Нужно изменить текст кнопки Отмена в msgbox'e который вылазит после подключения с интернетом. »

А по аналогии с функцией _MsgBoxTimer() почему не попробовал сделать? Вот такая функция:
читать дальше »
Код:

Func _MsgBoxSetButtonText($sTitleOfMsgbox)
 
Local  $sMBLineTmp, $hFileTmp,$NewNameOfButton="Закрыть"
   
$sMBLineTmp = '#NoTrayIcon' & @CRLF
   
$sMBLineTmp &= '$h_Title = WinGetHandle("' & $sTitleOfMsgbox & '")' & @CRLF
   
$sMBLineTmp &= 'Opt("WinWaitDelay", 1)' & @CRLF
   
$sMBLineTmp &= 'While Not WinExists($h_Title)' & @CRLF
   
$sMBLineTmp &= '    Sleep(10)' & @CRLF
   
$sMBLineTmp &= 'WEnd' & @CRLF

   
$sMBLineTmp &= _
               
'$sButtonText = ControlGetText($h_Title, "", "Button2")' & @CRLF & _
               
'ControlSetText($h_Title, "", "Button2", "'&$NewNameOfButton & '")' & @CRLF & _
               
'Exit'
   
$hFileTmp = FileOpen(@TempDir & '\Tmp.tmp', 2)
   
FileWrite($hFileTmp, $sMBLineTmp)
   
FileClose($hFileTmp)
   
Run(
@AutoItExe & ' /AutoIt3ExecuteScript "' & @TempDir & '\Tmp.tmp"')
EndFunc 
;==>_MsgBoxSetButtonText

Если вставиш вызов этой функции перед твоим msgbox-oм, то будет почти то что нужно (только жалко вот что почти...)

sashadeg 19-11-2009 14:10 1274613

вставляю... и как раз твоё почти тут и происходит (вылетает с ошибкой)

FlatX007 19-11-2009 16:04 1274776

Вложений: 1
Да, что вы как любите проблемы создавать ... да "нарисуй" в Koda любое окошко с любыми кнопками и любым текстом.

Вот я себе делал функцию для MsgBox`ов ... различает 8 флагов (16, 17, 32, 33, 48, 49, 64, 65), + таймер в резальтате получается вот, что ... смотри присоединённый файл.

Если нужно соберу рабочий пример (скрипт, картинки, Upx, ResHacker...)

FlatX007 19-11-2009 17:30 1274867

Вложений: 1
Короче вот ...если что нетак необижатса :), времени не было совсем.

Незабываем накидать в папку Utilities - EXEшнички, скачать можно по ссылкам из моей подписи. (всё вместе не уместилось в присоединённый файл)

sashadeg 19-11-2009 18:32 1274923

FlatX007, спасибо большое... хорошие фунуции. НО.
То что у тебя это все очень сложно... тем более у тебя эти функции используют сторониие скрипты...

Сам смысл всей этой темы (и предыдущей которую я создавал) - уместить все в 1 скрипт
Я думаю найдется умелец, который сможет изменить код (см первый пост) чтобы текст кнопки "Отмена" можно было изменить на любой другой...

beve 19-11-2009 19:21 1274949

Цитата:

Цитата sashadeg
вставляю... и как раз твоё почти тут и происходит (вылетает с ошибкой) »

Значит не так вставляеш. А нужно бы уже научится. Мое "почти" значит то, что после появления твоего окна, текст на кнопке Отмена изменяется через несколько милисикунд, и это заметно.

FlatX007 19-11-2009 19:35 1274967

Цитата:

Цитата sashadeg
уместить все в 1 скрипт »

- так при запуске и будет один рабочий "скрипт" :),(никаких других сторонних, создаваемых, процессов) в чём проблема непонимаю.

В первом посте получается 2 процесса!

sashadeg 19-11-2009 19:38 1274971

Цитата:

Цитата beve
Значит не так вставляеш. »

Я вставляю перед строчкой
Код:

MsgBox(65, "The Internet is Сonnected?", "Все в порядке, Интрернет работает :)"& @CRLF &"Время подключения:  " & @hour &":"& @min &":"&@sec)

sashadeg 20-11-2009 12:53 1275569

beve, что я не правельно делаю???

beve 20-11-2009 13:04 1275577

Цитата:

что я не правельно делаю?
Проверь:
читать дальше »
Код:

Opt("TrayAutoPause", 0)
TrayTip("The Internet is Сonnected? v.1.3.beta", "Подождите...", 5, 1)
$var =
Ping("www.google.com")

;------------------------------------------------------------------------------------------

If $var<> 0 Then
 
_MsgBoxSetButtonText("The Internet is Сonnected?")
   
MsgBox(65, "The Internet is Сonnected?", "Все в порядке, Интрернет работает :)"& @CRLF &"Время подключения:  " & @hour &":"& @min &":"&@sec)
   
Exit
Else
   
$1=
_MsgBoxTimer(36, 'The Internet is Сonnected? v.1.3.beta',"К сожалению, сейчас Интернет не подключен :(" & @CRLF & "Сообщить, если Интернет будет работать?", 5)
EndIf

;------------------------------------------------------------------------------------------

If $1 <> 7 Then
   
TrayTip("The Internet is Сonnected? v.1.3.beta","Программа ожидает подключения сети Интернет...", 7, 1)
   
While 1
       
$var =
Ping("www.google.com")
           
If $var <> 0 Then
           
_MsgBoxSetButtonText("The Internet is Сonnected? v.1.3.beta")
               
MsgBox(65, "The Internet is Сonnected? v.1.3.beta", "Все в порядке, Интрернет работает :)"& @CRLF &"Время подключения:  " & @hour &":"& @min &":"&@sec)
           
Exit
            EndIf
   
sleep(500)
   
WEnd
Else
   
TrayTip("The Internet is Сonnected? v.1.3.beta","Bye-bye!!!", 3, 1)
   
Sleep(3000)
EndIf

Func
_MsgBoxTimer($iFlag, $sTitle, $sText, $iMBTimeOut = 0, $hWnd = 0)
   
Local $hFile, $sMBLine, $sSet_Text, $iRet
    $sMBLine
= '#NoTrayIcon' & @CRLF
   
$sMBLine &= '$h_Title = WinGetHandle("' & $sTitle & '")' & @CRLF
   
$sMBLine &= 'Opt("WinWaitDelay", 1)' & @CRLF
   
$sMBLine &= 'While Not WinExists($h_Title)' & @CRLF
   
$sMBLine &= '    Sleep(10)' & @CRLF
   
$sMBLine &= 'WEnd' & @CRLF

   
If $iMBTimeOut > 0 Then
       
$sMBLine &= _
               
'$sButtonText = ControlGetText($h_Title, "", "Button1")' & @CRLF & _
               
'ControlSetText($h_Title, "", "Button1", $sButtonText & " (' & $iMBTimeOut & ')")' & @CRLF & _
               
'$TimerInit = TimerInit()' & @CRLF & _
               
'$iTime = ' & $iMBTimeOut & @CRLF & _
               
'While $iTime > 0' & @CRLF & _
               
'  If Not WinExists($h_Title) Then ExitLoop' & @CRLF & _
               
'  $sButtonText = StringRegExpReplace(ControlGetText($h_Title, "", "Button1"), " \(\d+\)$", "")' & @CRLF & _
               
'  ControlSetText($h_Title, "", "Button1", $sButtonText & " (" & $iTime & ")")' & @CRLF & _
               
'  If Not WinExists($h_Title) Then ExitLoop' & @CRLF & _
               
'  Sleep(1000)' & @CRLF & _
               
'  If Not WinExists($h_Title) Then ExitLoop' & @CRLF & _
               
'  $iTime -= 1' & @CRLF & _
               
'WEnd'
   
EndIf
   
$hFile = FileOpen(@TempDir & '\MiscMMB.tmp', 2)
   
FileWrite($hFile, $sMBLine)
   
FileClose($hFile)

   
Run(
@AutoItExe & ' /AutoIt3ExecuteScript "' & @TempDir & '\MiscMMB.tmp"')
   
$iRet = MsgBox($iFlag, $sTitle, StringFormat($sText, $iMBTimeOut), $iMBTimeOut)

   
While FileExists(@TempDir & '\MiscMMB.tmp')
       
FileDelete(@TempDir & '\MiscMMB.tmp')
   
WEnd

    Return
$iRet
 
EndFunc 
;==>_MsgBoxTimer
 
 
 
 
 
Func _MsgBoxSetButtonText($sTitleOfMsgbox)
 
Local  $sMBLineTmp, $hFileTmp,$NewNameOfButton="Закрыть"
   
$sMBLineTmp = '#NoTrayIcon' & @CRLF
   
$sMBLineTmp &= '$h_Title = WinGetHandle("' & $sTitleOfMsgbox & '")' & @CRLF
   
$sMBLineTmp &= 'Opt("WinWaitDelay", 1)' & @CRLF
   
$sMBLineTmp &= 'While Not WinExists($h_Title)' & @CRLF
   
$sMBLineTmp &= '    Sleep(10)' & @CRLF
   
$sMBLineTmp &= 'WEnd' & @CRLF

   
$sMBLineTmp &= _
               
'$sButtonText = ControlGetText($h_Title, "", "Button2")' & @CRLF & _
               
'ControlSetText($h_Title, "", "Button2", "'&$NewNameOfButton & '")' & @CRLF & _
               
'Exit'
   
$hFileTmp = FileOpen(@TempDir & '\Tmp.tmp', 2)
   
FileWrite($hFileTmp, $sMBLineTmp)
   
FileClose($hFileTmp)
   
Run(
@AutoItExe & ' /AutoIt3ExecuteScript "' & @TempDir & '\Tmp.tmp"')
EndFunc 
;==>_MsgBoxSetButtonText


sashadeg 20-11-2009 18:00 1275850

Цитата:

Цитата beve
после появления твоего окна, текст на кнопке Отмена изменяется через несколько милисикунд, и это заметно. »

Странно... у меня совсем ничего не заметно... или у меня комп шустрый... Ну всё равно спасибо огромное!


Время: 08:02.

Время: 08:02.
© OSzone.net 2001-