PDA

Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 [66] 67 68 69 70 71 72 73 74 75 76 77 78

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

Creat0R
18-12-2008, 23:33
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 открываю через нотпэд. Прога выдаёт ошибку о том что нет доступа к файлу, нажимаю ок и вуаля текстовый документ открыт можно с ним работать, правда его нельзя изменить но прочитать можно. А вдруг там ценная информация?

Creat0R
19-12-2008, 00:35
morgan1991, любой файл с расширением .php открывается, на win xp sp2 открываю через нотпэд »
Какая файловая система? у меня Fat, и файл блокируется.

morgan1991
19-12-2008, 00:37
Какая файловая система? у меня Fat, и файл блокируется. »
NTFS

Creat0R
19-12-2008, 01:28
NTFS »

Maza Faka

А как же тогда это...

Тестировалось на:
WinXP SP3 FS:NTFS »

Что изменилось с SP2 по 3?

morgan1991,
А другие файлы тоже так “блокируются”?

shyra1976
19-12-2008, 06:44
Включаю свои телепатические способности, и предполагаю (не видя ничего при запуске данного скрипта, т.к файл иконки нарисовать не удаётся на основе телепатии), что _IsPressed() тут поможет (правда почему-то нужно кликать два раза подряд):

Я там написал код

Вы могли бы скинуть библиотеку #include <Misc.au3>

Creat0R
19-12-2008, 14:24
Я там написал код »
А я не говорю что кода нет, просто при его запуске я немогу его проверить как следует, картинки то у меня нет, поэтому GUI не видно.

Вы могли бы скинуть библиотеку #include <Misc.au3> »
Она должна быть с поставкой аутоита (в папке «...AutoIt\Include»).

shyra1976
19-12-2008, 17:03
У меня что то не работает

Creat0R
19-12-2008, 17:45
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) (желательно). Устанавливаешь эти программы (предварительно удалив старые версии этих программ), пробуешь запустить свой проблемный код, и в случае ошибок или проблем с кодом, постишь здесь описание проблемы, с примером желательно :)
Удачи! ;)

SyDr
20-12-2008, 12:12
Может быть просто закрыть права на доступ к файлу текущему пользователю?

SAOPP
20-12-2008, 22:54
Ребят, может кто-нить подкинуть готовый скрипт сворачивания определённого окна - т.е. щелчок на развёрнутом во весь экран окошке по кнопочке свернуть, окошко я уже сам подставлю надеюсь... :)

Creat0R
20-12-2008, 23:39
Maza Faka, У тебя тоже не работает блокировка на NTFS? (мой скрипт).

SAOPP, скрипт сворачивания определённого окна »
WinSetState("Title", "", @SW_MINIMIZE) чем плох?

SAOPP
20-12-2008, 23:41
Да мне не плох, мне нужно :)

Извиняюсь, между вторыми кавычками мне нужно вписать своё окошко? Ещё вопрос, он будет ждать до появления такого окна, или?

Creat0R
20-12-2008, 23:55
между вторыми кавычками мне нужно вписать своё окошко? »
Между первыми, там же написано, Title. См. справку по этой команде.

он будет ждать до появления такого окна »
Нет, для ожидания используйте WinWait().

SAOPP
21-12-2008, 00:00
Между первыми, там же написано, Title. См. справку по этой команде. »
Я предполагал, что первая заключённая в кавычки - это куда смотреть скрипту, а затем уже какое именно :) Лень мне смотреть это всё, поскольку уж сильно не моё.

Creat0R
21-12-2008, 00:10
Лень мне смотреть это всё, поскольку уж сильно не моё. »
Ну тогда зачем изначально вам нужно было про это спрашивать тут? :unsure:

SAOPP
21-12-2008, 00:17
Вариация на тему поставленной задачи... Странный вопрос :)

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