Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: Hackproof
Дата сообщения: 11.06.2008 14:26
BabyKiller - попробуй так: send ("{ALTDOWN}н{ALTUP}")

У меня программа с приличным окном и кучей контролов занимает 10 Мб, а после этой штуки, стала занимать 2 Мб, однако строка Global Const $PROCESS_ALL_ACCESS = 0x1F0FFF вызывала ошибку "Can not redeclare a constant.:", и я ее убрал. Вроде и так работает...
Автор: Maza Faka
Дата сообщения: 11.06.2008 14:52
Hackproof

Цитата:
однако строка Global Const $PROCESS_ALL_ACCESS = 0x1F0FFF вызывала ошибку "Can not redeclare a constant.:"

Значит у тебя уже обьявленна эта константа, возможно в какой-нибудь UDF.
Автор: Hackproof
Дата сообщения: 11.06.2008 15:17
Видимо да, раз проблем нет. Но решение красивое, эта прога по идее должна в трее сидеть постоянно и вопрос памяти был вполне актуален.
Автор: NIKZZZZ
Дата сообщения: 11.06.2008 16:14
Maza Faka

Цитата:
Можно пример?

Пока сам не разобрался, где происходит утечка памяти. Скрипт достаточно сложный. Где-то динамически добавляется инфа в массивы, память потребляемая растет. Постараюсь смоделировать ситуацию.
Автор: Hackproof
Дата сообщения: 12.06.2008 20:26
Еще раз на тему значка в трее - неправильно сформулировал вопрос. Нужно, чтоб программа не только сворачивалась туда, но и разворачивалась по одному клику на значок, а у меня вылезает менюшка с одним пунктом, который надо нажать. Тогда было бы вообще замечательно.
Автор: DrWatson2
Дата сообщения: 12.06.2008 22:43

Цитата:
Но есть UDF для снижения используемой процессом области в памяти:


Это действительно работает?
Пробывал вставлять эти два варианта в три свои скрипта - потребление памяти не изменилось.
Запустил пример из выше приведенных что с _ProcessReduceMemory, что без - разницы нет ~ 1.5 mb.
Или это не для всех процессов?
Автор: Hackproof
Дата сообщения: 12.06.2008 23:04
У меня реально работает - было 9528 кб, стало 2156. Правда, результаты колеблются и программа у меня большая, с приличным количеством контролов и подключенным внешним модулем.
Автор: ViSiToR
Дата сообщения: 13.06.2008 01:59
Hackproof 21:26 12-06-2008
Цитата:
Нужно, чтоб программа не только сворачивалась туда, но и разворачивалась по одному клику на значок

Для этого нужно задать TraySetClick() и улавливать событие $TRAY_EVENT_PRIMARYDOWN/UP...


Код: #include <GUIConstantsEx.au3>
#include <Constants.au3>

#NoTrayIcon

Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)

$hGUI = GUICreate("Test GUI", 300, 200)

$RestoreItem = TrayCreateItem("Restore")
TrayItemSetOnEvent(-1, "_RestoreFromTray_Proc")

TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "_RestoreFromTray_Proc")
TraySetClick(16)

GUISetState()

While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case
$GUI_EVENT_MINIMIZE
GUISetState(@SW_HIDE)
TraySetState(1)
EndSwitch
WEnd

Func
_RestoreFromTray_Proc()
If BitAND(WinGetState($hGUI), 2) = 2 Then Return

TraySetState(2)
GUISetState(@SW_SHOW)
GUISetState(@SW_RESTORE)
EndFunc
Автор: Hackproof
Дата сообщения: 13.06.2008 02:23
Весьма большое спасибо от отдела сетевых технологий СПб метрополитена.
Автор: DrWatson2
Дата сообщения: 13.06.2008 07:07

Цитата:
ProcessExplorer не обновляется сразу

ProcessExplorer v11.20. рефреш 1с.
Автор: ViSiToR
Дата сообщения: 13.06.2008 07:31
DrWatson2 08:07 13-06-2008
Цитата:
ProcessExplorer v11.20. рефреш  1с.

Да, обновляется, у меня просто не те данные отображались.
Приведённый UDF высвобождает память Working Set, соответственную колонку нужно включить в настройках PE .
Автор: BabyKiller
Дата сообщения: 16.06.2008 05:20
Hackproof

Цитата:
BabyKiller - попробуй так: send ("{ALTDOWN}н{ALTUP}")

Пробовал, не получается.. всё равно отправляет просто букву "н".
Версия AutoIt 3.2.12.0
Автор: U235
Дата сообщения: 16.06.2008 07:52
BabyKiller, раскладка клавиатуры в момент отправки send - русская?
Автор: BabyKiller
Дата сообщения: 16.06.2008 08:58
Русская, т.к. печатается просто "н"... а если бы было нажатие с клавишей альт, то тогда бы на экране она не напечаталась...

Ещё сегодня проблемку нашёл стили $WS_ не работают, пишут ошибку
Автор: Maza Faka
Дата сообщения: 16.06.2008 09:55
BabyKiller

Цитата:
Ещё сегодня проблемку нашёл стили $WS_ не работают, пишут ошибку

Работают, надо просто включить их в скрипт:

Код:
#include <WindowsConstants.au3>
Автор: BabyKiller
Дата сообщения: 16.06.2008 10:52
Maza Faka
Спасибо! странно что в хелпе об этом ни слова, или по крайней мере я ещё не увидел там...
А как разрешить $ES_? Чего то я не нашёл... хотя поковырялся в папке \AutoIt3\Include, вроде что то оттуда надо инклудить , а что?
Автор: vipzero
Дата сообщения: 17.06.2008 23:51
сделал через koda

#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Управление нетом", 256, 71, 193, 125)
GUISetBkColor(0x000000)
$Button1 = GUICtrlCreateButton("Подключитися к нету", 0, 8, 131, 25, 0)
$Button2 = GUICtrlCreateButton(Отключитися", 0, 40, 131, 25, 0)
$Label1 = GUICtrlCreateLabel("HiGH_ZeRO", 136, 24, 117, 27)
GUICtrlSetFont(-1, 14, 400, 0, "Book Antiqua")
GUICtrlSetColor(-1, 0xFFFFFF)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

    EndSwitch
WEnd

теперь хочу назначить на $Button1 Run ('cmdow rasdial NET USER Pass','','')
а на $Button2 Run ('cmdow rasdial /d','','')
но незнаю как
Автор: ViSiToR
Дата сообщения: 18.06.2008 00:48
vipzero 00:51 18-06-2008
Цитата:
хочу назначить на $Button1



Код: #include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Управление нетом", 256, 71, 193, 125)
GUISetBkColor(0x000000)
$Button1 = GUICtrlCreateButton("Подключитися к нету", 0, 8, 131, 25, 0)
$Button2 = GUICtrlCreateButton(Отключитися", 0, 40, 131, 25, 0)
$Label1 = GUICtrlCreateLabel("HiGH_ZeRO", 136, 24, 117, 27)
GUICtrlSetFont(-1, 14, 400, 0, "Book Antiqua")
GUICtrlSetColor(-1, 0xFFFFFF)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Run ('cmdow rasdial NET USER Pass','','')
Case $Button2
Run ('cmdow rasdial /d','','')
EndSwitch
WEnd
Автор: DrWatson2
Дата сообщения: 18.06.2008 07:49
Подскажите, как можно программно отслеживать состояние соединения с интернетом через dial-up.
Пробывал это "DllCall("wininet.dll","int","InternetGetConnectedState","int_ptr",0,"int",0)", но так работает если руками отлючать/включать. А если соединение рвет провайдер (сотовый), то это не срабатывает. Возвращает 1, хотя соединение и разорвано.
Автор: Maza Faka
Дата сообщения: 18.06.2008 07:58
DrWatson2
Попробуй так:

Код: Global Const $INTERNET_CONNECTION_MODEM = 0x1
Global Const $INTERNET_CONNECTION_LAN = 0x2
Global Const $INTERNET_CONNECTION_PROXY = 0x4
Global Const $INTERNET_CONNECTION_MODEM_BUSY = 0x8
Global Const $INTERNET_RAS_INSTALLED = 0x10
Global Const $INTERNET_CONNECTION_OFFLINE = 0x20
Global Const $INTERNET_CONNECTION_CONFIGURED = 0x40

Dim $State, $val

$InetStruct
= DllStructCreate("int")

DllCall("wininet.dll", "int", "InternetGetConnectedState", "ptr", DllStructGetPtr($InetStruct), "dword", 0)

$val = DllStructGetData($InetStruct, 1)

If BitAND($val, $INTERNET_CONNECTION_MODEM) Then $State &= "Modem connection" & @LF
If BitAND($val, $INTERNET_CONNECTION_LAN) Then $State &= "LAN connection" & @LF
If BitAND($val, $INTERNET_CONNECTION_PROXY) Then $State &= "Proxy connection" & @LF
If BitAND($val, $INTERNET_CONNECTION_MODEM_BUSY) Then $State &= "Modem bussy" & @LF
If BitAND($val, $INTERNET_RAS_INSTALLED) Then $State &= "RAS installed" & @LF
If BitAND($val, $INTERNET_CONNECTION_OFFLINE) Then $State &= "Offline connection" & @LF
If BitAND($val, $INTERNET_CONNECTION_CONFIGURED) Then $State &= "Connection configured"

MsgBox(0, "Connection", $State)
Автор: DrWatson2
Дата сообщения: 18.06.2008 08:56
Maza Faka
Спасибо, так работает.
Автор: ynbIpb
Дата сообщения: 18.06.2008 18:53
Возникла необходимость сделать программку "кликкер"
Нужно чтоб она через определённые промежутки времени эмулировала клик мышки.
через Sleep() нельзя, так как заснёт весь скрипт, а у программы будет ГУИ и он не должен спать. В Гуи я буду задавать значение времени через коротое будет делаться клик и колличество кликов. Подскажите как лучше реализовать это?
Гуи типа такого:


Код: #include <GUIConstants.au3>
#NoTrayIcon
$Form1 = GUICreate("Click", 143, 94, 193, 125)
$Input1 = GUICtrlCreateInput("", 8, 8, 65, 21)
$Button1 = GUICtrlCreateButton("START", 80, 8, 51, 49, 0)
$Label1 = GUICtrlCreateLabel("start: 'Home' stop: 'End'", 8, 64, 124, 17)
$Input2 = GUICtrlCreateInput("0", 8, 32, 41, 21)
$Updown1 = GUICtrlCreateUpdown($Input2)
GUISetState(@SW_SHOW)
HotKeySet ("{HOME}","start")
HotKeySet ("{END}","stop")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Автор: Maza Faka
Дата сообщения: 19.06.2008 07:13
ynbIpb
Попробуй через DllCallBack функцию:

Код: #NoTrayIcon
#include
<GUIConstants.au3>

HotKeySet("{HOME}","start")
HotKeySet("{END}","stop")

Global $TimerCall, $elapse = 1000 ;интервал времени в милисекундах

Global $TimerProcHandle = DllCallbackRegister("_TimerProc", "none", "hwnd;int;int;dword")

$Form1 = GUICreate("Click", 143, 94, 193, 125)

$Input1 = GUICtrlCreateInput("", 8, 8, 65, 21)

$Button1 = GUICtrlCreateButton("START", 80, 8, 51, 49, 0)

$Label1 = GUICtrlCreateLabel("start: 'Home' stop: 'End'", 8, 64, 124, 17)

$Input2 = GUICtrlCreateInput("0", 8, 32, 41, 21)

$Updown1 = GUICtrlCreateUpdown($Input2)

GUISetState(@SW_SHOW)

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


DllCallbackFree($TimerProcHandle)
DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "int", $TimerCall)

Func start()
$TimerCall = DllCall("user32.dll", "int", "SetTimer", "hwnd", 0, "int", 0, "int", $elapse, _
"ptr", DllCallbackGetPtr($TimerProcHandle))
$TimerCall = $TimerCall[0]
EndFunc

Func stop()
DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "int", $TimerCall)
EndFunc

Func _TimerProc($hWnd, $Msg, $IdTimer, $dwTime)
;Здесь будет эмулироваться нажатия кнопок мыши с интервалом в 1 секунду.
ConsoleWrite("---> Mouse click" & @LF)
EndFunc
Автор: ynbIpb
Дата сообщения: 19.06.2008 19:40
спасибо! попробую разобраться.
Никогда не работал с ДЛЛками.
Автор: NIKZZZZ
Дата сообщения: 20.06.2008 00:22
Небольшая задачка.


Код: If $answer = 0 Then
$Result="No"
Else
$Result="Yes"
EndIf
Автор: XpycTMD
Дата сообщения: 24.06.2008 14:54
Подскажите пожалуста
Как проверить состоит ли строка только из букв и пробелов

Код: StringIsAlpha("string")
Автор: Loopback
Дата сообщения: 24.06.2008 17:49

Цитата:
Подскажите пожалуста
Как проверить состоит ли строка только из букв и пробелов


Я бы сделал примерно так:


Код: If StringRegExp($string, "\A[A-Za-zА-Яа-я\x20]+\z") Then
...
Автор: ViSiToR
Дата сообщения: 24.06.2008 22:33
NIKZZZZ 01:22 20-06-2008
Цитата:
Написать это в виде

Для этого есть UDF _Iif()...


Код: #include <Misc.au3>

$Answer = MsgBox(36, "", "YES or NO?")

$Result = _Iif($Answer = 7, "No", "Yes")

MsgBox(0, "", $Result)
Автор: hunter19
Дата сообщения: 25.06.2008 05:49
Подскажите пожалуйста, как сделать, чтобы скрипт блокировал и разблокировал мои нажатия клавиш на клавиатуре, т.е. чтобы то, что я нажал, не передавалось в другие приложения?
Автор: Maza Faka
Дата сообщения: 25.06.2008 06:31
hunter19
Самый простой способ - функция
Код: BlockInput()

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.