Что нового

[Сеть] ICQ & MRA Status Viewer/Logger

Dark-Side

Знающий
Сообщения
72
Репутация
17
AutoIt: 3.3.6.1
Версия: 05/13/2010
Категория: Сеть
Описание: Проверяет статус Мэйл Агента и ICQ. Может проверять один раз - по запросу, может проверять бесконечное количество раз, опционально ведя лог смены статусов Мэйл Агента и/или ICQ с опциональной выдачей сообщения о смене статуса в трее.
Проверяет только один ICQ и/или один Мэйл Агент.

Код:
Код:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.6.1
 Author:         Makc
 Date:			 05/13/10

#ce ----------------------------------------------------------------------------

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <Date.au3>

Opt("TrayMenuMode", 3)

Global $sl_Invisible
Global $MRA, $ICQ
Global $StartTime, $Pause = True, $PauseTime = 0
Global $MRAStatus = "", $MRAStatusOld = ""
Global $ICQStatus = "", $ICQStatusOld = ""
Global $Invisible
Global $in_MRA_Old, $in_ICQ_Old
Global $MRAError = 0, $ICQError = 0
Global $Run = False, $Hide = False

Global $version = 1, $version_

Global $ini = "settings.ini"
Global $log = "log.txt"

Global $hImageList, $sOld_Opt_GRM = Opt("GUIResizeMode", $GUI_DOCKALL)

Global $iGUI_Height = 86

; Для выравнивания окна по центру
Global $_x = @DesktopWidth / 2, $_y = @DesktopHeight / 2

$Main = GUICreate("Status Viewer", 163, $iGUI_Height, $_x - 163/2, $_y - 86/2, -1, $WS_EX_TOOLWINDOW)
$gr_StatusViewer = GUICtrlCreateGroup("Status Viewer", 5, 0, 153, 65)
$lb_MRAInf = GUICtrlCreateLabel("", 35, 16, 84, 17)
$lb_ICQInf = GUICtrlCreateLabel("", 35, 40, 84, 17)
$bt_RefMRA = GUICtrlCreateButton("?", 131, 16, 19, 17, 0)
GUICtrlSetFont(-1, 7, 400, 0, "Small Fonts")
$bt_RefICQ = GUICtrlCreateButton("?", 131, 40, 19, 17, 0)
GUICtrlSetFont(-1, 7, 400, 0, "Small Fonts")
GUICtrlCreateGroup("", -99, -99, 1, 1)

$bt_Tray = GUICtrlCreateButton("Tray", 19, 68, 26, 16)
GUICtrlSetFont(-1, 7, 400, 0, "Small Fonts")
$bt_Settings = GUICtrlCreateButton("Settings", 48, 68, 42, 16)
GUICtrlSetFont(-1, 7, 400, 0, "Small Fonts")
$bt_Pause = GUICtrlCreateButton("Pause", 93, 68, 34, 16)
GUICtrlSetFont(-1, 7, 400, 0, "Small Fonts")
$bt_Start = GUICtrlCreateButton("Start", 130, 68, 30, 16)
GUICtrlSetFont(-1, 7, 400, 0, "Small Fonts")
$lb_Time = GUICtrlCreateLabel("", 2, 70, 15, 10)
GUICtrlSetFont(-1, 7, 400, 0, "Small Fonts")

$gr_Settings = GUICtrlCreateGroup("Settings", 5, 88, 153, 153)
$lb_MRA = GUICtrlCreateLabel("MRA:", 11, 105, 31, 17)
$in_MRA = GUICtrlCreateInput("", 43, 104, 82, 17)
$cb_MRA = GUICtrlCreateCheckbox("", 131, 104, 17, 17)
$lb_ICQ = GUICtrlCreateLabel("ICQ:", 11, 128, 25, 17)
$in_ICQ = GUICtrlCreateInput("", 43, 128, 82, 17)
$cb_ICQ = GUICtrlCreateCheckbox("", 131, 128, 17, 17)
$lb_Check = GUICtrlCreateLabel("Check every", 11, 152, 64, 17)
$in_Check = GUICtrlCreateInput("", 78, 152, 25, 17)
$lb_Seconds = GUICtrlCreateLabel("seconds", 108, 152, 44, 17)
$cb_Log = GUICtrlCreateCheckbox("Log?", 11, 176, 65, 17)
$cb_Notice = GUICtrlCreateCheckbox("Notice?", 11, 192, 65, 17)
$lb_Transparency = GUICtrlCreateLabel("Transparency", 81, 176, 69, 17)
$sl_Invisible = GUICtrlCreateSlider(83, 188, 62, 21)
GUICtrlSetLimit(-1, 254, 0)
$bt_OpenLog = GUICtrlCreateButton("Open Log", 11, 216, 58, 17, 0)
$bt_Save = GUICtrlCreateButton("Save", 99, 216, 51, 17, 0)
GUICtrlCreateGroup("", -99, -99, 1, 1)

Opt("GUIResizeMode", $sOld_Opt_GRM)

If $cmdline[0] <> 0 Then
	For $i = 1 To $cmdline[0]
		Switch $cmdline[$i]
			Case "-hide"
				GUISetState(@SW_HIDE, $Main)
				$Hide = True

			Case "-mra"
				GUICtrlSetState($cb_MRA, $GUI_CHECKED)											; Пометить чекбокс mra
				If ($i+1) <= $cmdline[0] Then													; Если далее есть продолжение
					If StringRegExp($cmdline[$i+1], '@(mail)?(list)?(bk)?(inbox)?\.ru') Then 	; Если это e-mail
						GUICtrlSetData($in_MRA, $cmdline[$i+1])									; Установить его
						GUICtrlSetData($lb_MRAInf, $cmdline[$i+1])
						$i += 1
					EndIf
				EndIf
				$Run = True

			Case "-icq"																			;
				GUICtrlSetState($cb_ICQ, $GUI_CHECKED)											; Пометить чекбокс icq
				If ($i+1) <= $cmdline[0] Then													; Если далее есть продолжение
					If IsInt(Number($cmdline[$i+1])) Then 										; Если это число
						GUICtrlSetData($in_ICQ, $cmdline[$i+1])									; Установить его
						GUICtrlSetData($lb_ICQInf, $cmdline[$i+1])
						$i += 1
					EndIf
				EndIf
				$Run = True

			Case "-notice"
				If ($i+1) <= $cmdline[0] Then
					If $cmdline[$i+1] = "on" Then GUICtrlSetState($cb_Notice, $GUI_CHECKED)
					If $cmdline[$i+1] = "off" Then GUICtrlSetState($cb_Notice, $GUI_UNCHECKED)
					$i +=1
				EndIf

			Case "-log"
				If ($i+1) <= $cmdline[0] Then
					If $cmdline[$i+1] = "on" Then GUICtrlSetState($cb_Log, $GUI_CHECKED)
					If $cmdline[$i+1] = "off" Then GUICtrlSetState($cb_Log, $GUI_UNCHECKED)
					$i +=1
				EndIf

			Case "-check"
				If ($i+1) <= $cmdline[0] Then
					If IsInt(Number($cmdline[$i+1])) Then GUICtrlSetData($in_Check, $cmdline[$i+1])
					$i +=1
				EndIf
			Case "-standard"
				_Load ()

			Case "-run"
				$Run = True
		EndSwitch
	Next
Else
	ConsoleWrite("Доступные параметры командной строки:" & @CRLF & @CRLF)
	ConsoleWrite(@TAB & "-hide" & @TAB & @TAB & "запускает программу в свернутом режиме")
	ConsoleWrite(@TAB & "-icq [icq_id]"& @TAB & "ставит галочку у icq и если указан icq_id, вносит его в поле")
	ConsoleWrite(@TAB & "-mra [mra_id]"& @TAB & "ставит галочку у mra и если указан mra_id, вносит его в поле")
	ConsoleWrite(@TAB & "-check {number}"& @TAB & "частота проверки")
	ConsoleWrite(@TAB & "-log {on|off}"& @TAB & "включить/выключить ведение лога")
	ConsoleWrite(@TAB & "-notice {on|off}"& @TAB & "включить/выключить вывод сообщений")
	_Load ()
EndIf

If Not $Hide Then GUISetState(@SW_SHOW)

$aboutitem = TrayCreateItem("About")
TrayCreateItem("")
$exititem = TrayCreateItem("Exit")
TraySetClick(16)

TraySetState()




While 1

	$msg = TrayGetMsg()
	Select
		Case $msg = $aboutitem
			_AboutGUI("About Info", "Status Viewer", "Program version: v" & @LF & $version, "Copyright © " & @YEAR & " Makc. " & @LF & "All rights reserved." , _
					$Main, @AutoItExe, 0x0000FF, 0xFFFFFF, 200, 100, $_x - 200/2, $_y - 100/2)
		Case $msg = $exititem
			_Exit ()
		Case $msg = $TRAY_EVENT_PRIMARYUP
			_Focus ()
	EndSelect


	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			_Exit ()

		Case $bt_Settings
			_Toggle_ExpandControls_Proc($Main, $iGUI_Height, $iGUI_Height+153)
		Case $bt_Save
			_SaveAndLoad ()
		Case $bt_Pause
			if (not $Pause) then _Pause ()
		Case $bt_RefMRA
			_Run ("MRA", 0)
		Case $bt_RefICQ
			_Run ("ICQ", 0)
		Case $bt_Start
			_WhatToRun ()
		Case $bt_Tray
			GUISetState(@SW_HIDE, $Main)
		Case $bt_OpenLog
			_OpenLog ()
		Case $sl_Invisible
			_Invisible ()
	EndSwitch
	If $Run Then
		_WhatToRun ()
		$Run = False
	EndIf
	; Если цикл проверки запущен,
	If ($Pause = False) Then
		$SecElapsed = (TimerDiff($StartTime)- $PauseTime)/1000
		; Если текущее время не равно уже показаному в GUI, то обновить время в GUI
		If (GUICtrlRead($lb_Time) <> Round(GUICtrlRead($in_Check) - $SecElapsed)) Then GUICtrlSetData ($lb_Time, Round(GUICtrlRead($in_Check) - $SecElapsed))
		; Если текущее время меньше либо равно тому, что указано в интервалах обновления - запустить обновление
		If (($SecElapsed + 1) >= GUICtrlRead($in_Check)) Then _WhatToRun ()
	EndIf

	; Вывод в Lable вводимый в реальном времени текст из Input

	If GUICtrlRead($in_MRA) <> $in_MRA_Old	Then
		GUICtrlSetData($lb_MRAInf, GUICtrlRead($in_MRA))
		$in_MRA_Old = GUICtrlRead($in_MRA)
	EndIf

	If GUICtrlRead($in_ICQ) <> $in_ICQ_Old	Then
		GUICtrlSetData($lb_ICQInf, GUICtrlRead($in_ICQ))
		$in_ICQ_Old = GUICtrlRead($in_ICQ)
	EndIf

WEnd


; Вызворачивание окна

Func _Toggle_ExpandControls_Proc($hWnd, $iInitWndHeight, $iExpndHeight)
    Local $iHeight, $sButtonText, $aSysCaptMetrics, $aSysBordMetrics

    Local Const $SM_CYCAPTION       = 4
    Local Const $SM_CXFIXEDFRAME    = 7

    $aSysCaptMetrics = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', $SM_CYCAPTION)
    $aSysBordMetrics = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', $SM_CXFIXEDFRAME)

    $aGuiPos = WinGetPos($hWnd)

    If $aGuiPos[3] > $iExpndHeight + $aSysCaptMetrics[0] Then

        $iHeight = $iInitWndHeight + $aSysCaptMetrics[0] + ($aSysBordMetrics[0] * 2) - 4
    Else
        $iHeight = $iExpndHeight + $aSysCaptMetrics[0] + ($aSysBordMetrics[0] * 2)
    EndIf

    WinMove($hWnd, "", $aGuiPos[0], $aGuiPos[1], $aGuiPos[2], $iHeight)

; Нужно для того чтобы не бегали иконки при нажатии Настроек
	GUICtrlSetPos ($MRA, 14, 16, 13, 13)
	GUICtrlSetPos ($MRA, 13, 16, 13, 13)
	GUICtrlSetPos ($ICQ, 13, 38, 16, 16)
	GUICtrlSetPos ($ICQ, 12, 38, 16, 16)
EndFunc


Func _SaveAndLoad ()
	_Save ()
	_Load ()
EndFunc


Func _Load ()
	If  FileExists($ini) Then
		GUICtrlSetData ($in_MRA, IniRead($ini, "Settings", "MRA", ""))
		GUICtrlSetData ($lb_MRAInf, IniRead($ini, "Settings", "MRA", ""))
		GUICtrlSetData ($in_ICQ, IniRead($ini, "Settings", "ICQ", ""))
		GUICtrlSetData ($lb_ICQInf, IniRead($ini, "Settings", "ICQ", ""))
		GUICtrlSetState ($cb_MRA, IniRead($ini, "Settings", "CheckMRA", $GUI_UNCHECKED))
		GUICtrlSetState ($cb_ICQ, IniRead($ini, "Settings", "CheckICQ", $GUI_UNCHECKED))
		GUICtrlSetData ($in_Check, IniRead($ini, "Settings", "Seconds", ""))
		GUICtrlSetData ($sl_Invisible, IniRead($ini, "Settings", "Transparency", 0))
		GUICtrlSetState ($cb_Log, IniRead($ini, "Settings", "Log", $GUI_UNCHECKED))
		GUICtrlSetState ($cb_Notice, IniRead($ini, "Settings", "Notice", $GUI_UNCHECKED))
	Else
		_Toggle_ExpandControls_Proc($Main, $iGUI_Height, $iGUI_Height+153)
	EndIf
EndFunc


Func _Save ()
	IniWrite ($ini, "Settings", "MRA", GUICtrlRead($in_MRA))
	IniWrite ($ini, "Settings", "ICQ", GUICtrlRead($in_ICQ))
	IniWrite ($ini, "Settings", "Seconds", GUICtrlRead($in_Check))
	IniWrite ($ini, "Settings", "CheckMRA", GUICtrlRead($cb_MRA))
	IniWrite ($ini, "Settings", "CheckICQ", GUICtrlRead($cb_ICQ))
	IniWrite ($ini, "Settings", "Seconds", GUICtrlRead($in_Check))
	IniWrite ($ini, "Settings", "Transparency", GUICtrlRead($sl_Invisible))
	IniWrite ($ini, "Settings", "Log", GUICtrlRead($cb_Log))
	IniWrite ($ini, "Settings", "Notice", GUICtrlRead($cb_Notice))
EndFunc


Func _WhatToRun ()
	If (GUICTRLRead($cb_MRA) = $GUI_CHECKED) And (GUICTRLRead($cb_ICQ) <> $GUI_CHECKED) Then
		_Run ("MRA", 1)
	Else
		If (GUICTRLRead($cb_MRA) <> $GUI_CHECKED) And (GUICTRLRead($cb_ICQ) = $GUI_CHECKED) Then
			_Run ("ICQ", 1)
		Else
			If (GUICTRLRead($cb_MRA) = $GUI_CHECKED) And (GUICTRLRead($cb_ICQ) = $GUI_CHECKED) Then
				_Run ("MRA_ICQ", 1)
			Else
				MsgBox (16, "ERROR", "Select protocol")
			EndIf
		EndIf
	EndIf
EndFunc



Func _Run ($name, $options)

	If ($name = "MRA") or ($name = "MRA_ICQ") Then
		Local $MRA_Old = $MRA
		$MRAStatus = InetGet("http://status.mail.ru/?" & GUICtrlRead($lb_MRAInf), @TempDir & "\" & "MRA.gif")
		; Этот If нужно только для того чтобы при прозрачности окно меньше мигало
		If $MRAStatus <> $MRAStatusOld Then
			$MRA = GUICtrlCreatePic (@TempDir & "\" & "MRA.gif", 13, 16, 13, 13)
			_Invisible ()
			GUICtrlDelete ($MRA_Old)
		EndIf
	EndIf

	If ($name = "ICQ") or ($name = "MRA_ICQ") Then
		Local $ICQ_Old = $ICQ
		$ICQStatus = InetGet("http://status.icq.com/online.gif?icq=" & GUICtrlRead($lb_ICQInf) & "&img=27", @TempDir & "\" & "ICQ.gif")
		; Аналогично
		If $ICQStatus <> $ICQStatusOld Then
			$ICQ = GUICtrlCreatePic (@TempDir & "\" & "ICQ.gif", 12, 38, 16, 16)
			_Invisible ()
			GUICtrlDelete ($ICQ_Old)
		EndIf
	EndIf

	; Если проверка не одноразовая, а запущена через книпку Start
	If $options = 1 Then
		$Pause = False
		$PauseTime = 0
		$StartTime = TimerInit()

		If GUICtrlRead($cb_Notice) = $GUI_CHECKED Then _Notice ()
		If GUICtrlRead($cb_Log) = $GUI_CHECKED Then _Log ()
	EndIf

EndFunc


; При нажатии паузы останавливаем проверку статусов и останавливаем отсчет времени
; при повторном нажатии на паузу или нажатии на старт - выходим из цикла while 1
; что возобновляет работу
Func _Pause ()
	Local $PauseTime_ = TimerInit()
	$Pause_Old = $Pause
	$Pause = True
	GUICtrlSetData($bt_Pause, "Resume")
	GUICtrlSetPos($bt_Pause, 89, 68, 42, 16)

	While 1
	$msg = TrayGetMsg()
	Select
		Case $msg = $aboutitem
			_AboutGUI("About Info",  "Status Viewer" , "Program version: v" & @LF & $version, "Copyright © " & @YEAR & " Makc. " & @LF & "All rights reserved." , _
					$Main, @AutoItExe, 0x0000FF, 0xFFFFFF, 200, 100)
		Case $msg = $exititem
			_Exit ()
		Case $msg = $TRAY_EVENT_PRIMARYUP
			_Focus ()
	EndSelect


	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			_Exit ()

		Case $bt_Settings
			_Toggle_ExpandControls_Proc($Main, $iGUI_Height, $iGUI_Height+153)
		Case $bt_Save
			_SaveAndLoad ()
		Case $bt_Pause
			GUICtrlSetPos($bt_Pause, 93, 68, 34, 16)
			GUICtrlSetData($bt_Pause, "Pause")
			ExitLoop
		Case $bt_RefMRA
			_Run ("MRA", 0)
		Case $bt_RefICQ
			_Run ("ICQ", 0)
		Case $bt_Start
			GUICtrlSetPos($bt_Pause, 93, 68, 34, 16)
			GUICtrlSetData($bt_Pause, "Pause")
			ExitLoop
		Case $bt_Tray
			GUISetState(@SW_HIDE, $Main)
		Case $bt_OpenLog
			_OpenLog ()
		Case $sl_Invisible
			_Invisible ()
	EndSwitch

	If GUICtrlRead($in_MRA) <> $in_MRA_Old	Then
		GUICtrlSetData($lb_MRAInf, GUICtrlRead($in_MRA))
		$in_MRA_Old = GUICtrlRead($in_MRA)
	EndIf

	If GUICtrlRead($in_ICQ) <> $in_ICQ_Old	Then
		GUICtrlSetData($lb_ICQInf, GUICtrlRead($in_ICQ))
		$in_ICQ_Old = GUICtrlRead($in_ICQ)
	EndIf
WEnd

	$Pause = $Pause_Old
	$PauseTime = $PauseTime + TimerDiff($PauseTime_)
EndFunc


Func _CurTime()
	Return @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC
EndFunc


; Вывод сообщения в трее

Func _Notice ()

		If (($MRAStatus <> $MRAStatusOld) and ((($MRAStatus <> 349) or ($MRAStatusOld <> 568)) and (($MRAStatus <> 568) or ($MRAStatusOld <> 349)))) Then
			If GUICtrlRead($cb_Log) = $GUI_UNCHECKED Then $MRAStatusOld = $MRAStatus

			If ($MRAStatus = 349) Or ($MRAStatus = 568) Then
				TrayTip(GUICtrlRead($lb_MRAInf), "online", 2, 1)
			Else
				If $MRAStatus = 570 Then
					TrayTip(GUICtrlRead($lb_MRAInf), "offline", 2, 1)
				Else
					TrayTip(GUICtrlRead($lb_MRAInf), "ERROR", 2, 3)
				EndIf
			EndIf
		EndIf

		If $ICQStatus <> $ICQStatusOld Then
			If GUICtrlRead($cb_Log) <> $GUI_CHECKED Then $ICQStatusOld = $ICQStatus

			If $ICQStatus = 1030 Then
				TrayTip(GUICtrlRead($lb_ICQInf), "online", 2, 1)
			Else
				If $ICQStatus = 589 Then
					TrayTip(GUICtrlRead($lb_ICQInf), "offline", 2, 1)
				Else
					If $ICQStatus = 360 Then
						TrayTip(GUICtrlRead($lb_ICQInf), "unknown", 2, 1)
					Else
						TrayTip(GUICtrlRead($lb_ICQInf), "ERROR", 2, 3)
					EndIf
				EndIf
			EndIf
		EndIf

EndFunc

Func _Log ()

	If (($MRAStatus <> $MRAStatusOld) and ((($MRAStatus <> 349) or ($MRAStatusOld <> 568)) and (($MRAStatus <> 568) or ($MRAStatusOld <> 349)))) Then
		$MRAStatusOld = $MRAStatus
		If ($MRAStatus = 349) Or ($MRAStatus = 568) Then
			_WriteLog("MRA", GUICtrlRead($lb_MRAInf), "online")
		Else
			If $MRAStatus = 570 Then
				_WriteLog("MRA", GUICtrlRead($lb_MRAInf), "offline")
			Else
				_WriteLog("MRA", GUICtrlRead($lb_MRAInf), "ERROR")
			EndIf
		EndIf
	EndIf

	If $ICQStatus <> $ICQStatusOld Then
		$ICQStatusOld = $ICQStatus
		If $ICQStatus = 1030 Then
			_WriteLog("ICQ", GUICtrlRead($lb_ICQInf), "online")
		Else
			If $ICQStatus = 589 Then
				_WriteLog("ICQ", GUICtrlRead($lb_ICQInf), "offline")
			Else
				If $ICQStatus = 360 Then
					_WriteLog("ICQ", GUICtrlRead($lb_ICQInf), "unknown")
				Else
					_WriteLog("ICQ", GUICtrlRead($lb_ICQInf), "ERROR")
				EndIf
			EndIf
		EndIf
	EndIf

EndFunc

Func _WriteLog ($protocol, $uin, $status)

	If Not FileExists($log) Then
		$logOpen = FileOpen($log, 1)
		FileWrite ($logOpen, "Time" & @TAB & @TAB & @TAB & "Protocol" & @TAB & @TAB & "ID" & @TAB & @TAB & @TAB & "Status" & @CRLF)
		FileClose($logOpen)
	EndIf

	$logOpen = FileOpen($log, 1)

	If StringLen($uin) < 8 Then
		$tab = @TAB & @TAB & @TAB
	Else
		$tab = @TAB & @TAB
	EndIf

	FileWrite ($logOpen, @CRLF & "[" & _CurTime() & "] " & @TAB & $protocol & " " & @TAB & @TAB & $uin & $tab & $status)

	FileClose($logOpen)
EndFunc

Func _OpenLog ()
	If FileExists ($log) Then
		Run ("notepad.exe " & $log)
	Else
		MsgBox (16,"Error","Log-file doesn't exist!")
	EndIf
EndFunc

Func _Invisible ()
	WinSetTrans("Status Viewer", "", GUICtrlRead($sl_Invisible) * (-1) + 255)
EndFunc


Func _Focus()
	GUISetState(@SW_SHOW, $Main)
	WinSetTrans("Status Viewer", "", 255)
	GUICtrlSetData($sl_Invisible, 0)
	WinActivate ("Status Viewer")
EndFunc

Func _Exit ()
	If FileExists(@TempDir & "\" & "MRA.gif") Then FileDelete (@TempDir & "\" & "MRA.gif")
	If FileExists(@TempDir & "\" & "ICQ.gif") Then FileDelete (@TempDir & "\" & "ICQ.gif")
	Exit
EndFunc

Func _AboutGUI($Title, $MainLabel, $TextLabel, $CopyRLabel,$Parent=0, $IconFile="", $LinkColor=0x0000FF, $BkColor=0xFFFFFF, $Width=300, $Height=120, $Left=-1, $Top=-1, $Style=-1, $ExStyle=-1) 
    Local $OldEventOpt = Opt("GUIOnEventMode", 0) 
    Local $About_GUI, $LinkTop=120, $About_Msg, $CurInfo 
 
    WinSetState($Parent, "", @SW_DISABLE) 
 
	If $ExStyle = -1 Then $ExStyle = "" 
    $About_GUI = GUICreate($Title, $Width, $Height, $Left, $Top, $Style, 0x00000080+$ExStyle, $Parent) 
    GUISetBkColor($BkColor) 
 
    GUICtrlCreateLabel($MainLabel, 16, 15, $Width, 25, 1) 
    GUICtrlSetFont(-1, 14) 
 
    GUICtrlCreateIcon($IconFile, 0, 5, 10) 
    GUICtrlSetState(-1, 128) 
 
 
    GUICtrlCreateLabel("E-Mail: <deleted by author>", 0, $Height-50, $Width, -20, 1) 
	GUICtrlSetColor(-1, 0x8888888)
 
	GUICtrlCreateLabel($CopyRLabel, 0, $Height-30, $Width, -20, 1) 
    GUICtrlSetColor(-1, 0x969696) 
    GUICtrlSetState(-1, 128) 
 
        GUISetState(@SW_SHOW, $About_GUI) 
 
    While 1 
        $About_Msg = GUIGetMsg() 
 
                Switch $About_Msg 
            Case -3 
                ExitLoop 
        EndSwitch 
	WEnd 
    WinSetState($Parent, "", @SW_ENABLE) 
    GUIDelete($About_GUI) 
    GUISwitch($Parent)  
EndFunc

Снимок:


История версий:
19/12/12 *смотри пост внизу (датированый этой датой)
05/15/10 *третий релиз
04/17/10 *второй релиз
03/10/10 *первый релиз

Источник: этот пост
Автор(ы): Makc
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Имхо это уже программа а не Полезняшка :smile:
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Автор
D

Dark-Side

Знающий
Сообщения
72
Репутация
17
В программке замечена маленькая ошибочка: если скрипт не может узнать статус клиента и включена функция лога, то после надписи ERROR не идет @CRLF.

Будет время - допилю)
 

Infor6

Новичок
Сообщения
3
Репутация
0
Блин, сам хотел такую написать, а уже есть )) Хотелось бы код посмотреть!!! Почему закрыт>!?
 

La2Angel

Новичок
Сообщения
156
Репутация
1
Возможно, код закрыт из-за того, что, каждый позапускает, введя icq того, кого он хочет проверить, а программа отсылает этот запрос на сервер разрабу, так и делается база спамерская.


Добавлено:
Сообщение автоматически объединено:

Как и думал, при запуске в песочнице аваста, программа себя начинает не одекватно вести себя, че-то все пытается под правами админа нашаманить и отправить.
 

timsky

Осваивающий
Сообщения
93
Репутация
28
La2Angel [?]
Возможно, код закрыт из-за того, что, каждый позапускает, введя icq того, кого он хочет проверить, а программа отсылает этот запрос на сервер разрабу, так и делается база спамерская.
Добавлено: Сентябрь 27, 2011, 18:33:26Как и думал, при запуске в песочнице аваста, программа себя начинает не одекватно вести себя, че-то все пытается под правами админа нашаманить и отправить.

Посмотрел бегло код. Ничего она не отсылает. Ломится только на:
http://status.mail.ru/?ЛОГИН
http://status.icq.com/online.gif?icq=UIN&img=27

Не понятно, зачем проге админские права, т.к. если скомпилить без этого условия, то вроде нормально пашет.
 
Автор
D

Dark-Side

Знающий
Сообщения
72
Репутация
17
Решил нагуглить свое имя, случайно попал сюда, немного офигел :D

Офигел от того что у меня закрытый код, что при повторном нажатии на Settings окно становилось короче первоначального и что код - просто ужас.

Я подправил косяк с гуем, исправил пару явных недочетов в коде и убрал возможность обновления т.к. программа ссылалась на мой домен на котором хостинг недавно окончился.
О, и я вставил код в первое сообщение, хоть мне теперь и стыдно за него :-[ Без понятия зачем я его закрытым делал, не думаю что я тогда его стыдился.

Насчет прав администратора. Я не уверен, но могу предположить что из-за отсутствия windows vista и windows 7 я просто на всякий случай решил вставить требования прав администратора т.к. программа писала в файл, удаляла свои временные файлы и даже самообновлялась по требованию пользователя. Убрал это требование.


Добавлено:
Сообщение автоматически объединено:

Похоже мое предположение насчет прав администратора было верно. ссылка (следующий комментарий по ссылке благодарит Dark-Side, это был мой ник до того как я попросил администратора поменять мне его)
 
Верх