Войти

Показать полную графическую версию : [Архив - Часть 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

mustafar
29-12-2008, 13:42
спасибо!!!

SyDr
29-12-2008, 17:40
Имеется массив строк. Как обратиться к определённому символу определённой строки?
$Array[$i][$n] не подходит...

Creat0R
29-12-2008, 23:47
Как обратиться к определённому символу определённой строки? »
Что значит обратиться? StringMid($aArray[$i], 2, 1) ?

mustafar
30-12-2008, 16:34
Ещё два вопроса: Как сделать чтобы этот скрипт искал эти пиксели в определённом окне? и как сделать что бы он ждал их появления (пикселей) и не выключался, а то он у меня проверяет координаты прямоугольника, не находит нужного цвета и выключается.

Creat0R
30-12-2008, 21:51
Как сделать чтобы этот скрипт искал эти пиксели в определённом окне? и как сделать что бы он ждал их появления (пикселей) и не выключался »



HotKeySet("{ESC}", "_Quit")

$hWindow = WinGetHandle("[CLASS:SciTEWindow]")

While 1
$nColor = PixelSearch(200, 150, 220, 170, 0xFFFFFF, 0, 1, $hWindow)
If Not @error Then _MyFunc($nColor)

Sleep(100)
WEnd

Func _MyFunc($nColor)
MsgBox(64, '', 'Hello from MyFunc(' & $nColor[0] & ', ' & $nColor[1] & ') :)')

_Quit()
EndFunc

Func _Quit()
Exit
EndFunc

BonD 007
02-01-2009, 22:10
Хочу, чтобы в Новом 2009-м году при нажатии на какую-нибудь горячую клавишу создавалась новая папка в активном окне, а то надоело постоянно клацать правой кнопой мыши, целиться в создать, потом в папку... долго это. Да и названия "Новая папка", "Новая папка (2)" поднадоели; хочется, чтоб их можно было поменять (к примеру, чтоб было "0", "1", "2" и т. д.). Прога для назначения горячей клавиши на приложение у меня есть, да и в Windows есть такая функция, а вот скриптик хотелось бы поиметь. Может можно это на AutoIt сделать? Или при помощи командной строки. Может есть проги, которые позволяют это делать? Помогите пожалуйста.

Creat0R
02-01-2009, 22:38
можно и так: »
Вообще-то эта тема по AutoIt ;) ...

BonD 007,
при нажатии на какую-нибудь горячую клавишу создавалась новая папка в активном окне »
Пример:

#NoTrayIcon

Opt("WinWaitDelay", 1)

Global $sFileNameFormat = "New_%i"

HotKeySet("^+n", "_CreateFolder_Proc")
HotKeySet("^+w", "_Quit")

While 1
Sleep(1000)
WEnd

Func _CreateFolder_Proc()
Local $sExplorer_Title = "[CLASS:CabinetWClass]"
If Not WinActive($sExplorer_Title) Then Return

Local $sPath = ControlGetText($sExplorer_Title, "", "Edit1")
If Not StringInStr(FileGetAttrib($sPath), "D") Then Return

Local $iFolder_Num = 1
Local $sNewFolderName = StringFormat($sFileNameFormat, $iFolder_Num)

While StringInStr(FileGetAttrib($sPath & "\" & $sNewFolderName), "D")
$iFolder_Num += 1
$sNewFolderName = StringFormat($sFileNameFormat, $iFolder_Num)
WEnd

DirCreate($sPath & "\" & $sNewFolderName)
EndFunc

Func _Quit()
Exit
EndFunc

Maza Faka
03-01-2009, 07:48
Пример: »
Неплохо было бы добавить проверку на класс ExploreWClass, вдруг пользователь запускает Explorer вместо "Мой компьютер":
#NoTrayIcon

Opt("WinWaitDelay", 1)

Global $sFileNameFormat = "New_%i"

HotKeySet("^+n", "_CreateFolder_Proc") ;Ctrl + Shift + n
HotKeySet("^+w", "_Quit") ;Ctrl + Shift + w

While 1
Sleep(1000)
WEnd

Func _CreateFolder_Proc()
Local $sExplorer_Title = "[CLASS:CabinetWClass]"

If Not WinActive($sExplorer_Title) Then $sExplorer_Title = "[CLASS:ExploreWClass]"
If Not WinActive($sExplorer_Title) Then Return

Local $sPath = ControlGetText($sExplorer_Title, "", "Edit1")
If Not StringInStr(FileGetAttrib($sPath), "D") Then Return

Local $iFolder_Num = 1
Local $sNewFolderName = StringFormat($sFileNameFormat, $iFolder_Num)

While StringInStr(FileGetAttrib($sPath & "\" & $sNewFolderName), "D")
$iFolder_Num += 1
$sNewFolderName = StringFormat($sFileNameFormat, $iFolder_Num)
WEnd

DirCreate($sPath & "\" & $sNewFolderName)
EndFunc ;==>_CreateFolder_Proc

Func _Quit()
Exit
EndFunc ;==>_Quit
:)

BonD 007
03-01-2009, 13:45
Просто поместить код из предыдущего сообщения в файл с расширением ".au3", запустить, нажать Ctrl + Shift + n и появится папка? Что-то не получается. И ещё. Когда я писал "в активном окне", я имел ввиду чтобы, к примеру, при нажатии тех же Ctrl + Shift + n создавалась папка в любом окне Explorer'а, которое в данный момент активно (или на рабочем столе) независимо от того, где лежит скрипт.

Creat0R
03-01-2009, 14:31
Когда я писал "в активном окне", я имел ввиду чтобы, к примеру, при нажатии тех же Ctrl + Shift + n создавалась папка в любом окне Explorer'а, которое в данный момент активно (или на рабочем столе) независимо от того, где лежит скрипт. »
Рабочий стол не предусматривался, тогда так:

#NoTrayIcon

Opt("WinWaitDelay", 1)

Global $sFileNameFormat = "New_%i"

HotKeySet("^+n", "_CreateFolder_Proc") ;Ctrl + Shift + n
HotKeySet("^+w", "_Quit") ;Ctrl + Shift + w

While 1
Sleep(1000)
WEnd

Func _CreateFolder_Proc()
Local $sExplorer_Title = "[CLASS:CabinetWClass]"
Local $sPath

If Not WinActive($sExplorer_Title) Then $sExplorer_Title = "[CLASS:ExploreWClass]"
If Not WinActive($sExplorer_Title) Then $sExplorer_Title = "[CLASS:Progman]"
If Not WinActive($sExplorer_Title) Then Return

Switch $sExplorer_Title
Case "[CLASS:CabinetWClass]", "[CLASS:ExploreWClass]"
Local $sWin_Title = WinGetTitle($sExplorer_Title)
Local $sWin_Text = WinGetText($sExplorer_Title)

$sPath = StringRegExpReplace($sWin_Text, "(?s).*(\r\n|)(\w+:\\.*" & $sWin_Title & ")(\r\n|.*)", "\2")
Case "[CLASS:Progman]"
$sPath = @DesktopDir
EndSwitch

If Not StringInStr(FileGetAttrib($sPath), "D") Then $sPath = ControlGetText($sExplorer_Title, "", "Edit1")
If Not StringInStr(FileGetAttrib($sPath), "D") Then Return

Local $iFolder_Num = 1
Local $sNewFolderName = StringFormat($sFileNameFormat, $iFolder_Num)

While StringInStr(FileGetAttrib($sPath & "\" & $sNewFolderName), "D")
$iFolder_Num += 1
$sNewFolderName = StringFormat($sFileNameFormat, $iFolder_Num)
WEnd

DirCreate($sPath & "\" & $sNewFolderName)
EndFunc ;==>_CreateFolder_Proc

Func _Quit()
Exit
EndFunc ;==>_Quit

Maza Faka
03-01-2009, 15:26
при нажатии тех же Ctrl + Shift + n создавалась папка в любом окне Explorer'а, которое в данный момент активно (или на рабочем столе) »
Правильно заданный вопрос - половина ответа :umnik:

ganselo
03-01-2009, 17:56
тогда так: »
Что то у меня этот скриптик не хочит работать... Я компилю его запускаю, жму в активном окне проводника ctrl+shift+n и ни чего не происходит. Мб что то делаю не так?

katok888
03-01-2009, 18:52
Что то у меня этот скриптик не хочит работать. »
Такая же фигня.

Creat0R
03-01-2009, 19:53
ganselo, katok888,
этот скриптик не хочит работать »
Вроде поправил... интересно, что у вас показывает Au3 Info Tool при навидении на тело папки (во вкладке «Visible Text»)?

ganselo
03-01-2009, 20:02
интересно, что у вас показывает Au3 Info Tool при навидении на тело папки (во вкладке «Visible Text»)? »
У меня показывает CabinetWClass

katok888
03-01-2009, 20:04
Creat0R, интересно, что у вас показывает Au3 Info Tool при навидении на тело папки »
FolderView

ganselo
03-01-2009, 20:10
интересно, что у вас показывает Au3 Info Tool при навидении на тело папки »
Смотри скрин.
И еще... На Рабочем столе папки создаются, а в проводнике нет.

katok888
03-01-2009, 20:18
Все равно не работает

Frag-o-Matik
03-01-2009, 20:26
Помогите сделать небольшой скрипт, сам в программировании не силен
Смысл в том, что имеется запускной файл (допустим Zapusk.exe), при его запуске появляется окно с полосой проверки измененных файлов в папке "sys", после проверки в окне загорается кнопка "установить", после нажатия этой кнопки закрывается процесс Zapusk.exe и открывается Ustanovka.exe, вот надо чтобы после нажатия этой кнопки "установить" - процесс Ustanovka.exe не запустился, а сначала переименовывалась папка "sys" в папку "sys1", а после - папка "path" в папку "sys", и только потом с новой папки "1" запускался процесс Ustanovka.exe. Понимаю что заумно, но прошу помочь, вот код скрипта, где вопросы это то место где надо вставить то чего я не понимаю :)



If FileExists("path") Then
RunWait("Zapusk.exe", "")
ProcessWaitClose ( "Zapusk.exe" )

???; ВОТ ЗДЕСЬ Я НЕ ПОНИМАЮ ЧТО НАПИСАТЬ)

DirMove("sys", "sys1")
DirMove("path", "sys")
EndIf

ProcessWaitClose ( "Ustanovka.exe" )
DirMove("system", "path")
DirMove("system1", "system")
exit



Ну и соотвественно после закрытия процесса Ustanovka.exe, папки переименовывались назад, что выше уже написано в коде

Забыл сказать, просто так файл Ustanovka.exe не запустишь, тока через Zapusk.exe

Creat0R
04-01-2009, 01:17
ganselo, katok888,
У вас я так понял Vista? Я проверял на XP :shuffle:

Смотри скрин »
А что во вкладке Hidden Text? :)

Так или иначе, вот версия-отладчик, будет записывать лог, если не работает, лог в студию:

#NoTrayIcon

Opt("WinWaitDelay", 1)

Global $iDebug = True
Global $sDebug_LogFile = @ScriptDir & "\DebugLog.log"

Global $sFileNameFormat = "New_%i"

HotKeySet("^+n", "_CreateFolder_Proc") ;Ctrl + Shift + n
HotKeySet("^+w", "_Quit") ;Ctrl + Shift + w

OnAutoItStart_Init()

While 1
Sleep(1000)
WEnd

Func _CreateFolder_Proc()
_DebugToLog_Proc("_CreateFolder_Proc Call: Called by HotKey(" & @HotKeyPressed & ").")

Local $sExplorer_Title = "[CLASS:CabinetWClass]"
Local $sPath, $iFolder_Created = 0

If Not WinActive($sExplorer_Title) Then $sExplorer_Title = "[CLASS:ExploreWClass]"
If Not WinActive($sExplorer_Title) Then $sExplorer_Title = "[CLASS:Progman]"
If Not WinActive($sExplorer_Title) Then _
Return _DebugToLog_Proc("_CreateFolder_Proc Call: Dir creation is not possible in currently active window: " & _
WinGetTitle("[ACTIVE]") & @CRLF)

Switch $sExplorer_Title
Case "[CLASS:CabinetWClass]", "[CLASS:ExploreWClass]"
Local $sWin_Title = WinGetTitle($sExplorer_Title)
Local $sWin_Text = WinGetText($sExplorer_Title)

$sPath = StringRegExpReplace($sWin_Text, "(?s).*(\r\n|)(\w+:\\.*" & $sWin_Title & ")(\r\n|.*)", "\2")
Case "[CLASS:Progman]"
$sPath = @DesktopDir
Case Else
Return _DebugToLog_Proc( _
"_CreateFolder_Proc Call: " & _
"Unexpected error (can not get window class name, perhaps a memory unavailable)." & @CRLF)
EndSwitch

_DebugToLog_Proc("_CreateFolder_Proc Call: Found active window with following Class Name: " & $sExplorer_Title)
_DebugToLog_Proc("_CreateFolder_Proc Call: And with the following Title: " & WinGetTitle($sExplorer_Title))

If Not StringInStr(FileGetAttrib($sPath), "D") Then $sPath = ControlGetText($sExplorer_Title, "", "Edit1")
If Not StringInStr(FileGetAttrib($sPath), "D") Then _
Return _DebugToLog_Proc("_CreateFolder_Proc Call: Path for creating folder was not found: " & $sPath)

_DebugToLog_Proc("_CreateFolder_Proc Call: Detected path for creating folder in: " & $sPath)

Local $iFolder_Num = 1
Local $sNewFolderName = StringFormat($sFileNameFormat, $iFolder_Num)

While StringInStr(FileGetAttrib($sPath & "\" & $sNewFolderName), "D")
$iFolder_Num += 1
$sNewFolderName = StringFormat($sFileNameFormat, $iFolder_Num)
WEnd

_DebugToLog_Proc("_CreateFolder_Proc Call: Creating folder with the following name: " & $sNewFolderName & "...")

$iFolder_Created = DirCreate($sPath & "\" & $sNewFolderName)
_DebugToLog_Proc("_CreateFolder_Proc Call: Folder created(?): " & ($iFolder_Created = 1) & @CRLF)
EndFunc ;==>_CreateFolder_Proc

Func _DebugToLog_Proc($sDebug_Info)
If Not $iDebug Then Return

_FileWriteLogEx($sDebug_LogFile, $sDebug_Info & @CRLF)
EndFunc ;==>_DebugToLog_Proc

Func _FileWriteLogEx($sLogPath, $sLogMsg, $iFlag = -1)
Local $sDateNow, $sTimeNow, $sMsg, $iWriteFile, $hOpenFile, $iOpenMode = 1

$sDateNow = @YEAR & "-" & @MON & "-" & @MDAY
$sTimeNow = @HOUR & ":" & @MIN & ":" & @SEC

$sMsg = $sDateNow & " " & $sTimeNow & ">> " & $sLogMsg

If $iFlag <> -1 Then
$sMsg &= FileRead($sLogPath)
$iOpenMode = 2
EndIf

$hOpenFile = FileOpen($sLogPath, $iOpenMode)
If $hOpenFile = -1 Then Return SetError(1, 0, 0)

$iWriteFile = FileWriteLine($hOpenFile, $sMsg)
If $iWriteFile = -1 Then Return SetError(2, 0, 0)

Return FileClose($hOpenFile)
EndFunc ;==>_FileWriteLogEx

Func _Quit()
Exit
EndFunc ;==>_Quit

Func OnAutoItStart_Init()
If $iDebug Then
If FileRead($sDebug_LogFile) <> "" Then
_FileWriteLogEx($sDebug_LogFile, _
StringFormat("============ Debug Log For [%s] Started ============\r\n\r\n...\r\n\r\n", @ScriptName))
Else
_FileWriteLogEx($sDebug_LogFile, StringFormat("============ Debug Log For [%s] Started...", @ScriptName))
_FileWriteLogEx($sDebug_LogFile, StringFormat("============ Operating System: %s\r\n", @OSVersion))
_FileWriteLogEx($sDebug_LogFile, StringFormat("============ Service Pack: %s\r\n", @OSServicePack))
_FileWriteLogEx($sDebug_LogFile, _
StringFormat("============ File System: %s ============\r\n\r\n...\r\n\r\n", DriveGetFileSystem(@HomeDrive)))
EndIf
EndIf
EndFunc ;==>OnAutoItStart_Init

Func OnAutoItExit()
If $iDebug Then
_FileWriteLogEx($sDebug_LogFile, _
StringFormat("============ Debug Log Finished (EXIT CODE: %i) ============\r\n\r\n\r\n", @ScriptName, @exitCode))

$iOpen_LogFile = MsgBox(36, @ScriptName & " - Attention", "Open Debug Log File?" & @CRLF & @CRLF & $sDebug_LogFile)
If $iOpen_LogFile = 6 Then ShellExecute($sDebug_LogFile)
EndIf
EndFunc ;==>OnAutoItExit




© OSzone.net 2001-2012