Форматцевт Опубликовано 25 октября, 2013 Автор Жалоба Поделиться Опубликовано 25 октября, 2013 (изменено) Не большой скрипт который может упростить жизнь тем кто использует антивирус McAfee VSE ASE 8.8 ; Отключить иконку в трее #NoTrayIcon; Скрипт не выгружается#Persistent; Запрет повторного запуска#SingleInstancemcVSE := "C:\Program Files (x86)\McAfee\VirusScan Enterprise\"mcCFW := "C:\Program Files (x86)\McAfee\VirusScan Enterprise\Common Framework\"WinMcAfee := "Консоль VirusScan"mcConsol := "mcconsol.exe"mcKey1 := "/NOSPLAS"Hotkey, ^+F12, VseKeyOnOff, On ; Ctrl+Shift+F12 - On/Off клавишHotkey, ^#F12, VseKeyExit, On ; Ctrl+Win+F12 - завершить/выгрузить скриптgosub lVseKeyONfKeysVSE:=truevMsgOptionsDg :=4+4096+32 ;Yes/No button + System Modal (always on top) + Icon QuestionvMsgOptionsInfo :=0+4096+64 ;only an OK button + System Modal (always on top) + Icon Asterisk (info)msgbox, % vMsgOptionsInfo, Switching McAfee VSE Keys, Скрипт клавиатурных вызовов `n`n Старотвал и работает, 2returnVseKeyExit:msgbox, % vMsgOptionsInfo, Switching McAfee VSE Keys, Скрипт клавиатурных вызовов `n`n Завершил работу, 3ExitAppVseKeyOnOff:gosub lQueryif (fKeysVSE)Gosub lVseKeyONelseGosub lVseKeyOFFreturnlQuery:if (!fKeysVSE){msgbox, % vMsgOptionsDg, Switching McAfee VSE Keys, McAfee VSE клавиши = OFF `n `n ВКЛючить McAfee VSE клавиши? ,15IfMsgBox, NoreturnelsefKeysVSE := true}else{msgbox, % vMsgOptionsDg, Switching McAfee VSE Keys, McAfee VSE клавиши = ON `n `n ВЫКЛючить McAfee VSE клавиши? ,15IfMsgBox, NoreturnelsefKeysVSE := false}returnlVseKeyON:Hotkey, LWin & F5, vseOpenCon, OnHotkey, LCtrl & F5, vseStopScan, OnHotkey, LWin & F6, vseOnAccessScanLog, OnHotkey, LCtrl & F6, vseAccessProtectionLog, OnHotkey, LWin & F7, vseScanANDProtectON, OnHotkey, LCtrl & F7, vseScanANDProtectOFF, OnreturnlVseKeyOFF:Hotkey, LWin & F5, vseOpenCon, OffHotkey, LCtrl & F5, vseStopScan, OffHotkey, LWin & F6, vseOnAccessScanLog, OffHotkey, LCtrl & F6, vseAccessProtectionLog, OffHotkey, LWin & F7, vseScanANDProtectON, OffHotkey, LCtrl & F7, vseScanANDProtectOFF, Offreturn;==========McAfee==============;-----Открыть/Закрыть консольvseOpenCon:if (fnWinClose(WinMcAfee))returnRun, %mcConsol% %mcKey1%, %mcVSE%return;-----Остановить целевое сканированиеvseStopScan:while (fnWinClose(WinMcAfee))sleep 500sleep 500Run, %mcConsol% %mcKey1%, %mcVSE%WinWait, %WinMcAfee%WinShowsleep 50SendPlay {End}sleep 50SendPlay {Up}sleep 50SendPlay {F4}sleep 50WinClosereturn;-----Показать журнал сканирования при обращении к файлуvseOnAccessScanLog:while (fnWinClose(WinMcAfee))sleep 500sleep 500Run, %mcConsol% %mcKey1%, %mcVSE%WinWait, %WinMcAfee%WinShowsleep 50SendPlay {Home}sleep 50SendPlay {Down 3}sleep 50SendPlay !afsleep 50WinClosesleep 50SendPlay ^{End} ; в конец журналаsleep 50return;-----Показать журнал защиты доступаvseAccessProtectionLog:while (fnWinClose(WinMcAfee))sleep 500sleep 500Run, %mcConsol% %mcKey1%, %mcVSE%WinWait, %WinMcAfee%WinShowsleep 50SendPlay {Home}sleep 50SendPlay !aesleep 50WinClosesleep 50SendPlay ^{End} ; в конец журналаsleep 50return;-----Включить Защиту длоступа и Сканирование при обращении к файлуvseScanANDProtectON:while (fnWinClose(WinMcAfee))sleep 500sleep 500Run, %mcConsol% %mcKey1%, %mcVSE%WinWait, %WinMcAfee%WinShow;vseProtectONsleep 50SendPlay {Home}SendPlay {F7}sleep 500;vseScanONSendPlay {Down 3}sleep 50SendPlay {F7}sleep 50WinClosesleep 500return;-----Выключить Защиту длоступа и Сканирование при обращении к файлу;Ctrl+F7::vseScanANDProtectOFF:while (fnWinClose(WinMcAfee))sleep 500sleep 500Run, %mcConsol% %mcKey1%, %mcVSE%WinWait, %WinMcAfee%WinShow;vseProtectONsleep 50SendPlay {Home}SendPlay {F4}sleep 500;vseScanOFFSendPlay {Down 3}sleep 50SendPlay {F4}sleep 50WinClosesleep 500return;==========McAfee==============;--- Закрытие окна приложения, если оно существуетfnWinClose(vWin){SetTitleMatchMode, 2IfWinExist, %vWin%{WinClosereturn true}return false } И откомпилированный вариант, который работает автономно - McAfeeHotKeys_32_64.zip Описание и подробности описаны в http://softboard.ru/topic/34736-mcafee/page-4#entry598478 McAfeeHotKeys_32_64.zip Изменено 25 октября, 2013 пользователем Indomito Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 29 октября, 2013 Автор Жалоба Поделиться Опубликовано 29 октября, 2013 (изменено) Скрипт для отключения/подключения к интернету или локальной сети, он использует команду netsh она актуальна для тех у кого подключение через модем-роутер в режиме Router, а не в режиме Bridge. ;-----Инициализация ; Скрипт не выгружается #Persistent ; Запрет повторного запуска #SingleInstance ;--Escape-последовательности как константы для MsgBox, % cEscCR := "`r" cEscLF := "`n" cEscTab := "`t" cEscSps := " " cEscPrc := "`%" cEscQts := """" ;+++++++++++++++++Константы функций вывода окна MsgBox+++++++++++++++++++++++++++++++++++++++++ сMsgOptionsEr :=0+8192+16 ;only an OK button + Task Modal + Icon Hand (stop/error) сMsgOptionsOK :=0+8192+48 ;only an OK button + Task Modal + Icon Exclamation сMsgOptionsDg :=4+8192+32 ;Yes/No button + Task Modal + Icon Question сMsgOptionsInfo :=4+8192+64 ;Yes/No button + Task Modal + Icon Asterisk (info) ;+++++++++++++++++Переменные и константы для вызова консоли в контексте NetSh+++++++ cConsole := "cmd.exe" cNameNet := "Internet" cNetsh := "netsh interface ipv4 set address" " " """"cEscQts cNameNet cEscQts cEscSps cNetON := cNetsh "dhcp" cNetOFF := cNetsh "static 1.0.0.0" vInternetPID := false arOut:=arInternet:=Object() NetName :=1, NetDHCP :=2, NetIP :=3, NetGate :=4, NetState:=5, NetST:=1, FindKey :=2 Internet := [["","интерфейса"], ["" ,"включен:"], ["" ,"IP-адрес"], ["" ,"шлюз:"], [false,false]] Hotkey LCtrl & ESC, lInternet return ;=========Вкючить/Отключить доступ в Интернет lInternet: CmdLine := "netsh interface ipv4 show addresses" RunCon(CmdLine, 0, Output) if (fnInternetState(fnParseStdIn(Output))) { RunCon(cNetOFF, 0, Output) sleep 250 msgbox % сMsgOptionsEr, Сеть и Интернет, Доступ в Интернет = OFF, 3 } else { RunCon(cNetON, 0, Output) sleep 2500 msgbox % сMsgOptionsOK, Сеть и Интернет, Доступ в Интернет = ON, 3 } return ; ======= Определение параметров и статуса Интернета ====== fnInternetState(arOut) { global Internet, NetName, NetDHCP, NetIP, NetGate, NetState, NetST, FindKey k:=1 for i, j in arOut { while(Internet[k,FindKey]) { vFindKey:=Internet[k,FindKey] l := StrLen(vFindKey) vPos:=InStr(j, vFindKey) if (vPos) Internet[k,NetName]:=vStr0:=SubStr(j, vPos+l), k++ Break } } Internet[NetState,NetST]:= false if (Internet[NetDHCP,NetST]="Да") Internet[NetState,NetST]:= true return Internet[NetState,NetST] } ; ======= Постпарсер RunCon =============================== fnParseStdIn(StdIn) { Arr := [], i := 0 Loop, parse, StdIn, `r`n { Row := RegExReplace(A_LoopField, """| |" A_Tab) If Row is space Continue Arr[++i] := Row } Return Arr } ; ======= Функция RunCon ================================== RunCon(CmdLine, Input, ByRef Output) { static BufSizeChar := 1024, hParent := 0 static Show := 0, Flags := 0x101 ; STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW static Buf, BufSizeByte, ProcessInfo, StartupInfo, PipeAttribs static piSize, siSize, paSize, flOffset, shOffset, ihOffset static inOffset, outOffset, errOffset, thrOffset If (!hParent) { BufSizeByte := A_IsUnicode ? BufSizeChar * 2 : BufSizeChar If (A_PtrSize = 8) { piSize := 24, siSize := 104, paSize = 24 flOffset := 60, shOffset := 64, ihOffset := 16 inOffset := 80, outOffset := 88, errOffset := 96 thrOffset := 8 } Else { piSize := 16, siSize := 68, paSize = 12 flOffset := 44, shOffset := 48, ihOffset := 8 inOffset := 56, outOffset := 60, errOffset := 64 thrOffset := 4 } VarSetCapacity(Buf, BufSizeByte, 0), VarSetCapacity(ProcessInfo, piSize, 0) VarSetCapacity(StartupInfo, siSize, 0), VarSetCapacity(PipeAttribs, paSize, 0) NumPut(siSize, StartupInfo, 0, "uint"), NumPut(Flags, StartupInfo, flOffset, "uint") NumPut(Show, StartupInfo, shOffset, "ushort") NumPut(paSize, PipeAttribs, 0, "uint"), NumPut(1, PipeAttribs, ihOffset, "int") hParent := DllCall("GetCurrentProcess", "ptr") } DllCall("CreatePipe", "ptr *", hRead1_tmp, "ptr *", hWrite2 , "ptr", &PipeAttribs, "uint", 0) DllCall("CreatePipe", "ptr *", hRead2, "ptr *", hWrite1_tmp , "ptr", &PipeAttribs, "uint", 0) NumPut(hRead2, StartupInfo, inOffset, "ptr") NumPut(hWrite2, StartupInfo, outOffset, "ptr") NumPut(hWrite2, StartupInfo, errOffset, "ptr") DllCall("DuplicateHandle", "ptr", hParent, "ptr", hRead1_tmp , "ptr", hParent, "ptr *", hRead1 , "uint", 0, "uint", 0 , "uint", 2) ; DUPLICATE_SAME_ACCESS DllCall("CloseHandle", "ptr", hRead1_tmp) DllCall("DuplicateHandle", "ptr", hParent, "ptr", hWrite1_tmp , "ptr", hParent, "ptr *", hWrite1 , "uint", 0, "uint", 0 , "uint", 2) DllCall("CloseHandle", "ptr", hWrite1_tmp) DllCall("ExpandEnvironmentStrings", "str", CmdLine, "str", Buf, "uint", BufSizeChar) CmdLine := Buf Ret := DllCall("CreateProcess", "ptr", 0, "str", CmdLine, "ptr", 0, "ptr", 0 , "uint", 1, "uint", 0, "ptr", 0, "ptr", 0 , "ptr", &StartupInfo, "ptr", &ProcessInfo) If (!Ret) { MsgBox,, %A_ThisFunc%, Не удалось создать процесс. Output := "" Return 1 } hChild := NumGet(ProcessInfo, 0, "ptr") DllCall("CloseHandle", "ptr", NumGet(ProcessInfo, thrOffset, "ptr")) DllCall("CloseHandle", "ptr", hRead2) DllCall("CloseHandle", "ptr", hWrite2) If (Input) { InLen := StrLen(Input) + 2 VarSetCapacity(InBuf, InLen, 0) StrPut(Input . "`r`n", &InBuf, "cp866") DllCall("WriteFile", "ptr", hWrite1, "ptr", &InBuf, "uint", InLen , "uint *", BytesWritten, "uint", 0) } DllCall("CloseHandle", "ptr", hWrite1) Output := "" Loop { If not DllCall("ReadFile", "ptr", hRead1, "ptr", &Buf, "uint", BufSizeByte , "uint *", BytesRead, "uint", 0) Break NumPut(0, Buf, BytesRead, "Char") Output .= StrGet(&Buf, "cp866") } DllCall("CloseHandle", "ptr", hRead1) DllCall("GetExitCodeProcess", "ptr", hChild, "int *", ExitCode) DllCall("CloseHandle", "ptr", hChild) Return ExitCode } Изменено 29 октября, 2013 пользователем Indomito Ссылка на комментарий Поделиться на другие сайты Поделиться
Леха Н Опубликовано 31 октября, 2013 Жалоба Поделиться Опубликовано 31 октября, 2013 Indomito привет спс что ответил .В этих скриптах не силен) конечно очень буду рад если поможешь.А задачи такие закинуть удочку, ждать поклевки ,чтобы сома подсекла и вытащила потом опять закинула)))если ты про эти задачи . а про пилот пишу проста я его про него только слышал. Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 31 октября, 2013 Автор Жалоба Поделиться Опубликовано 31 октября, 2013 (изменено) @Леха Н, не за что :) Я могу написать, но мне нужна точная постановка задачи, т.к. придётся имитировать все твои действия с клавиатурой и мышкой. Изменено 31 октября, 2013 пользователем Indomito Ссылка на комментарий Поделиться на другие сайты Поделиться
Леха Н Опубликовано 31 октября, 2013 Жалоба Поделиться Опубликовано 31 октября, 2013 вот мой скайп Liesha 98 как же это обяснить? Ссылка на комментарий Поделиться на другие сайты Поделиться
Леха Н Опубликовано 31 октября, 2013 Жалоба Поделиться Опубликовано 31 октября, 2013 извини не так написал без пробела и с маленькой буквы)) [censored] i Уведомление:форум создан для общения, а подобные контакты запрещены правиламиПишите хотя бы свои просьбы в личку. THE OLD VERMIN Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 31 октября, 2013 Автор Жалоба Поделиться Опубликовано 31 октября, 2013 (изменено) Хорошо, контакт есть, минут через 10-20 позвоню, а ты пока подумай. По сути это же просто - повтор/автоматизация твоих действий и не более того. Изменено 31 октября, 2013 пользователем Indomito Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 12 декабря, 2013 Автор Жалоба Поделиться Опубликовано 12 декабря, 2013 Исправленный и улучшенный скрипт из поста #27 Текст скрипта ;!!!!!---Только для интерфейса DHCP---!!!!; Константа cNameNet должна содержать имя сетевого интерфейса!!!!; Остальное лучше не менять, кроме путей.;==========Общие пути===========ProgSysPath32 := "C:\Program Files (x86)\"ProgSysPath64 := "C:\Program Files\"WindowsDir := "C:\Windows\";--Пути к AHKPathAhkProg := ProgSysPath64 "AutoHotkey\"PathAhk := "C:\AHK\"PathAhkInclude := PathAhk "Include\"PathAhkIcon := PathAhk "Icon\";--Escape-последовательности как константы для MsgBox, %cEscCR := "`r"cEscLF := "`n"cEscTab := "`t"cEscSps := " "cEscPrc := "`%"cEscQts := """"cAscCR := Asc(cEscCR)cAscLF := Asc(cEscLF)cAscTab := Asc(cEscTab)cAscSps := Asc(cEscSps)cAscPrc := Asc(cEscPrc)cAscQts := Asc(cEscQts)cEsc2LF := cEscLF cEscLFcEscCRLF := cEscCR cEscLF;+++++++++++++++++Константы функций вывода окна MsgBox+++++++++++++++++++++++++++++++++++++++++сMsgOptionsEr :=0+8192+16 ;only an OK button + Task Modal + Icon Hand (stop/error)сMsgOptionsOK :=0+8192+48 ;only an OK button + Task Modal + Icon ExclamationсMsgOptionsDg :=4+8192+32 ;Yes/No button + Task Modal + Icon QuestionсMsgOptionsInfo :=4+8192+64 ;Yes/No button + Task Modal + Icon Asterisk (info);++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;+++++++++++++++++Переменные и константы для вызова консоли в контексте NetSh+++++++cConsole := "cmd.exe"cNameNet := "Internet"cNetsh := "netsh interface ipv4 set address" cEscSps cEscQts cNameNet cEscQts cEscSpscNetON := cNetsh "dhcp"cNetOFF := cNetsh "static 1.0.0.0"vNetOnOffHlp := "ON"vInternetPID := falsearOut:=arInternet:=Object()NetName :=1, NetDHCP :=2, NetIP :=3, NetGate :=4, NetState:=5, NetST:=1, FindKey :=2Internet := [["","интерфейса" cNameNet], ["" ,"включен:"], ["" ,"IP-адрес"], ["" ,"шлюз:"], [false,false]];+++++++++++++++++Gosub lInternetreturn;=========Вкючить/Отключить доступ в ИнтернетlInternet:CmdLine := "netsh interface ipv4 show addresses"RunCon(CmdLine, 0, Output);ret := RunCon(CmdLine, 0, Output)if (fnInternetState(fnParseStdIn(Output))){RunCon(cNetOFF, 0, Output);Run, %cNetOFF% ,, Hide, %vInternetPID% ;netsh interface ipv4 set address "Internet" static 1.0.0.0sleep 2500msgbox % сMsgOptionsEr, Сеть и Интернет, Доступ в Интернет = OFF, 3;vNetOnOffHlp := cOffHK}else{RunCon(cNetON, 0, Output);Run, %cNetON% ,, Hide, %vInternetPID% ;netsh interface ipv4 set address "Internet" dhcpsleep 2500msgbox % сMsgOptionsOK, Сеть и Интернет, Доступ в Интернет = ON, 3;vNetOnOffHlp := cOnHK}return;=============================================; ======= Определение параметров и статуса Интернета ======fnInternetState(arOut){;global Internet, NetName :=1, NetDHCP :=2, NetIP :=3, NetGate :=4, NetState:=5, NetST:=1, FindKey :=2global Internet, NetName, NetDHCP, NetIP, NetGate, NetState, NetST, FindKeyk:=1for i, j in arOut{while(Internet[k,FindKey]){vFindKey:=Internet[k,FindKey]l := StrLen(vFindKey)vPos:=InStr(j, vFindKey)if (vPos)Internet[k,NetName]:=vStr0:=SubStr(j, vPos+l), k++Break}}Internet[NetState,NetST]:= falseif (Internet[NetDHCP,NetST]="Да")Internet[NetState,NetST]:= truereturn Internet[NetState,NetST]}; ======= Постпарсер RunCon ===============================fnParseStdIn(StdIn){Arr := [], i := 0Loop, parse, StdIn, `r`n{Row := RegExReplace(A_LoopField, """| |" A_Tab)If Row is spaceContinueArr[++i] := Row}Return Arr}; ======= Функция RunCon ==================================RunCon(CmdLine, Input, ByRef Output){static BufSizeChar := 1024, hParent := 0static Show := 0, Flags := 0x101 ; STARTF_USESTDHANDLES | STARTF_USESHOWWINDOWstatic Buf, BufSizeByte, ProcessInfo, StartupInfo, PipeAttribsstatic piSize, siSize, paSize, flOffset, shOffset, ihOffsetstatic inOffset, outOffset, errOffset, thrOffsetIf (!hParent) {BufSizeByte := A_IsUnicode ? BufSizeChar * 2 : BufSizeCharIf (A_PtrSize = 8) {piSize := 24, siSize := 104, paSize = 24flOffset := 60, shOffset := 64, ihOffset := 16inOffset := 80, outOffset := 88, errOffset := 96thrOffset := 8}Else {piSize := 16, siSize := 68, paSize = 12flOffset := 44, shOffset := 48, ihOffset := 8inOffset := 56, outOffset := 60, errOffset := 64thrOffset := 4}VarSetCapacity(Buf, BufSizeByte, 0), VarSetCapacity(ProcessInfo, piSize, 0)VarSetCapacity(StartupInfo, siSize, 0), VarSetCapacity(PipeAttribs, paSize, 0)NumPut(siSize, StartupInfo, 0, "uint"), NumPut(Flags, StartupInfo, flOffset, "uint")NumPut(Show, StartupInfo, shOffset, "ushort")NumPut(paSize, PipeAttribs, 0, "uint"), NumPut(1, PipeAttribs, ihOffset, "int")hParent := DllCall("GetCurrentProcess", "ptr")}DllCall("CreatePipe", "ptr *", hRead1_tmp, "ptr *", hWrite2, "ptr", &PipeAttribs, "uint", 0)DllCall("CreatePipe", "ptr *", hRead2, "ptr *", hWrite1_tmp, "ptr", &PipeAttribs, "uint", 0)NumPut(hRead2, StartupInfo, inOffset, "ptr")NumPut(hWrite2, StartupInfo, outOffset, "ptr")NumPut(hWrite2, StartupInfo, errOffset, "ptr")DllCall("DuplicateHandle", "ptr", hParent, "ptr", hRead1_tmp, "ptr", hParent, "ptr *", hRead1, "uint", 0, "uint", 0, "uint", 2) ; DUPLICATE_SAME_ACCESSDllCall("CloseHandle", "ptr", hRead1_tmp)DllCall("DuplicateHandle", "ptr", hParent, "ptr", hWrite1_tmp, "ptr", hParent, "ptr *", hWrite1, "uint", 0, "uint", 0, "uint", 2)DllCall("CloseHandle", "ptr", hWrite1_tmp)DllCall("ExpandEnvironmentStrings", "str", CmdLine, "str", Buf, "uint", BufSizeChar)CmdLine := BufRet := DllCall("CreateProcess", "ptr", 0, "str", CmdLine, "ptr", 0, "ptr", 0, "uint", 1, "uint", 0, "ptr", 0, "ptr", 0, "ptr", &StartupInfo, "ptr", &ProcessInfo)If (!Ret) {MsgBox,, %A_ThisFunc%, Не удалось создать процесс.Output := ""Return 1}hChild := NumGet(ProcessInfo, 0, "ptr")DllCall("CloseHandle", "ptr", NumGet(ProcessInfo, thrOffset, "ptr"))DllCall("CloseHandle", "ptr", hRead2)DllCall("CloseHandle", "ptr", hWrite2)If (Input) {InLen := StrLen(Input) + 2VarSetCapacity(InBuf, InLen, 0)StrPut(Input . "`r`n", &InBuf, "cp866")DllCall("WriteFile", "ptr", hWrite1, "ptr", &InBuf, "uint", InLen, "uint *", BytesWritten, "uint", 0)}DllCall("CloseHandle", "ptr", hWrite1)Output := ""Loop {If not DllCall("ReadFile", "ptr", hRead1, "ptr", &Buf, "uint", BufSizeByte, "uint *", BytesRead, "uint", 0)BreakNumPut(0, Buf, BytesRead, "Char")Output .= StrGet(&Buf, "cp866")}DllCall("CloseHandle", "ptr", hRead1)DllCall("GetExitCodeProcess", "ptr", hChild, "int *", ExitCode)DllCall("CloseHandle", "ptr", hChild)Return ExitCode} Работает в режимах x32 и x64 Все его действия сводятся к выполнению двух BAT-файлов №1 Включение - netsh interface ipv4 set address "Internet" dhcp №2 Выключение - netsh interface ipv4 set address "Internet" static 1.0.0.0 Но скрипт выполняет проверку и не требуется проверять текущий статус подключения, он сам его переключит в противоположное состояние, а если имя подключения не совпадает, т.е. не Internet то он будет его только включать, т.е. эквивалент первого BAT-файла В архиве две версии x32 и x64 exe, два батника и исходник, иконка не прилагается - она стандартная, т.е. из Windows. pack.zip pack.zip Ссылка на комментарий Поделиться на другие сайты Поделиться
xepomag Опубликовано 17 декабря, 2013 Жалоба Поделиться Опубликовано 17 декабря, 2013 Доброго времени суток уважаемые! Нужен скрипт который автоматически нажимает клавиши с определенной последовательностью и определенными промежутками времени после их нажатия. Как это должно выглядеть примерно: после нажатия сочетания клавиш Rctrl + Tab запускался скрипт, нажимается кнопка 2 с значением 2 после ожидания 2х секунд действие повторяется пять раз, после чего нужно что бы на жалась кнопка F2 , после клавиша тильда(обычно отвечает за открытие консоли в играх) нужно что бы она на жалась 7 раз с промежутками времени в пол секунды после чего весь скрипт нужно повторять до тех пор пока не нажимаеться повторно Rctrl+Tab (сочетание отвечающие за отключение скрипта) + еще нужно что бы на протяжении всего скрипта нажималась кнопка F1 с периодичностью 3 минуты. Жду ваших вопросов по этому поводу если что то будет не понятно постараюсь уточнить ;3 P.S. это мой первый вопрос не судите строго) :angel_innocent: Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 18 декабря, 2013 Автор Жалоба Поделиться Опубликовано 18 декабря, 2013 (изменено) @xepomag, прочту вдумчиво что ты написал и сделаю скрипт, только один вопрос - Какие именно клавиши, так если они скажем NumPad-овски или бувенно-цифровые, то напиши конкретно какие именно, если они имеются в скрипте, то нужно использовать скан-коды. И вот ещё не очень понятно - нажимается кнопка 2 с значением 2... что имеется ввиду посылка клавиши "2" или что то иное. P.S. А так вроде всё просто, если сана игра согласится это сделать, т.к. она сетевая - вчерашний скрипт(переключение звука) не перехватывал клавиатуру. Изменено 18 декабря, 2013 пользователем Indomito Ссылка на комментарий Поделиться на другие сайты Поделиться
xepomag Опубликовано 18 декабря, 2013 Жалоба Поделиться Опубликовано 18 декабря, 2013 Имеется ввиду просто цифра 2 то есть не собака и не кавычки) все кнопки в этом скрипте не нумпадовские) еще бы хотел что бы в самом коде были комментарии к основным действиям) для того что бы я смог самостоятельно его изменять и под другие нужды) Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 18 декабря, 2013 Автор Жалоба Поделиться Опубликовано 18 декабря, 2013 @xepomag, поясняю 1. Нажатие зависит от статуса клавиатуры - про это я говорил 2. Посылка не зависит, т.е. посылается клавиша как есть. 3. Комментарии будут, но самостаятельная правка, думаю - не получится, т.к. требуется знание AHK Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 21 декабря, 2013 Автор Жалоба Поделиться Опубликовано 21 декабря, 2013 Дополняю - уточняю. Скрипт смогу написать только после всех НГ-праздников... "перезруз" на работе(сдача/приёмка/доделка/правка). Ссылка на комментарий Поделиться на другие сайты Поделиться
xepomag Опубликовано 24 декабря, 2013 Жалоба Поделиться Опубликовано 24 декабря, 2013 Спасибо;3 за ответ желаю хорошо встретить НГ) после спишимся у меня сейчас нету интернета пока что) ростелеком чет с подключением тянет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 25 декабря, 2013 Автор Жалоба Поделиться Опубликовано 25 декабря, 2013 пока что) ростелеком чет с подключением тянет. да, я в курсе - многие сервера пишут об этой проблеме. Ссылка на комментарий Поделиться на другие сайты Поделиться
Wally Опубликовано 10 января, 2014 Жалоба Поделиться Опубликовано 10 января, 2014 (изменено) Добавь плиз в скайп: [censored] Хотел посоветоваться насчет одного скрипта - связанно с ImageSearch, а так же с переменными. i Уведомление:Внимательно прочитайте первый пост и повторите свою просьбу Александру в личку или на e-mail.Поверьте, так оно дойдет быстрее. Изменено 10 января, 2014 пользователем THE OLD VERMIN Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 5 марта, 2014 Автор Жалоба Поделиться Опубликовано 5 марта, 2014 Если я кому то не ответил (мог забыть), то пишите тут или в ЛС. Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 25 декабря, 2014 Автор Жалоба Поделиться Опубликовано 25 декабря, 2014 Давненько я тут не писал, хотя сам пишу скрипты на AHK.... забыл - каюсь. Итак Самое простое но весьма нужное, это очистка рабочего стола ;-----------------------------------------------; "Зачистка" Рабочего Стола от мусора - пишется.;-----------------------------------------------; Отключить иконку в трее - она то по сути не нужна#NoTrayIcon ; Запрет повторного запуска - что бы случайно два раза не кликнуть по иконке/ярлыку#SingleInstance ignore Loop, %A_Desktop%\*.*,, 1 if (A_LoopFileExt <> "lnk") FileDelete %A_LoopFileFullPath% Можно чистить не только Рабочий Стол, но и любые папки, правда тогда надо Заменить переменную %A_Desktop% на конкретный адрес Изменить условия удаления, т.е. я про эту строчку if (A_LoopFileExt <> "lnk") которая запрещает удалять ярлыки Удачи. Ссылка на комментарий Поделиться на другие сайты Поделиться
Yezhishe Опубликовано 25 декабря, 2014 Жалоба Поделиться Опубликовано 25 декабря, 2014 Чистить какие-то (специфические) папки - это понятно, а что можно вычистить с Рабочего стола? Что там кроме ярлыков-то может быть? Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 25 декабря, 2014 Автор Жалоба Поделиться Опубликовано 25 декабря, 2014 (изменено) Теперь более сложное - убиение процессов которые сложно убиваются (сорри за тавтологию) или же требуют много манипуляций. Вот приблизительный скрипт, т.е. который я использую - ваш может выглядеть иначе. ; Запрет повторного запуска#SingleInstance#Include C:\AHK\AllSystemOS\ ; Устанавливаем путь к файлам скрипта#Include RunCon.ahk ; Запуск с консоли сMsg_OkTaskModalInfo := 4+8192+64 ;Function Yes/No button + Task Modal + Icon Asterisk(info) сMsg_OkOnLy_TaskModal_Info :=0+8192+64 ;only an OK button + Task Modal + Icon Asterisk(info) ; Завершаем процессы titul := "Результат закрытия процессов" arMain := [["taskkill /F /IM pidgin.exe",""] ,["taskkill /F /IM uTorrent.exe",""] ,["taskkill /F /IM thunderbird.exe",""] ,["taskkill /F /IM Skype.exe",""] ,["",""]] res := "`n`n" i := 1 While (arMain[i,1]) { CmdLine := arMain[i,1] RunCon(CmdLine, 0, Output) arMain[i,2] := Output "`n" res := res arMain[i,2] i++ } MsgBox, % сMsg_OkOnLy_TaskModal_Info, % titul, % res, 5 IfMsgBox, OK goto lExtlExt: ExitApp По сути он сводится к запуску через консоль taskkill /F /IM Имя_Процесса... но как всегда есть НО ;) Вам потребуется мной же написанный скрипт RunCon.ahk и его требуется подключить, вот две обязательные строчки #Include C:\AHK\AllSystemOS\ ; Устанавливаем путь к файлам скрипта#Include RunCon.ahk ; Запуск с консоли Файл RunCon.ahk должен располагаться в пути указанным выше, т.е. C:\AHK\AllSystemOS\ путь может быть любой, но файл должен быть там, иначе ничего не сработает. Файлы в аттаче CloseNetApps.ahk и RunCon.ahk.rar Успехов и с наступающим НГ. P.S. Для любителей посмотреть, я лично не советую - скрипт сложный, даю RunCon.ahk под спойлером goto leave_RunCon; ======= Определение параметров и статуса Интернета ======fnInternetState(arOut) { ;global Internet, NetName :=1, NetDHCP :=2, NetIP :=3, NetGate :=4, NetState:=5, NetST:=1, FindKey :=2 global Internet, NetName, NetDHCP, NetIP, NetGate, NetState, NetST, FindKey k:=1 for i, j in arOut { while(Internet[k,FindKey]) { vFindKey:=Internet[k,FindKey] l := StrLen(vFindKey) vPos:=InStr(j, vFindKey) if (vPos) Internet[k,NetName]:=vStr0:=SubStr(j, vPos+l), k++ Break } } Internet[NetState,NetST]:= false if (Internet[NetDHCP,NetST]="Да") Internet[NetState,NetST]:= true return Internet[NetState,NetST]}; ======= Постпарсер RunCon ===============================fnParseStdIn(StdIn) { Arr := [], i := 0 Loop, parse, StdIn, `r`n { Row := RegExReplace(A_LoopField, """| |" A_Tab) If Row is space Continue Arr[++i] := Row } Return Arr }; ======= Функция RunCon ==================================RunCon(CmdLine, Input, ByRef Output){ static BufSizeChar := 1024, hParent := 0 static Show := 0, Flags := 0x101 ; STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW static Buf, BufSizeByte, ProcessInfo, StartupInfo, PipeAttribs static piSize, siSize, paSize, flOffset, shOffset, ihOffset static inOffset, outOffset, errOffset, thrOffset If (!hParent) { BufSizeByte := A_IsUnicode ? BufSizeChar * 2 : BufSizeChar If (A_PtrSize = 8) { piSize := 24, siSize := 104, paSize = 24 flOffset := 60, shOffset := 64, ihOffset := 16 inOffset := 80, outOffset := 88, errOffset := 96 thrOffset := 8 } Else { piSize := 16, siSize := 68, paSize = 12 flOffset := 44, shOffset := 48, ihOffset := 8 inOffset := 56, outOffset := 60, errOffset := 64 thrOffset := 4 } VarSetCapacity(Buf, BufSizeByte, 0), VarSetCapacity(ProcessInfo, piSize, 0) VarSetCapacity(StartupInfo, siSize, 0), VarSetCapacity(PipeAttribs, paSize, 0) NumPut(siSize, StartupInfo, 0, "uint"), NumPut(Flags, StartupInfo, flOffset, "uint") NumPut(Show, StartupInfo, shOffset, "ushort") NumPut(paSize, PipeAttribs, 0, "uint"), NumPut(1, PipeAttribs, ihOffset, "int") hParent := DllCall("GetCurrentProcess", "ptr") } DllCall("CreatePipe", "ptr *", hRead1_tmp, "ptr *", hWrite2 , "ptr", &PipeAttribs, "uint", 0) DllCall("CreatePipe", "ptr *", hRead2, "ptr *", hWrite1_tmp , "ptr", &PipeAttribs, "uint", 0) NumPut(hRead2, StartupInfo, inOffset, "ptr") NumPut(hWrite2, StartupInfo, outOffset, "ptr") NumPut(hWrite2, StartupInfo, errOffset, "ptr") DllCall("DuplicateHandle", "ptr", hParent, "ptr", hRead1_tmp , "ptr", hParent, "ptr *", hRead1 , "uint", 0, "uint", 0 , "uint", 2) ; DUPLICATE_SAME_ACCESS DllCall("CloseHandle", "ptr", hRead1_tmp) DllCall("DuplicateHandle", "ptr", hParent, "ptr", hWrite1_tmp , "ptr", hParent, "ptr *", hWrite1 , "uint", 0, "uint", 0 , "uint", 2) DllCall("CloseHandle", "ptr", hWrite1_tmp) DllCall("ExpandEnvironmentStrings", "str", CmdLine, "str", Buf, "uint", BufSizeChar) CmdLine := Buf Ret := DllCall("CreateProcess", "ptr", 0, "str", CmdLine, "ptr", 0, "ptr", 0 , "uint", 1, "uint", 0, "ptr", 0, "ptr", 0 , "ptr", &StartupInfo, "ptr", &ProcessInfo) If (!Ret) { MsgBox,, %A_ThisFunc%, Не удалось создать процесс. Output := "" Return 1 } hChild := NumGet(ProcessInfo, 0, "ptr") DllCall("CloseHandle", "ptr", NumGet(ProcessInfo, thrOffset, "ptr")) DllCall("CloseHandle", "ptr", hRead2) DllCall("CloseHandle", "ptr", hWrite2) If (Input) { InLen := StrLen(Input) + 2 VarSetCapacity(InBuf, InLen, 0) StrPut(Input . "`r`n", &InBuf, "cp866") DllCall("WriteFile", "ptr", hWrite1, "ptr", &InBuf, "uint", InLen , "uint *", BytesWritten, "uint", 0) } DllCall("CloseHandle", "ptr", hWrite1) Output := "" Loop { If not DllCall("ReadFile", "ptr", hRead1, "ptr", &Buf, "uint", BufSizeByte , "uint *", BytesRead, "uint", 0) Break NumPut(0, Buf, BytesRead, "Char") Output .= StrGet(&Buf, "cp866") } DllCall("CloseHandle", "ptr", hRead1) DllCall("GetExitCodeProcess", "ptr", hChild, "int *", ExitCode) DllCall("CloseHandle", "ptr", hChild) Return ExitCode}leave_RunCon: CloseNetApps.ahk и RunCon.ahk.rar Изменено 25 декабря, 2014 пользователем Форматцевт 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 25 декабря, 2014 Автор Жалоба Поделиться Опубликовано 25 декабря, 2014 а что можно вычистить с Рабочего стола? Что там кроме ярлыков-то может быть? ты не поверишь сколько барахла валяется на WP... да у моей жены, по сути для этого и был написан этот скрипт Ссылка на комментарий Поделиться на другие сайты Поделиться
Yezhishe Опубликовано 25 декабря, 2014 Жалоба Поделиться Опубликовано 25 декабря, 2014 Поскольку "с младых ногтей" приучен (рассказом о том, почему) не держать на РС ничего, кроме ярлыков - удивляюсь всегда чьему-нибудь захламленному и, натурально, тормозящей машинке... А уж как люди удивляются, когда всё сносится на локальный диск и машинка начинает шустрить... Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 25 декабря, 2014 Автор Жалоба Поделиться Опубликовано 25 декабря, 2014 На грани OffTopа Ну ты - да, но ты близок к идеалу Ссылка на комментарий Поделиться на другие сайты Поделиться
Vladislav123321 Опубликовано 14 января, 2015 Жалоба Поделиться Опубликовано 14 января, 2015 Приветствую господа,я в ahk составил маленький скрипт код: mbutton:: WinActivate, Такси-ангел SIP телефония MouseClick, left, 245, 148 return Мне нужно чтоб он кликал туда автоматически без клика,когда на кнопку идёт сигнал(звонок).Можете мне помочь с скриптом???? Ссылка на комментарий Поделиться на другие сайты Поделиться
Vladislav123321 Опубликовано 14 января, 2015 Жалоба Поделиться Опубликовано 14 января, 2015 Приветствую господа,я в ahk составил маленький скрипт код: mbutton:: WinActivate, Такси-ангел SIP телефония MouseClick, left, 245, 148 return Мне нужно чтоб он кликал туда автоматически без клика,когда на кнопку идёт сигнал(звонок).Можете мне помочь с скриптом???? Если кому-то нужно объяснить поподробней то можно созвониться в Skype Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти