Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
FlatX007
18-12-2008, 19:13
Объясните кто нибудь, откуда берётся название устройства "REMOVABLE" в окне сообщения в этом скрипте ...
Непонятно одно, что значит в переменной $var[$i] значение в квадратных скобках ? [$i]
Возможно вопрос тупой Но непонимаю Я ... если можно объясните с начала скрипта.
$var = DriveGetDrive( "REMOVABLE" )
If NOT @error Then
MsgBox(4096,"", "Found " & $var[0] & " drives")
For $i = 1 to $var[0]
MsgBox(4096,"Drive " & $i, $var[$i])
Next
EndIf
shyra1976, что бы иконка закривалас при нажатии мышки на нее?
Включаю свои телепатические способности, и предполагаю (не видя ничего при запуске данного скрипта, т.к файл иконки нарисовать не удаётся на основе телепатии), что _IsPressed() тут поможет (правда почему-то нужно кликать два раза подряд): #NoTrayIcon
#include <GDIPlus.au3>
#include <GuiComboBox.au3>
#include <File.au3>
#include <Misc.au3>
#include <Array.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WinAPI.au3>
Global Const $AC_SRC_ALPHA = 1;, $ULW_ALPHA = 2
Global $launchDir = @DesktopDir, $GUI
Global $hUser32DllOpen = DllOpen("User32.dll")
$temp = "E:\VBA\AutoIt\GUI\1.png"
Transp_PNG($temp)
Func Transp_PNG($temp, $iOpacity = 255, $EnableFade = True)
If $iOpacity < 0 Then $iOpacity = 0
If $iOpacity > 255 Then $iOpacity = 255
; Load PNG file as GDI bitmap
_GDIPlus_Startup()
$pngSrc = $temp
$hImage = _GDIPlus_ImageLoadFromFile($pngSrc)
; Extract image width and height from PNG
$width = _GDIPlus_ImageGetWidth($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)
; Create layered window
$GUI = GUICreate("lod3n launcher", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUISetState()
WinSetOnTop($GUI, "", 1)
If $EnableFade Then
;fade in png background
For $i = 0 To $iOpacity Step 1
SetBitmap($GUI, $hImage, $i)
Next
Else
SetBitmap($GUI, $hImage, $iOpacity)
EndIf
; set default button for Enter key activation - renders outside GUI window
$BtnExit = GUICtrlCreateButton("Exit", $width, $height, 10, 10, $BS_DEFPUSHBUTTON)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $BtnExit
ExitLoop
EndSwitch
If _IsPressed(01, $hUser32DllOpen) Then ExitLoop
WEnd
If $EnableFade Then
;fade out png background
For $i = $iOpacity To 0 Step -1
SetBitmap($GUI, $hImage, $i)
Next
Else
SetBitmap($GUI, $hImage, 0)
EndIf
CancelPressed()
EndFunc ;==>Transp_PNG
Func CancelPressed()
DllClose($hUser32DllOpen)
Exit
EndFunc
; Handle the WM_NCHITTEST for the layered window so it can be dragged by clicking anywhere on the image.
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
Switch $iMsg
Case $WM_NCHITTEST
If $hWnd = $GUI Then Return $HTCAPTION
EndSwitch
EndFunc ;==>WM_NCHITTEST
; SetBitMap
Func SetBitmap($hGUI, $hImage, $iOpacity)
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
$hScrDC = _WinAPI_GetDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", $iOpacity)
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
EndFunc ;==>SetBitmap
morgan1991,
Если закрыть доступ к текстовому файлу с расширением .php (на других не пробовал) тогда документ открывается с помощью notepad.
Но он не доступен, если я ошибаюсь и он доступен, то прошу файл в студию.
FlatX007, откуда берётся название устройства "REMOVABLE" в окне сообщения в этом скрипте »
Вопрос не очень понятен, возможно стоит прочитать справку по этой команде (DriveGetDrive)?
что значит в переменной $var[$i] значение в квадратных скобках ? [$i] »
Это элемент массива.
если можно объясните с начала скрипта. »
;Получаем в массив все съёмные носители (USB-флэшки, Floppy-диски и т.п.)
$var = DriveGetDrive("REMOVABLE")
If NOT @error Then
;Если небыло ошибки, показываем сколько устройств найдено ($var[0])
MsgBox(4096, "", "Found " & $var[0] & " drives")
;В этом же условии (что ошибок не возникло), проходим по всему массиву,
;и показываем найденые устройства ($i тут это элемент в массиве, от 1-ого до найденного числа устройств -> $var[0])
For $i = 1 to $var[0]
MsgBox(4096,"Drive " & $i, $var[$i])
Next
EndIf
morgan1991
19-12-2008, 00:04
Но он не доступен, если я ошибаюсь и он доступен, то прошу файл в студию. »
У меня любой файл с расширением .php открывается, на win xp sp2 открываю через нотпэд. Прога выдаёт ошибку о том что нет доступа к файлу, нажимаю ок и вуаля текстовый документ открыт можно с ним работать, правда его нельзя изменить но прочитать можно. А вдруг там ценная информация?
morgan1991, любой файл с расширением .php открывается, на win xp sp2 открываю через нотпэд »
Какая файловая система? у меня Fat, и файл блокируется.
morgan1991
19-12-2008, 00:37
Какая файловая система? у меня Fat, и файл блокируется. »
NTFS
NTFS »
Maza Faka
А как же тогда это...
Тестировалось на:
WinXP SP3 FS:NTFS »
Что изменилось с SP2 по 3?
morgan1991,
А другие файлы тоже так “блокируются”?
shyra1976
19-12-2008, 06:44
Включаю свои телепатические способности, и предполагаю (не видя ничего при запуске данного скрипта, т.к файл иконки нарисовать не удаётся на основе телепатии), что _IsPressed() тут поможет (правда почему-то нужно кликать два раза подряд):
Я там написал код
Вы могли бы скинуть библиотеку #include <Misc.au3>
Я там написал код »
А я не говорю что кода нет, просто при его запуске я немогу его проверить как следует, картинки то у меня нет, поэтому GUI не видно.
Вы могли бы скинуть библиотеку #include <Misc.au3> »
Она должна быть с поставкой аутоита (в папке «...AutoIt\Include»).
shyra1976
19-12-2008, 17:03
У меня что то не работает
shyra1976, У меня что то не работает »
Что именно не работает?
Maza Faka
20-12-2008, 07:12
shyra1976
Привет!
Давай сделаем так: ты скачиваешь последнюю стабильную версию AutoIt (http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe) и полный пакет редактора SciTE (http://www.autoitscript.com/cgi-bin/getfile.pl?../autoit3/scite/download/SciTE4AutoIt3.exe) (желательно). Устанавливаешь эти программы (предварительно удалив старые версии этих программ), пробуешь запустить свой проблемный код, и в случае ошибок или проблем с кодом, постишь здесь описание проблемы, с примером желательно :)
Удачи! ;)
Может быть просто закрыть права на доступ к файлу текущему пользователю?
Ребят, может кто-нить подкинуть готовый скрипт сворачивания определённого окна - т.е. щелчок на развёрнутом во весь экран окошке по кнопочке свернуть, окошко я уже сам подставлю надеюсь... :)
Maza Faka, У тебя тоже не работает блокировка на NTFS? (мой скрипт).
SAOPP, скрипт сворачивания определённого окна »
WinSetState("Title", "", @SW_MINIMIZE) чем плох?
Да мне не плох, мне нужно :)
Извиняюсь, между вторыми кавычками мне нужно вписать своё окошко? Ещё вопрос, он будет ждать до появления такого окна, или?
между вторыми кавычками мне нужно вписать своё окошко? »
Между первыми, там же написано, Title. См. справку по этой команде.
он будет ждать до появления такого окна »
Нет, для ожидания используйте WinWait().
Между первыми, там же написано, Title. См. справку по этой команде. »
Я предполагал, что первая заключённая в кавычки - это куда смотреть скрипту, а затем уже какое именно :) Лень мне смотреть это всё, поскольку уж сильно не моё.
Лень мне смотреть это всё, поскольку уж сильно не моё. »
Ну тогда зачем изначально вам нужно было про это спрашивать тут? :unsure:
Вариация на тему поставленной задачи... Странный вопрос :)
Maza Faka
21-12-2008, 07:47
У тебя тоже не работает блокировка на NTFS? »
Работает :)
Вариация на тему поставленной задачи... »
Можно свернуть окно послав сообщение системному меню:
#include <WindowsConstants.au3>
#include <MenuConstants.au3>
Run("Notepad.exe")
WinWait("[CLASS:Notepad]")
$hWnd = WinGetHandle("[CLASS:Notepad]")
MsgBox(48, "Внимание", "Сейчас мы свернём окно блокнота")
DllCall("User32.dll", "int", "SendMessage", _
"hwnd", $hWnd, _
"int", $WM_SYSCOMMAND, _
"int", $SC_MINIMIZE, _
"int", 0)
:)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.