-
-
Save db93n2/6746782dc720820cd61a552f470fe9cf to your computer and use it in GitHub Desktop.
| /* | |
| [folders] | |
| folder_1= | |
| folder_2= | |
| folder_3= | |
| [settings] | |
| prefix = LS_ | |
| time_format = yyyyMMddhhmmss | |
| fullscreen_hotkey = | |
| upload_hotkey = | |
| [script info] | |
| version = 0.4.3 | |
| lightshot = 5.4.0.1 | |
| description = improvements for lightshot (app.prntscr.com) | |
| author = davebrny | |
| source = https://gist.github.com/davebrny/6746782dc720820cd61a552f470fe9cf | |
| */ | |
| #noEnv | |
| #singleInstance, force | |
| #installKeybdHook | |
| sendMode, input | |
| process, priority, , high | |
| loop, HKLM, SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList, 1, 1 ; get user SID | |
| { | |
| if (a_loopRegName = "ProfileImagePath") | |
| { | |
| regRead, output | |
| if inStr(output, a_userName) | |
| { | |
| stringReplace, user_sid, a_loopRegSubKey, SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\ | |
| break | |
| } | |
| } | |
| } | |
| lightshot_subkey := user_sid . "\Software\SkillBrains\Lightshot" | |
| iniRead, prefix, % a_lineFile, settings, prefix | |
| iniRead, time_format, % a_lineFile, settings, time_format | |
| iniRead, custom_menu, % a_lineFile, settings, custom_menu | |
| iniRead, fullscreen, % a_lineFile, settings, fullscreen_hotkey | |
| iniRead, upload, % a_lineFile, settings, upload_hotkey | |
| if (fullscreen) ; make hotkeys pass through to lightshot | |
| hotkey, ~%fullscreen%, rename_with_date | |
| if (upload) | |
| hotkey, ~%upload%, rename_with_date | |
| gui +lastFound | |
| dllCall("RegisterShellHookWindow", UInt, winExist()) ; code from SKAN | |
| onMessage(dllCall("RegisterWindowMessage", Str, "SHELLHOOK"), "shellMessage") | |
| return ; end of auto-execute ------------------------------------------------ | |
| #if winActive("ahk_exe Lightshot.exe", , "Save As") | |
| l:: | |
| ; rButton:: | |
| goSub, custom_menu | |
| return | |
| #if winActive("ahk_exe Lightshot.exe", , "Save As") | |
| enter:: | |
| $^s:: | |
| send ^{s} | |
| goSub, rename_with_date | |
| return | |
| #if | |
| rename_with_date: | |
| sleep 700 ; wait for file to appear to | |
| file_ext := file_ext() | |
| loop, files, % save_folder() "\Screenshot_*" . file_ext | |
| { | |
| formatTime, formatted_time, % a_loopFileTimeModified, % time_format | |
| fileMove, % a_loopFileFullPath, % save_folder "\" prefix . formatted_time . file_ext | |
| } | |
| return | |
| file_ext() { | |
| global lightshot_subkey | |
| regRead, dword, HKU, % lightshot_subkey, Format | |
| file_format := (dword = "1") ? "png" : (dword = "2" ? "jpg" : "bmp") | |
| return "." file_format | |
| } | |
| save_folder() { | |
| global | |
| if (save_folder = "") | |
| { | |
| regRead, save_folder, HKU, % lightshot_subkey, LastSavedDir | |
| if (save_folder = "") | |
| save_folder := a_myDocuments "\Lightshot" | |
| } | |
| return save_folder | |
| } | |
| shellMessage(wParam, lParam) { | |
| global ls_id | |
| If (wParam = 1) ; HSHELL_WINDOWCREATED | |
| { | |
| winGet, process_name, ProcessName, % "ahk_id " ls_id := lParam | |
| if (process_name = "Lightshot.exe") | |
| setTimer, set_edit_text, 100 | |
| } | |
| } | |
| set_edit_text: | |
| if winExist("Save As ahk_exe Lightshot.exe") | |
| { | |
| setTimer, set_edit_text, off | |
| formatTime, formatted_time, % a_now, % time_format | |
| controlSetText, edit1, % prefix . formatted_time . file_ext(), ahk_class #32770 | |
| winWaitClose, Save As ahk_exe Lightshot.exe | |
| goSub, rename_with_date ; rename any other 'screenshot_1.png' files | |
| save_folder := "" | |
| setTimer, set_edit_text, on | |
| } | |
| if !winExist("ahk_id " ls_id) | |
| setTimer, set_edit_text, off | |
| return | |
| custom_menu: ; right click menu | |
| menu, lightshot, useErrorLevel | |
| regRead, keep_selection, HKU, % lightshot_subkey, KeepSelection | |
| regRead, capture_cursor, HKU, % lightshot_subkey, CaptureCursor | |
| save_folder := save_folder() | |
| if (save_folder) | |
| { | |
| stringGetPos, pos, save_folder, \, R2 | |
| stringMid, parent_folder, save_folder, % pos + 1 | |
| menu, folder_menu, add, % save_folder, set_folder | |
| menu, folder_menu, disable, % save_folder | |
| menu, folder_menu, add | |
| } | |
| folders_created := "" | |
| loop, | |
| { | |
| iniRead, folder, % a_lineFile, folders, folder_%a_index% | |
| if (fileExist(folder)) and (folder != save_folder) | |
| { | |
| menu, folder_menu, add, % folder, set_folder | |
| ++folders_created | |
| } | |
| } | |
| until (folder = "ERROR") | |
| if (folders_created) | |
| menu, folder_menu, add | |
| menu, folder_menu, add, Add New Folder, add_folder | |
| menu, lightshot, add, Upload to prntscr.com %a_tab% Ctrl+D, menu_ctrl | |
| menu, lightshot, add, Print %a_tab% Ctrl+P, menu_ctrl | |
| menu, lightshot, add, Copy %a_tab% Ctrl+C, menu_ctrl | |
| menu, lightshot, add, Save %a_tab% Ctrl+S, menu_ctrl | |
| menu, lightshot, add, Select Full Screen %a_tab% Ctrl+A, menu_ctrl | |
| menu, lightshot, add, Clear selection , menu_clear | |
| menu, lightshot, add, Cancel %a_tab% Esc, menu_esc | |
| menu, lightshot, add | |
| menu, lightshot, add, Settings: , menu_close | |
| menu, lightshot, add | |
| menu, lightshot, add, Remember Selection , keep_selection | |
| menu, lightshot, add, Capture Cursor , capture_cursor | |
| menu, lightshot, add | |
| if (save_folder) | |
| menu, lightshot, add, %parent_folder% , menu_close | |
| menu, lightshot, add, Folders , :folder_menu | |
| menu, lightshot, add | |
| menu, lightshot, add, Close this menu , menu_close | |
| menu, lightshot, disable, Settings: | |
| menu, lightshot, disable, %parent_folder% | |
| menu, lightshot, % (keep_selection ? "check" : "unCheck"), Remember Selection | |
| menu, lightshot, % (capture_cursor ? "check" : "unCheck"), Capture Cursor | |
| menu, lightshot, show | |
| menu, lightshot, delete | |
| menu, folder_menu, delete | |
| goSub, rename_with_date ; check for new screenshots | |
| return | |
| menu_ctrl: | |
| letter := subStr(a_thisMenuItem, 0, 1) | |
| send % "^{" format("{:L}", letter) "}" | |
| return | |
| menu_clear: | |
| send {rButton}{down 6} ; select from original menu | |
| sleep 50 | |
| send {enter} | |
| return | |
| menu_esc: | |
| send {esc} | |
| return | |
| capture_cursor: | |
| new_value := (capture_cursor = 0) ? 1 : 0 | |
| regWrite, REG_DWORD, HKU, % lightshot_subkey, CaptureCursor, % new_value | |
| return | |
| keep_selection: | |
| new_value := (keep_selection = 0) ? 1 : 0 | |
| regWrite, REG_DWORD, HKU, % lightshot_subkey, KeepSelection, % new_value | |
| return | |
| menu_close: | |
| return | |
| set_folder: | |
| regWrite, REG_SZ, HKU, % lightshot_subkey, LastSavedDir, % a_thisMenuItem | |
| return | |
| add_folder: | |
| send {esc} | |
| fileSelectFolder, new_folder, *%save_folder% | |
| if (new_folder) | |
| { | |
| loop, | |
| { | |
| iniRead, folder, % a_lineFile, folders, folder_%a_index% | |
| if (folder = "") or (folder = "ERROR") | |
| iniWrite, % " " new_folder, % a_lineFile, folders, folder_%a_index% | |
| } | |
| until (folder = "") or (folder = "ERROR") or (new_folder = folder) | |
| } | |
| return |
Hi thanks, wonderful improvement, could you please explain how can I use this file to enhance the features.
You need to AutoHotkey program in order to launch script
@davebrny Cool script, however, capturing a cursor doesn't work :(
@davebrny Cool script, however, capturing a cursor doesn't work :(
i havnt been using lightshot for a while now but this script just toggles the registry setting for that option
fantastic work, this really overcomes most of lighshot's weaknesses in terms of functionality
@ditdivdotdot i stopped using lightshot a few years ago now but im taking it that they still havnt fixed the "screenshot_1" naming problem? thats sad if true, but im glad to hear this script is still of some use to someone!
@davebrny nope they still haven't fixed that "screenshot_1" naming problem unfortunately
Thanks for this script. This work perfectly but unfortunately there's some errors.
- Enter button didn't work
- File named Screenshot_x.png when using
ctrl+sinstead of enter coz this button didn't work
Could you fix this? Thank you in advance. :)
Hi thanks, wonderful improvement, could you please explain how can i use this file to enhance the features.