|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] AutoIt скрипты |
|
|
[Архив - Часть 1.2] AutoIt скрипты
|
|
Ветеран Сообщения: 565 |
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. |
|
|
------- Отправлено: 10:47, 10-02-2006 |
|
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать qeraser
Не работает. У меня есть сервер, к которому не подключен монитор. На сервере установлена WinXP. Захожу на этот сервер с помощью "Подключение к удаленному рабочему столу" через локальную сеть. На сервере вылажен скрипт. Если "подключение" активно, то скрипт работает и делает то, что надо. Если "подключение" закрыто, скрипт глохнет в самом начале, а именно: началом работы скрипта является запуск программы (вылезает окно авторизации), далее с помощью WinWaitActive определяем, что это окно активно и дальше понеслась (ввод пароля, логина ну т.д. и т.п.). В случае если "подключение" не активно, то скрипт "не видит" это окно авторизации и оно просто висит и ничего не происходит. |
|
Отправлено: 16:42, 30-11-2006 | #501 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
А чем не устраивает простое отключение/включение родительского окна? #include <GUIConstants.au3>
GUICreate("My GUI")
Opt("GUICoordMode",2)
$Button_1 = GUICtrlCreateButton ("Open File", 10, 30, 100)
GUISetState ()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Button_1
WinSetState ("My GUI", "", @SW_DISABLE)
$a = FileOpenDialog ( "FileOpenDialog", "c:\", "All (*.*)")
WinSetState ("My GUI", "", @SW_ENABLE)
WinActivate ("My GUI")
EndSelect
Wend
|
|
Отправлено: 05:17, 01-12-2006 | #502 |
|
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
, или если сделать поверх всех окон гуи, то вызываемое окно буде за ним... можно конечно выкрутится функцией WinSetOnTop, но это, имхо, не удобно...В идеале, хочется чтобы можно было вызвать окно сохранения (к примеру), и нажимая на окно гуи, чтобы вызванное окно мигало, точно также как это происходит если вызвать дочернее окно гуи... вот пример: #include <GUIConstants.au3>
$ParentWin = GUICreate("Parent GUI", 250, 250)
$Button = GUICtrlCreateButton("Child", 20, 50)
GUISetState()
$ChildWin = GUICreate("Child GUI", 200, 200, -1, -1, -1, -1, $ParentWin)
While 1
$msg1 = GUIGetMsg()
Select
Case $msg1 = $GUI_EVENT_CLOSE
Exit
Case $msg1 = $Button
GUISetState(@SW_DISABLE, $ParentWin)
GUISetState(@SW_SHOW, $ChildWin)
While 1
$msg2 = GUIGetMsg()
Select
Case $msg2 = $GUI_EVENT_CLOSE
GUISetState(@SW_RESTORE, $ParentWin)
GUISetState(@SW_ENABLE, $ParentWin)
GUISetState(@SW_HIDE, $ChildWin)
ExitLoop
EndSelect
Wend
EndSelect
WEnd
. Ты его уже видел? тот который я запостил тут.P.S Вместо WinSetState лучше GuiSetState, и порядок таких объявлении очень важен... если именно для дочернего гуи, то так как я привёл в посте (@SW_HIDE в конце), это идеальный способ (таким образом не мигает окно родительского гуи в момент его активации). И ещё, вместо WinActivate("Title") лучше WinSetState("Title", "", @SW_RESTORE), это если для гуи, оно быстрее срабатывает. P.S.S. А ты не знаешь случам как решить задачку про проверку на нажатие определённой клавиши, кнопки мышки, или любого другого действия со стороны пользователя? (Которую я тоже привёл в посте со скриптом для разукрашивания). |
|
|
------- Отправлено: 09:06, 01-12-2006 | #503 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Dentel
Цитата:
|
|
|
Отправлено: 09:43, 01-12-2006 | #504 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
#include <GUIConstants.au3>
#include <Constants.au3>
$GUIParent = GUICreate("My GUI", 290, 70)
Opt("GUICoordMode",2)
$Button_1 = GUICtrlCreateButton ("Message Box", 30, 25, 100)
$Button_2 = GUICtrlCreateButton ("File Open", 30, -1)
GUISetState ()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Button_1
_MsgBox ($GUIParent, "Сообщение", "Текст сообщения", $MB_OK + $MB_ICONASTERISK)
Case $msg = $Button_2
$file = _FileOpenDialog ($GUIParent, "Выбор файла", "C:\WINDOWS", "Документы (*.DOC)|Все (*.*)")
_MsgBox ($GUIParent, "Сообщение", "Выбран файл: " & $file, $MB_OK + $MB_ICONASTERISK)
EndSelect
Wend
Func _MsgBox ($mainGUI, $MsgBoxTitle, $MsgBoxText, $MsgBoxType)
$ret = DllCall ("user32.dll", "int", "MessageBox", _
"hwnd", $mainGUI, _
"str", $MsgBoxText , _
"str", $MsgBoxTitle, _
"int", $MsgBoxType)
Return $ret [0]
EndFunc
Func _FileOpenDialog ($mainGUI, $sTitle, $sInitDir, $sFilter = 'All (*.*)')
Local $aFilter = StringSplit ( $sFilter, '|')
Local $aCSTR [$aFilter [0] *2+1]
Local $i, $iStart, $iFinal, $sCStruct = '', $sWStruct = ''
$aCSTR [0] = $aFilter [0] *2
For $i=1 To $aFilter [0]
$iStart = StringInStr ($aFilter [$i], '(', 0, 1)
$iFinal = StringInStr ($aFilter [$i], ')', 0,-1)
$aCSTR [$i*2-1] = StringStripWS (StringLeft ($aFilter [$i], $iStart-1), 3)
$aCSTR [$i*2] = StringStripWS (StringTrimRight (StringTrimLeft ($aFilter [$i], $iStart), StringLen ($aFilter [$i]) -$iFinal+1), 3)
$sCStruct = $sCStruct & 'byte[' & StringLen ($aCSTR [$i*2-1])+1 & '];byte[' & StringLen ($aCSTR [$i*2])+1 & '];'
$sWStruct = $sWStruct & 'byte[' & StringLen ($aCSTR [$i*2-1])*2+2 & '];byte[' & StringLen ($aCSTR [$i*2])*2+2 & '];'
Next
Local $uCSTR = DllStructCreate ($sCStruct & 'byte[1]')
Local $uWSTR = DllStructCreate ($sWStruct & 'byte[2]')
For $i=1 To $aCSTR [0]
DllStructSetData ($uCSTR, $i, $aCSTR [$i])
Next
$ret = DllCall ("kernel32.dll", "int", "MultiByteToWideChar", _
"int", 0, _
"int", 0, _
"ptr", DllStructGetPtr ($uCSTR), _
"int", DllStructGetSize ($uCSTR), _
"ptr", DllStructGetPtr ($uWSTR), _
"int", DllStructGetSize ($uWSTR) )
$ret = DllCall("Shell32.dll", "int", 'GetFileNameFromBrowse', _
'hwnd', $mainGUI, _
'wstr', '', _
'int', 255, _
'wstr', $sInitDir, _
'wstr', '', _
'ptr', DllStructGetPtr ($uWSTR), _
'wstr', $sTitle )
Return $ret [2]
EndFunc
|
|
|
Отправлено: 10:23, 02-12-2006 | #505 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
- нет надежных средств для снятия состояния клавиатуры, пользовательские программы работают с виртуальной, а не реальной клавиатурой; - существуют API-функции, позволяющие снимать состояние всех клавиш виртуальной клавиатуры за один вызов, т.е. возможно отслеживать все действия пользователя, но пока активно окно приложения. |
|
|
Отправлено: 11:00, 02-12-2006 | #506 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
| [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
| [архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
| [Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
| [Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 | |
|