|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
(*.*) Сообщения: 36561 |
Внимание! В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема. Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно ![]() ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску) (он же прикреплен в шапке) Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать А вот вариант куда более примитивный (для Fat):
HotKeySet("{ESC}", "Quit") ;Global $sBlock_Password = "Pass" Global $sBlockFiles_List = "C:\Temp\Readme.txt|C:\Temp\Web.doc|C:\Temp\DXSETUP.exe" Global $aBlockFiles_List = StringSplit($sBlockFiles_List, "|") While 1 Sleep(1000) $aProcess_Info = _ProcessesGetInfo() For $i = 1 To UBound($aProcess_Info)-1 For $j = 1 To $aBlockFiles_List[0] If StringInStr($aProcess_Info[$i][1], $aBlockFiles_List[$j]) Or $aProcess_Info[$i][7] = $aBlockFiles_List[$j] Then _BlockFile_Proc($aBlockFiles_List[$j], $aProcess_Info[$i][26]) ExitLoop EndIf Next Next WEnd Func _BlockFile_Proc($sFile, $iProc) ;_ProcessSuspendSwitch($iProc, True) Local $hBlockedFile_Win = _ProcessGetWindow($iProc) ;~ Local $s_Password = InputBox(StringFormat("File Blocked (%s) - Attention!", StringRegExpReplace($sFile, "^.*\\", "")), _ ;~ "Blocked File Execution attempt. Please insert password to unlock it:", "", "*", 300, 120, -1, -1, 0, $hBlockedFile_Win[1]) MsgBox(262144+48, "File Blocker - Attention!", _ StringFormat("You are not allowed to open this File (%s)", _ StringRegExpReplace($sFile, "^.*\\", "")), 0, $hBlockedFile_Win[1]) ;If $s_Password = $sBlock_Password Then Return _ProcessSuspendSwitch($iProc, False) Return ProcessClose($iProc) EndFunc Func _ProcessesGetInfo() Local $oColItems, $objWMIService, $objItem, $cI_Compname = @ComputerName Local $aProcessInfo[1000][42], $i = 1 $objWMIService = ObjGet("winmgmts:\\" & $cI_Compname & "\root\CIMV2") $oColItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL") If Not IsObj($oColItems) Then Return SetError(1, 2, 0) For $objItem In $oColItems $aProcessInfo[$i][0] = $objItem.Name $aProcessInfo[$i][1] = $objItem.CommandLine $aProcessInfo[$i][2] = $objItem.CreationClassName $aProcessInfo[$i][3] = $objItem.CreationDate $aProcessInfo[$i][4] = $objItem.Description $aProcessInfo[$i][5] = $objItem.CSCreationClassName $aProcessInfo[$i][6] = $objItem.CSName $aProcessInfo[$i][7] = $objItem.ExecutablePath $aProcessInfo[$i][8] = $objItem.ExecutionState $aProcessInfo[$i][9] = $objItem.Handle $aProcessInfo[$i][10] = $objItem.HandleCount $aProcessInfo[$i][11] = $objItem.KernelModeTime $aProcessInfo[$i][12] = $objItem.MaximumWorkingSetSize $aProcessInfo[$i][13] = $objItem.MinimumWorkingSetSize $aProcessInfo[$i][14] = $objItem.OSCreationClassName $aProcessInfo[$i][15] = $objItem.OSName $aProcessInfo[$i][16] = $objItem.OtherOperationCount $aProcessInfo[$i][17] = $objItem.OtherTransferCount $aProcessInfo[$i][18] = $objItem.PageFaults $aProcessInfo[$i][19] = $objItem.PageFileUsage $aProcessInfo[$i][20] = $objItem.ParentProcessId $aProcessInfo[$i][21] = $objItem.PeakPageFileUsage $aProcessInfo[$i][22] = $objItem.PeakVirtualSize $aProcessInfo[$i][23] = $objItem.PeakWorkingSetSize $aProcessInfo[$i][24] = $objItem.Priority $aProcessInfo[$i][25] = $objItem.PrivatePageCount $aProcessInfo[$i][26] = $objItem.ProcessId $aProcessInfo[$i][27] = $objItem.QuotaNonPagedPoolUsage $aProcessInfo[$i][28] = $objItem.QuotaPagedPoolUsage $aProcessInfo[$i][29] = $objItem.QuotaPeakNonPagedPoolUsage $aProcessInfo[$i][30] = $objItem.QuotaPeakPagedPoolUsage $aProcessInfo[$i][31] = $objItem.ReadOperationCount $aProcessInfo[$i][32] = $objItem.ReadTransferCount $aProcessInfo[$i][33] = $objItem.SessionId $aProcessInfo[$i][34] = $objItem.Status $aProcessInfo[$i][35] = $objItem.ThreadCount $aProcessInfo[$i][36] = $objItem.UserModeTime $aProcessInfo[$i][37] = $objItem.VirtualSize $aProcessInfo[$i][38] = $objItem.WindowsVersion $aProcessInfo[$i][39] = $objItem.WorkingSetSize $aProcessInfo[$i][40] = $objItem.WriteOperationCount $aProcessInfo[$i][41] = $objItem.WriteTransferCount $i += 1 Next $aProcessInfo[0][0] = $i-1 ReDim $aProcessInfo[$i][42] If $aProcessInfo[0][0] < 1 Then Return SetError(1, 1, 0) Return $aProcessInfo EndFunc Func _ProcessGetWindow($iPID) Local $aWinList = WinList() Local $aRet[2] If IsString($iPID) Then $iPID = ProcessExists($iPID) For $i = 1 To UBound($aWinList)-1 If WinGetProcess($aWinList[$i][1]) = $iPID Then $aRet[0] = $aWinList[$i][0] ;Title $aRet[1] = $aWinList[$i][1] ;WinHandle Return $aRet EndIf Next Return SetError(1, 0, $aRet) EndFunc Func _ProcessSuspendSwitch($iPIDOrName, $iSuspend = True) If IsString($iPIDOrName) Then $iPIDOrName = ProcessExists($iPIDOrName) If Not $iPIDOrName Then Return SetError(1, 0, 0) Local $aNtSuspResumProc Local $ah_OpProcess = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1F0FFF, 'int', False, 'int', $iPIDOrName) If $iSuspend Then $aNtSuspResumProc = DllCall("ntdll.dll", "int", "NtSuspendProcess", "int", $ah_OpProcess[0]) Else $aNtSuspResumProc = DllCall("ntdll.dll", "int", "NtResumeProcess", "int", $ah_OpProcess[0]) EndIf DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ah_OpProcess) If IsArray($aNtSuspResumProc) Then Return 1 Return SetError(2, 0, 0) EndFunc Func Quit() Exit EndFunc ![]() Работает не для всех файлов, зависит от приложения сопоставленного с типом файла. Цитата Maza Faka:
![]() |
|
------- Отправлено: 16:25, 15-12-2008 | #1291 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать Этот вариант мне больше понравился:
$sFile = FileOpenDialog("Select a file", "", "All files (*.*)") If @error Then Exit Global $sPass = InputBox("File security", "Please set a password", "", "*") If @error Then Exit Global $hFile = _CreateFile($sFile) If $hFile = -1 Then Exit MsgBox(16, "Error", "Unable to open file") HotKeySet("^d", "_Decrypt") ;Ctrl + d While 1 Sleep(100) WEnd Func _CreateFile($sFile) Local Const $GENERIC_READ = 0x80000000 Local Const $GENERIC_WRITE = 0x40000000 Local Const $OPEN_EXISTING = 3 $sFile = "\\.\" & $sFile Local $aRet = DllCall("kernel32.dll", "hwnd", "CreateFile", _ "str", $sFile, _ "int", BitOR($GENERIC_READ, $GENERIC_WRITE), _ "int", 0, _ "ptr", 0, _ "int", $OPEN_EXISTING, _ "int", 0, _ "int", 0) Return $aRet[0] EndFunc ;==>_CreateFile Func _Decrypt() Local $sCurPass = InputBox("File security", "Please enter a password", "", "*") If @error Then Return 0 If $sCurPass == $sPass Then DllCall("kernel32.dll", "int", "CloseHandle", "hwnd", $hFile) MsgBox(64, "Success", "File decrypted") Exit Else MsgBox(16, "Error", "Access denied") EndIf EndFunc ;==>_Decrypt МОжет кто подправит? |
------- Отправлено: 15:48, 16-12-2008 | #1292 |
BadEvent
Сообщения: n/a |
Всё, разобрался сам, спасибо)
|
Отправлено: 18:30, 16-12-2008 | #1293 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать morgan1991,
Цитата morgan1991:
![]() |
|
------- Отправлено: 01:42, 17-12-2008 | #1294 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать Цитата morgan1991:
![]() $sFile = FileSelectFolder("Select the folder", "") If @error Then Exit Global $sPass = InputBox("File security", "Please set a password", "", "*") If @error Then Exit Global $hFile = _CreateFile($sFile) If $hFile = -1 Then Exit MsgBox(16, "Error", "Unable to open file") HotKeySet("^d", "_Decrypt") ;Ctrl + d While 1 Sleep(100) WEnd Func _CreateFile($sFile) Local Const $GENERIC_READ = 0x80000000 Local Const $GENERIC_WRITE = 0x40000000 Local Const $FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 Local Const $OPEN_EXISTING = 3 $sFile = "\\.\" & $sFile Local $aRet = DllCall("kernel32.dll", "hwnd", "CreateFile", _ "str", $sFile, _ "int", BitOR($GENERIC_READ, $GENERIC_WRITE), _ "int", 0, _ "ptr", 0, _ "int", $OPEN_EXISTING, _ "int", $FILE_FLAG_BACKUP_SEMANTICS, _ ;Что бы получить дескриптор каталога, установите флажок FILE_FLAG_BACKUP_SEMANTICS "int", 0) Return $aRet[0] EndFunc ;==>_CreateFile Func _Decrypt() Local $sCurPass = InputBox("File security", "Please enter a password", "", "*") If @error Then Return 0 If $sCurPass == $sPass Then DllCall("kernel32.dll", "int", "CloseHandle", "hwnd", $hFile) MsgBox(64, "Success", "File decrypted") Exit Else MsgBox(16, "Error", "Access denied") EndIf EndFunc ;==>_Decrypt ![]() |
|
------- Отправлено: 07:19, 17-12-2008 | #1295 |
![]() Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 20:40, 17-12-2008 | #1296 |
![]() Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать AutoIt3\Include\WindowsConstants.au3
Global Const $WS_POPUP = 0x80000000 Та же фигня была. Потом пропало. Не знаю, почему. М. б. из-за того что установил полный SciTE4AutoIt3. Не знаю точно. |
------- Отправлено: 21:10, 17-12-2008 | #1297 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Maza Faka:
![]() |
|
------- Отправлено: 23:25, 17-12-2008 | #1298 |
Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать помогите
написал тут код ,Но есть проблема Я могу закрит иконку ,толко нажав ESC или Enter что надо даписат что бы иконка закривалас при нажатии мышки на нее? TEMP = дорожка к *.png($temp = "E:\VBA\AutoIt\GUI\1.png" ) #NoTrayIcon #include <GDIPlus.au3>; this is where the magic happens, people #include <GuiComboBox.au3> #include <File.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 ;~ Dim $temp1 $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 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 EndFunc ;==>Transp_PNG Func CancelPressed() 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) If ($hWnd = $GUI) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION 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 |
Отправлено: 17:37, 18-12-2008 | #1299 |
![]() Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Creat0R:
|
|
------- Отправлено: 18:05, 18-12-2008 | #1300 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ | FOX RED | Защита компьютерных систем | 67 | 21-11-2007 15:05 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|