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

» AutoIT

Автор: NIKZZZZ
Дата сообщения: 18.08.2008 16:37
Maza Faka

Цитата:
пример изменения шрифта в MsgBox

Да, пример работает. Но размер окна не меняется в зависимости от текста.
ViSiToR

Цитата:
По поводу MsgBox:

Аналогичная ситуация.
В общем, нужен не сам MsgBox, а окно нужного размера, в которое будет выведен произвольный текст.
Для моноширинного фонта подсчитать размер окна не сложно, а вот для произвольного
Автор: Maza Faka
Дата сообщения: 18.08.2008 17:24
NIKZZZZ

Цитата:
нужен не сам MsgBox, а окно нужного размера, в которое будет выведен произвольный текст

А как будет вводиться текст? В элемент Label или Input или будет рисоваться?
Автор: gal7
Дата сообщения: 18.08.2008 17:41
PixelGetColor явно не то.
_WinAPI_GetSysColor посмотрел - что то не пойму что она возвращает, какие-то цифры, например: 16777215 - что это такое? И так на любые подстановки. Судя по описанию там должен быть код RGB(вида 0xRRGGBB).Хотя в английском я ноль, может переводчик что-то перевел не так.
Автор: Leony8
Дата сообщения: 18.08.2008 18:22

Цитата:
Зачем прибегать к сторонним утилитам, когда можно решить задачу средствами AutoIt?

Затем, чтобы потом повернуть или exif-инфу удалить или считать – GdiPlus это не может, равно как и считатать разрешение.
А по поводу длины/высоты – конечно спасибо, я этот момент упустил.

Автор: NIKZZZZ
Дата сообщения: 18.08.2008 19:14
Maza Faka

Цитата:
А как будет вводиться текст?

элемент Label.


Автор: darkogre
Дата сообщения: 18.08.2008 20:33
Книжка от O'Reilly:
_rapidshare.com/files/129125467/AutoIt_v3-_Your_Quick_Guide.pdf
Автор: Maza Faka
Дата сообщения: 19.08.2008 09:32
NIKZZZZ

Цитата:
элемент Label.

Покажи пример, как ты пытаешься ввести изменённый текст.
Автор: NIKZZZZ
Дата сообщения: 19.08.2008 09:58
Maza Faka

Цитата:
Покажи пример, как ты пытаешься ввести изменённый текст.

Я не пытаюсь ввести измененный текст, я просто создаю новое окно , необходимое для вывода этого текста. Именно поэтому я привел MsgBox как пример.

Автор: Maza Faka
Дата сообщения: 19.08.2008 11:42
NIKZZZZ

Цитата:
я просто создаю новое окно , необходимое для вывода этого текста.

Я уже указывал тебе ссылку с примером, попробуй так:

Код: #include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

$hGUI = GUICreate("Test", 200, 100)

$button = GUICtrlCreateButton("Test", 60, 35, 75, 23)

GUISetState()

While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case
$button
_CreateWindow(50, 800, 2, "Arial")
EndSwitch
WEnd

Func
_CreateWindow($sFontSize = Default, $sFontWeight = Default, $sFontAttrib = Default, $sFontName = Default)
Local $hChildGui, $label, $hFont, $hDC, $hOldFont, $sText, $tSize, $aControlPos, $aWinPos

$hChildGui
= GUICreate("Chil GUI with custom text", 10, 10)

$label = GUICtrlCreateLabel("Hello world", 10, 35, 50, 20)
GUICtrlSetFont(-1, $sFontSize, $sFontWeight, $sFontAttrib, $sFontName)

$hFont = _SendMessage(GUICtrlGetHandle($label), $WM_GETFONT)
$hDC = _WinAPI_GetDC(GUICtrlGetHandle($label))

$hOldFont = _WinAPI_SelectObject($hDC, $hFont)

$sText = ControlGetText($hChildGui, "", $label)
$tSize = _WinAPI_GetTextExtentPoint32($hDC, $sText & " ")

$aControlPos = ControlGetPos($hChildGui, "", $label)
$aWinPos = WinGetPos($hChildGui)

WinMove($hChildGui, "", $aWinPos[0], $aWinPos[1], DllStructGetData($tSize, "X") + 100, DllStructGetData($tSize, "Y") + 80)
$aWinPos = WinGetPos($hChildGui)

GUICtrlSetPos($label, $aWinPos[3] / 2, $aControlPos[2] / 2, DllStructGetData($tSize, "X") + 2, DllStructGetData($tSize, "Y") + 1)

_WinAPI_SelectObject($hDC, $hOldFont)
_WinAPI_ReleaseDC(0, $hDC)

GUISetState()
EndFunc
Автор: gal7
Дата сообщения: 19.08.2008 14:07

Цитата:
_WinAPI_GetSysColor посмотрел - что то не пойму что она возвращает, какие-то цифры, например: 16777215 - что это такое? И так на любые подстановки. Судя по описанию там должен быть код RGB(вида 0xRRGGBB).


Может кто-то все-таки знает что это за цифры? Очень надо
Автор: Leony8
Дата сообщения: 19.08.2008 15:06
Похоже, что она возвращает int32 - целое число, которое в Hex нуна конвертить с пом. Hex(). Но для _WinAPI_SetSysColors конвертить ничего не нуна – она целые числа принимает.
Автор: Maza Faka
Дата сообщения: 19.08.2008 15:44
Leony8

Цитата:
Похоже, что она возвращает int32 - целое число

Да нет, она возвращает HEX значение, просто в формате BGR, вот пример:

Код: #include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

GUICreate("My GUI", 200, 100)

$BGR = _WinAPI_GetSysColor($COLOR_ACTIVECAPTION) ;Active caption is blue

GUICtrlCreateLabel("", 50, 35, 100, 20)
GUICtrlSetBkColor(-1, _RGB2BGR($BGR)) ;Устанавливаем полученный цвет в элемент Label (просто для просмотра )

GUISetState()

While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd

Func
_RGB2BGR($iColor)
Return BitAND(BitShift(String(Binary($iColor)), 8), 0xFFFFFF)
EndFunc ;==>_RGB2BGR()
Автор: gal7
Дата сообщения: 19.08.2008 17:41
Спасибо, буду теперь думать как эту функцию приделать для определения цвета кнопок, если это возможно.
Автор: gal7
Дата сообщения: 20.08.2008 17:07
Еще вопрос появился, может кто-то знает почему не работает такой код (спецам по JS):

Код: MsgBox(0, "", $Obj1.window.event.srcElement.name)
Автор: KChernov
Дата сообщения: 22.08.2008 11:14
Maza Faka

Цитата:
Зачем прибегать к сторонним утилитам, когда можно решить задачу средствами AutoIt?

Спасибо, работает

Вот еще такой вопрос возник:
я написал на nnCron скрипт, который у игрушки эмулирует определенные клавиатурные комбинации, отсутствующие в самой игре, через двиганье мышей.
Однако он вообще говоря не бесплатный, поэтому выложить их я не могу и ищу полностью свободную альтернативу.
Я правильно понимаю, что субж не может полностью решить эту проблему?
То есть его надо использовать совместно с какой-нибудь прогой - менеджером хоткеев?..
Или все таки можно обойтись субжем?
Автор: Smitis
Дата сообщения: 22.08.2008 12:29
KChernov

Цитата:
Однако он вообще говоря не бесплатный


Цитата:
nnCron бесплатен для граждан стран бывшего СССР при условии частного и
некоммерческого использования.



Автор: KChernov
Дата сообщения: 22.08.2008 13:00
Smitis

Цитата:
nnCron бесплатен для граждан стран бывшего СССР при условии частного и
некоммерческого использования.

Это я все в курсе, но проблема в том, что я хочу все это выложить на забугорном сайте!
А у них это уже будет восприниматься как реклама nnCron-а
А лайт версия к сожалению это все не умеет - она как раз (если я правильно понимаю) и является аналогом субжа.
Автор: CKA3O4H1K
Дата сообщения: 23.08.2008 19:19
Прошу помощи.
Убил кучу времени в поисках утилиты которая банально блокирует клавиатуру и мышь.
(хочу в PowerPro сделать кнопку, которая полностью блокировала бы комп на некоторое время)

BlockInput(1) в сабже (и BlockInput, on в AutoHotkey) работают как-то не самодостаточно...

Возможно ли в AutoIT создать и скомпилировать скрипт который полноценно отключал мышь/клаву и не реагировал на ctrl+alt+del?

Если нет, может кто знает если способ вообще это сделать?
Автор: Astra55
Дата сообщения: 23.08.2008 19:36
CKA3O4H1K

Цитата:
Убил кучу времени в поисках утилиты которая банально блокирует клавиатуру и мышь.

Pitaschio - http://pitaschio.ara3.net
60 кил, бесплатная, неинсталлируемая. У кого нет нормальных дров для мыши - MUST HAVE, хотя бы из-за автофокуса. Это не говоря про прочие фичи, которых там полно.
Автор: Maza Faka
Дата сообщения: 24.08.2008 08:13
CKA3O4H1K

Цитата:
Возможно ли в AutoIT создать и скомпилировать скрипт который полноценно отключал мышь/клаву и не реагировал на ctrl+alt+del?

Возможно, блокируешь клавиатуру и мышь с помощью функции BlockInput(), а сочетание ctrl+alt+del блокируешь с помощью вот такого кода:

Код: $hDll = DllOpen("WinLockDll.dll")

DllCall ($hDll, "int", "CtrlAltDel_Enable_Disable", "int", 0)

MsgBox(48, "Message", "Ctrl+Alt+Del Disabled," & @CRLF & "Press OK for enable")

DllCall ($hDll, "int", "CtrlAltDel_Enable_Disable", "int", 1)

DllClose($hDll)
Автор: avtr07
Дата сообщения: 24.08.2008 13:14
Как записать много действий и кликов мыши с помощью этой проги и чтобы норм все воспроизводилось?

Помогите пжл.
Автор: Maza Faka
Дата сообщения: 24.08.2008 14:01
avtr07
Конкретней. Нужно симулировать нажатия кнопок мыши или отcлеживать их?
Автор: avtr07
Дата сообщения: 24.08.2008 14:10
Симулировать.

Надо, чтобы кликало в определенное место и через некоторое время. В браузере.


Это как у RVM_aka_Vasil, только у него в игрушке, а у меня в браузере.

Добавлено:
С помощью МакроГинератора получилось:

Код:

;--- AutoIt Macro Generator V 0.21 beta ---
Opt("WinTitleMatchMode", 4)
WinWait(" - Mozilla Firefox","")
ControlClick(" - Mozilla Firefox","","MozillaWindowClass19")
ControlClick(" - Mozilla Firefox","","MozillaWindowClass19")
ControlClick(" - Mozilla Firefox","","MozillaWindowClass19")
ControlClick(" - Mozilla Firefox","","MozillaWindowClass19")
;продолжение не буду выкладывать
;--- End ---
Автор: Maza Faka
Дата сообщения: 24.08.2008 15:22
avtr07
А не проще ли воспользоваться библиотекой IE.au3?
Автор: avtr07
Дата сообщения: 24.08.2008 16:37
Как это работает? Я ее запуская, а она куда-то исчезает

Добавлено:
Как сделать, чтобы была задержка между кликами?
Автор: CKA3O4H1K
Дата сообщения: 24.08.2008 17:26
Maza Faka
создал два файла, один на полный блок, другой разблокировующий


Цитата:
$hDll = DllOpen("WinLockDll.dll")
DllCall ($hDll, "int", "CtrlAltDel_Enable_Disable", "int", 0)
BlockInput(1)

нужно ли тут выгружать дллку что бы блок остался?
После компилирования CtrlAltDel блокируется, но BlockInput(1) почему то не срабатывает, до него очередь не доходит? А если поставить его в начало то CtrlAltDel не блокируеться...


Цитата:
$hDll = DllOpen("WinLockDll.dll")
DllCall ($hDll, "int", "CtrlAltDel_Enable_Disable", "int", 1)
DllClose($hDll)
BlockInput(0)

А это отдельным екзешником не разблокировует CtrlAltDel...

Где я ошибаюсь?
Автор: Hackproof
Дата сообщения: 25.08.2008 08:52
А откуда такая библиотека?
Автор: avtr07
Дата сообщения: 25.08.2008 09:00
в папке includes, IE.au3 вродь блокнотом открывать надо
Автор: Maza Faka
Дата сообщения: 25.08.2008 09:02
avtr07

Цитата:
Как это работает? Я ее запуская, а она куда-то исчезает

Запускать нужно не библиотеку, а функции. Смотри в справке раздел IE Management в категории User Defined Function.


Цитата:
Как сделать, чтобы была задержка между кликами?


Код:
Opt("MouseClickDelay", 100)
Автор: avtr07
Дата сообщения: 25.08.2008 09:08
Maza Faka

Чего-то не работает задержка...



Код:

Opt("MouseClickDelay", 6000)
MouseMove(923,214)
Opt("MouseClickDelay", 6000)
MouseDown("left")
MouseUp("left")
MouseMove(1075,217)
Opt("MouseClickDelay", 6000)

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

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


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