Код:
Code: Select all
#SingleInstance Force
MsgBox, 4, Program1, Вы хотите изменить настройки запуска? `nProgram1 пропустит этот шаг через несколько секунд..., 5
Sleep, 1000
Send, {TAB}{SPACE} ; вариант «Нет» выбирается автоматически через 5 секунд
IfMsgBox Yes ; если выбрано "Да"
{
; Reading the saved settings from the AppLauncher.ini file
IniRead, viKeyScreen, AppLauncher.ini, Settings, KeyScreen, LWin
IniRead, viKeyCall, AppLauncher.ini, Settings, KeyCall, Esc
IniRead, viFolder, AppLauncher.ini, Settings, Folder, %A_Space%
IniRead, viNames, AppLauncher.ini, Settings, Names, Work photo
HotKey, %viKeyScreen%, MyKeyScreen
HotKey, %viKeyCall%, MyKeyCall
; Создается окно с заголовками, текстовыми полями и кнопками
Gui, New
Gui, Add, Text, XM Y+M W70 R1, Скриншоты
Gui, Add, Edit, X+10 YP W200 R1 vHotKey_KeyScreen, %viKeyScreen%
Gui, Add, Text, XM Y+M W70 R1, Автозвонки
Gui, Add, Edit, X+10 YP W200 R1 vHotKey_KeyCall, %viKeyCall%
Gui, Add, Text, XM Y+M W280 R1, Настройки скриншотов (клавиша в "Скриншоты"):
Gui, Add, Text, XM+20 Y+M W130, Шаг 1. Имена файлов:
Gui, Add, Edit, X+10 YP W120 R1 vEd_Names, %viNames%
Gui, Add, Text, XM+20 Y+M W130, Шаг 2. Рабочая папка:
Gui, Add, Edit, X+10 YP W100 R1 vEd_Folder, %viFolder%
Gui, Add, Button, X+0 YP W20 R1 vBt_Folder gOnButtonFolder, ...
Gui, Add, Text, XM Y+M W280 R1, Настройка автозвонков (клавиша в "Автозвонки"):
Gui, Add, Text, XM+205 YP+15 W20 R1, X
Gui, Add, Text, XM+255 YP W20 R1, Y
Gui, Add, Text, XM+20 Y+M W160 R1, Шаг 1. Кнопка "Позвонить"
; Gui, Add, Edit, X+10 YP W40 R1 vEd_CordCallx, %viCordCallx%
; Gui, Add, Edit, X+10 YP W40 R1 vEd_CordCally, %viCordCally%
Gui, Add, Text, XM+20 Y+M W160 R1, Шаг 2. Выбрать телефонию
; Gui, Add, Edit, X+10 YP W40 R1 vEd_CordSIPx, %viCordSIPx%
; Gui, Add, Edit, X+10 YP W40 R1 vEd_CordSIPy, %viCordSIPy%
Gui, Add, Text, XM+20 Y+M W160 R1, Шаг 3. Подтвердить звонок
; Gui, Add, Edit, X+10 YP W40 R1 vEd_CordOpenx, %viCordOpenx%
; Gui, Add, Edit, X+10 YP W40 R1 vEd_CordOpeny, %viCordOpeny%
Gui, Add, Button, XM Y+M+10 W285 R3 vBt_Run gOnButtonRun, Начать работу
Gui, Add, Button, XM Y+M W140 R1 vBt_Save gOnButtonSave, Сохранить
Gui, Add, Button, X+5 YP W140 R1 vBt_Exit gOnButtonExit, Выйти
Gui, Show,, App Launcher
Return
; При закрытии окна или нажатии кнопки Exit скрипт завершается.
GuiClose:
OnButtonExit:
ExitApp
; Когда вы нажимаете «Сохранить», значения из текстовых полей сохраняются в файл настроек AppLauncher.ini.
OnButtonSave:
Gui, Submit, NoHide
IniWrite, %HotKey_KeyScreen%, AppLauncher.ini, Settings, KeyScreen
IniWrite, %HotKey_KeyCall%, AppLauncher.ini, Settings, KeyCall
IniWrite, %Ed_Folder%, AppLauncher.ini, Settings,Folder
IniWrite, %Ed_Names%, AppLauncher.ini, Settings, Names
Sleep 1000
MsgBox, 64, Настройка Program1, настройки Program1 успешно сохранены!, 3
Return
; Нажатие на кнопку с многоточием открывает окно выбора папки
OnButtonFolder:
FileSelectFolder, vOutFolder, %A_ScriptDir%, 3, Выберите папку с вашими рабочими скриншотами (которую вы указали при настройке Program1)
If (ErrorLevel == 0)
GuiControl, Text, Ed_Folder, %vOutFolder%
Return
; При нажатии на кнопку Start запускаем приложение с данными указанными в текстовых полях
OnButtonRun:
TrayTip, Запуск Program1, Program1 запущена!, 5
WinHide, A
Return
MyKeyScreen::
MakeScreenshot(filename := "%Ed_Names%.png")
{
count := 0
Loop {
count += 1
filename := "%Ed_Folder%\%Ed_Names%(" . count . ").png"
if !FileExist(filename) {
break
}
}
X:=0,Y:=0,W:=A_ScreenWidth,H:=A_ScreenHeight
VarSetCapacity(BITMAPINFO, 40, 0)
NumPut(32, NumPut(1, NumPut(H, NumPut(W, NumPut(40,BITMAPINFO,"Int"),"Int"),"Int"),"Short"),"Short")
hBM := DllCall("Gdi32.dll\CreateDIBSection", "Ptr",0, "Ptr",&BITMAPINFO, "Int",0, "PtrP",pBits := 0, "Ptr",0, "Int",0, "Ptr")
sDC := DllCall("User32.dll\GetDC", "Ptr", 0, "Ptr")
mDC := DllCall("Gdi32.dll\CreateCompatibleDC", "Ptr", 0, "Ptr")
DllCall("Gdi32.dll\SelectObject", "Ptr",mDC, "Ptr",hBM)
DllCall("Gdi32.dll\BitBlt", "Ptr",mDC, "Int",0, "Int",0, "Int",W, "Int",H, "Ptr",sDC, "Int",X, "Int",Y, "Int",0x40CC0020)
GDIP("Startup")
SavePicture(hBM, filename)
GDIP("Shutdown")
DllCall("Gdi32.dll\DeleteDC", "Ptr",mDC)
DllCall("User32.dll\ReleaseDC", "Ptr", 0, "Ptr",sDC)
DllCall("Gdi32.dll\DeleteObject", "Ptr",hBM)
}
GDIP(C:="Startup") {
Static SI:=Chr(!(VarSetCapacity(Si,24,0)>>16)), pToken:=0, hMod:=0, Res:=0, AOK:=0
If (AOK := (C="Startup" and pToken=0) Or (C<>"Startup" and pToken<>0)) {
If (C="Startup") {
hMod := DllCall("LoadLibrary", "Str","gdiplus.dll", "Ptr")
Res := DllCall("gdiplus\GdiplusStartup", "PtrP",pToken, "Ptr",&SI, "UInt",0)
} Else {
Res := DllCall("gdiplus\GdiplusShutdown", "Ptr",pToken)
DllCall("FreeLibrary", "Ptr",hMod), hMod:=0, pToken:=0
}}
Return (AOK ? !Res : Res:=0)
}
SavePicture(hBM, sFile) {
Local V, pBM := VarSetCapacity(V,16,0)>>8, Ext := LTrim(SubStr(sFile,-3),"."), E := [0,0,0,0]
Local Enc := 0x557CF400 | Round({"bmp":0, "jpg":1,"jpeg":1,"gif":2,"tif":5,"tiff":5,"png":6}[Ext])
E[1] := DllCall("gdi32\GetObjectType", "Ptr",hBM ) <> 7
E[2] := E[1] ? 0 : DllCall("gdiplus\GdipCreateBitmapFromHBITMAP", "Ptr",hBM, "UInt",0, "PtrP",pBM)
NumPut(0x2EF31EF8,NumPut(0x0000739A,NumPut(0x11D31A04,NumPut(Enc+0,V,"UInt"),"UInt"),"UInt"),"UInt")
E[3] := pBM ? DllCall("gdiplus\GdipSaveImageToFile", "Ptr",pBM, "WStr",sFile, "Ptr",&V, "UInt",0) : 1
E[4] := pBM ? DllCall("gdiplus\GdipDisposeImage", "Ptr",pBM) : 1
Return E[1] ? 0 : E[2] ? -1 : E[3] ? -2 : E[4] ? -3 : 1
}
Return
MyKeyCall::
MouseMove, 111, 222
Click 333, 444
Sleep 1000
Click 555, 666
Return
}
else ; если выбрано "Нет"
{
IniRead, viKeyScreen, AppLauncher.ini, Settings, KeyScreen, LWin
IniRead, viKeyCall, AppLauncher.ini, Settings, KeyCall, Esc
IniRead, viFolder, AppLauncher.ini, Settings, Folder, %A_Space%
IniRead, viNames, AppLauncher.ini, Settings, Names, Work photo
TrayTip, Запуск Program1, Program1 запущена!, 5
WinHide, A
Return
MyKeyScreen:
MakeScreenshot(filename := "%viNames%.png")
{
count := 0
Loop {
count += 1
filename := "%viFolder%\%viNames%(" . count . ").png"
if !FileExist(filename) {
break
}
}
X:=0,Y:=0,W:=A_ScreenWidth,H:=A_ScreenHeight
VarSetCapacity(BITMAPINFO, 40, 0)
NumPut(32, NumPut(1, NumPut(H, NumPut(W, NumPut(40,BITMAPINFO,"Int"),"Int"),"Int"),"Short"),"Short")
hBM := DllCall("Gdi32.dll\CreateDIBSection", "Ptr",0, "Ptr",&BITMAPINFO, "Int",0, "PtrP",pBits := 0, "Ptr",0, "Int",0, "Ptr")
sDC := DllCall("User32.dll\GetDC", "Ptr", 0, "Ptr")
mDC := DllCall("Gdi32.dll\CreateCompatibleDC", "Ptr", 0, "Ptr")
DllCall("Gdi32.dll\SelectObject", "Ptr",mDC, "Ptr",hBM)
DllCall("Gdi32.dll\BitBlt", "Ptr",mDC, "Int",0, "Int",0, "Int",W, "Int",H, "Ptr",sDC, "Int",X, "Int",Y, "Int",0x40CC0020)
GDIP("Startup")
SavePicture(hBM, filename)
GDIP("Shutdown")
DllCall("Gdi32.dll\DeleteDC", "Ptr",mDC)
DllCall("User32.dll\ReleaseDC", "Ptr", 0, "Ptr",sDC)
DllCall("Gdi32.dll\DeleteObject", "Ptr",hBM)
}
GDIP(C:="Startup") {
Static SI:=Chr(!(VarSetCapacity(Si,24,0)>>16)), pToken:=0, hMod:=0, Res:=0, AOK:=0
If (AOK := (C="Startup" and pToken=0) Or (C<>"Startup" and pToken<>0)) {
If (C="Startup") {
hMod := DllCall("LoadLibrary", "Str","gdiplus.dll", "Ptr")
Res := DllCall("gdiplus\GdiplusStartup", "PtrP",pToken, "Ptr",&SI, "UInt",0)
} Else {
Res := DllCall("gdiplus\GdiplusShutdown", "Ptr",pToken)
DllCall("FreeLibrary", "Ptr",hMod), hMod:=0, pToken:=0
}}
Return (AOK ? !Res : Res:=0)
}
SavePicture(hBM, sFile) {
Local V, pBM := VarSetCapacity(V,16,0)>>8, Ext := LTrim(SubStr(sFile,-3),"."), E := [0,0,0,0]
Local Enc := 0x557CF400 | Round({"bmp":0, "jpg":1,"jpeg":1,"gif":2,"tif":5,"tiff":5,"png":6}[Ext])
E[1] := DllCall("gdi32\GetObjectType", "Ptr",hBM ) <> 7
E[2] := E[1] ? 0 : DllCall("gdiplus\GdipCreateBitmapFromHBITMAP", "Ptr",hBM, "UInt",0, "PtrP",pBM)
NumPut(0x2EF31EF8,NumPut(0x0000739A,NumPut(0x11D31A04,NumPut(Enc+0,V,"UInt"),"UInt"),"UInt"),"UInt")
E[3] := pBM ? DllCall("gdiplus\GdipSaveImageToFile", "Ptr",pBM, "WStr",sFile, "Ptr",&V, "UInt",0) : 1
E[4] := pBM ? DllCall("gdiplus\GdipDisposeImage", "Ptr",pBM) : 1
Return E[1] ? 0 : E[2] ? -1 : E[3] ? -2 : E[4] ? -3 : 1
}
Return
MyKeyCall:
MouseMove, 111, 222
Click 333, 444
Sleep 1000
Click 555, 666
Return
}