Skip to content

Instantly share code, notes, and snippets.

@DinleyH
Last active July 5, 2024 15:31
Show Gist options
  • Save DinleyH/e222834ddb3533d59fd7cafccf612f07 to your computer and use it in GitHub Desktop.
Save DinleyH/e222834ddb3533d59fd7cafccf612f07 to your computer and use it in GitHub Desktop.
Automatically close problematic dialog popups in sublime text 3.
This closes the popups instantly so you never see them and they dont effect indenting etc. Works on windows.
To install
1. open sublime
2. go to tools -> Developer -> New Plugin
3. paste the code into the document (replacing any existing code sublime includes in the document)
4. save the file using the default user plugin directory sublime suggests.
(on windows this is C:\Users\yourname\AppData\Roaming\Sublime Text\Packages\User)
5. Restart.
Now if a popup comes up itll instantly close.
Note: While this plugin does close the sublime and SFTP licence reminder popups, you should consider paying for the licence rather and supporting the developers. However money isnt always an option for some, and the pop-ups cause issues with indenting in sublime so this plugin is useful for people who wish to fix that issue.
import sublime_plugin
import ctypes
import time
TARGET_CLASS_NAME = "#32770"
class DialogBoxKiller(sublime_plugin.EventListener):
def close_dialog_boxes(self):
EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int))
def get_window_class_name(hwnd):
buff = ctypes.create_unicode_buffer(256) # Assuming class name won't be longer than 256 characters
ctypes.windll.user32.GetClassNameW(hwnd, buff, len(buff))
return buff.value
def enum_windows_callback(hwnd, lparam):
class_name = get_window_class_name(hwnd)
if class_name == TARGET_CLASS_NAME:
ctypes.windll.user32.SendMessageW(hwnd, 0x0010, 0, 0) # 0x0010 is WM_CLOSE
return True
ctypes.windll.user32.EnumWindows(EnumWindowsProc(enum_windows_callback), 0)
def on_pre_save_async(self, *args):
time.sleep(0.1) # Brief delay to ensure dialog has time to appear if it does
self.close_dialog_boxes()
@TheRealCasmat
Copy link

if ctypes.windll.user32.IsWindowVisible(hwnd):
adding that after if class_name == TARGET_CLASS_NAME: removes the Windows error sound

@DinleyH
Copy link
Author

DinleyH commented Jul 5, 2024

if ctypes.windll.user32.IsWindowVisible(hwnd): adding that after if class_name == TARGET_CLASS_NAME: removes the Windows error sound

nice! was looking for a way to stop that for a while but gave up lol. Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment