栏目分类
热点资讯

エロ漫画 巨乳

你的位置:日本少妇 > エロ漫画 巨乳 > 成人性生活影片 一步到位:用Python杀青PC屏幕截图并自动发送邮件,杀青屏幕监控

成人性生活影片 一步到位:用Python杀青PC屏幕截图并自动发送邮件,杀青屏幕监控

2024-09-16 18:00    点击次数:100

成人性生活影片 一步到位:用Python杀青PC屏幕截图并自动发送邮件,杀青屏幕监控

阅读本文

在现时的数字化天下中,自动化如故成为咱们平淡生计和责任中的关节部分。它不仅升迁了效果,还检朴了渊博的技巧和元气心灵。在这篇著作中,咱们将探讨如何使用Python来杀青一个特定的自动化任务 - PC屏幕截图自动发送到指定的邮箱。

这个任务可能看起来很复杂,可是通过Python,咱们不错将其瓦解为几个浅薄的方法并一一杀青。起首,咱们需要一个大要拿获屏幕截图的器具。其次,咱们需要一个大要发送电子邮件的职业。临了,咱们需要将这两个方法组合在沿途,创建一个不错自动实践这些任务的剧本。

在本文中,咱们将详备先容这个经由,并提供相应的Python代码示例。岂论你是Python入门者,照旧寻求新的自动化项打算指示斥地东说念主员,齐不错从中受益。让咱们入手吧。

主邀功能

1.通过使用pyautogui库来进行屏幕截图。

2.使用smtplib库来发送电子邮件,以将截图发送给收件东说念主。

3.使用tkinter库创建一个浅薄的图形用户界面(GUI),用于建设利用表率的修复。

4.通过使用logging库来记载日记,将日记保存到文献中。

5.使用configparser库来读取和保存利用表率的建设修复成人性生活影片。

人妖中国

6.杀青了开机自动启动功能,不错将利用表率修复为开机自动启动。

7.杀青了遮盖和暴露利用表率窗口的功能。

8.收件邮箱默许等于发件邮箱。

此外,代码还杀青了一些其他功能,如数据加密妥协密、删除已发送的截图文献等。

利用表率在为用户提供一个方便的方式来定时截图并将截图发送给指定的收件东说念主,适用于需要按期截图的监控、辛勤监视等场景。用户不错通过图形界面修复截图的隔断技巧、截图的次数、发件东说念主和收件东说念主的电子邮件地址等。

具体代码# coding=utf-8 ''' @Author : TesterRoad @Time : 2023/7/9 15:43 @Desc : 用python杀青PC屏幕截图自动发送邮箱 @Software: PyCharm'''import smtplibimport timeimport pyautoguifrom email.mime.multipart import MIMEMultipartfrom email.mime.image import MIMEImagefrom email.mime.text import MIMETextimport loggingimport configparserimport osimport sysimport ctypesfrom Crypto.Cipher import AESfrom Crypto.Util.Padding import pad, unpadimport base64import tkinter as tkfrom tkinter import ttkimport datetimeimport threadingimport winregimport globKEY = b'MySuperSecretKey'def encrypt_data(data): cipher = AES.new(KEY, AES.MODE_CBC) ct_bytes = cipher.encrypt(pad(data.encode('utf-8'), AES.block_size)) iv = base64.b64encode(cipher.iv).decode('utf-8') ct = base64.b64encode(ct_bytes).decode('utf-8') return iv + ctdef decrypt_data(data): try: iv = base64.b64decode(data[:24]) ct = base64.b64decode(data[24:]) cipher = AES.new(KEY, AES.MODE_CBC, iv=iv) pt = unpad(cipher.decrypt(ct), AES.block_size) return pt.decode('utf-8') except: return 'Decryption Error!'class ScreenshotApp: def __init__(self): self.root = tk.Tk() self.root.title('Screen') self.config = configparser.ConfigParser() self.config_file = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), 'config.ini') if not os.path.exists(self.config_file): self.create_default_config() self.config.read(self.config_file) # 读取建设文献 self.sender_email_label = ttk.Label(self.root, text='发件邮箱:') self.sender_email_label.grid(row=0, column=0, padx=5, pady=5) self.sender_email_entry = ttk.Entry(self.root) self.sender_email_entry.grid(row=0, column=1, padx=5, pady=5) self.sender_password_label = ttk.Label(self.root, text='发件邮箱密码:') self.sender_password_label.grid(row=1, column=0, padx=5, pady=5) self.sender_password_entry = ttk.Entry(self.root, show='*') self.sender_password_entry.grid(row=1, column=1, padx=5, pady=5) self.interval_label = ttk.Label(self.root, text='截图隔断技巧:') self.interval_label.grid(row=2, column=0, padx=5, pady=5) self.interval_entry = ttk.Entry(self.root) self.interval_entry.grid(row=2, column=1, padx=5, pady=5) self.count_label = ttk.Label(self.root, text='发送截图数目:') self.count_label.grid(row=3, column=0, padx=5, pady=5) self.count_entry = ttk.Entry(self.root) self.count_entry.grid(row=3, column=1, padx=5, pady=5) self.start_button = ttk.Button(self.root, text='入手截图', command=self.start_screenshot) self.start_button.grid(row=4, column=0, padx=5, pady=5) self.stop_button = ttk.Button(self.root, text='住手截图', command=self.stop_screenshot) self.stop_button.grid(row=4, column=1, padx=5, pady=5) self.stop_button.configure(state='disabled') self.save_button = ttk.Button(self.root, text='save', command=self.save_settings) self.save_button.grid(row=5, column=0, padx=5, pady=5) self.autostart_var = tk.BooleanVar() self.autostart_checkbutton = ttk.Checkbutton(self.root, text='开机自动启动', variable=self.autostart_var, command=self.save_settings) self.autostart_checkbutton.grid(row=6, column=0, columnspan=2, padx=5, pady=5) self.toggle_visibility_button = ttk.Button(self.root, text='暴露/遮盖', command=self.toggle_visibility) self.toggle_visibility_button.grid(row=7, column=0, columnspan=2, padx=5, pady=5) # 创建日记记载器 self.log_file_path = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), 'screenshot.log') self.logger = logging.getLogger('ScreenshotApp') self.logger.setLevel(logging.INFO) self.logger.addHandler(logging.FileHandler(self.log_file_path)) self.screenshot_running = False self.screenshot_thread = None self.stop_event = threading.Event() # 启动化输入框的值 self.sender_email_entry.insert(0, self.config.get('Settings', 'sender_email', fallback='')) self.sender_password_entry.insert(0, self.get_decrypted_password()) self.interval_entry.insert(0, self.config.get('Settings', 'interval', fallback='')) self.count_entry.insert(0, self.config.get('Settings', 'count', fallback='')) # 启动化开机自动启动选项 self.autostart_var.set(self.is_autostart_enabled()) self.root.protocol('WM_DELETE_WINDOW', self.on_close) self.root.bind('<F12>', self.toggle_visibility) # 启动化窗口可见性 visibility = self.config.get('Settings', 'visibility', fallback='visible') if visibility == 'hidden': self.root.withdraw() if self.autostart_var.get(): self.start_screenshot() self.root.mainloop() def on_close(self): self.stop_screenshot() self.save_settings() self.delete_screenshots() self.root.quit() def create_default_config(self): if not os.path.exists(self.config_file): self.config['Settings'] = { 'sender_email': '', 'sender_password': '', 'interval': '', 'count': '', 'autostart': 'False', 'visibility': 'visible' } config_file_path = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), 'config.ini') with open(config_file_path, 'w') as configfile: self.config.write(configfile) def start_screenshot(self): interval_text = self.interval_entry.get() count_text = self.count_entry.get() if not interval_text or not count_text: self.logger.error('请提供Screen隔断技巧和Screen次数') return try: interval = int(interval_text) count = int(count_text) except ValueError: self.logger.error('Screen隔断技巧和Screen次数必须是有用的整数') return if not self.screenshot_running: sender_email = self.sender_email_entry.get() sender_password = self.sender_password_entry.get() interval = int(self.interval_entry.get()) count = int(self.count_entry.get()) receiver_email = sender_email # 收件邮箱地址默许等于发件邮箱地址 self.logger.info('入手Screen') self.start_button.configure(state='disabled') self.stop_button.configure(state='normal') self.screenshot_running = True self.stop_event.clear() self.screenshot_thread = threading.Thread(target=self.screenshot_loop, args=( receiver_email, sender_email, sender_password, interval, count)) self.screenshot_thread.start() def stop_screenshot(self): if self.screenshot_running: self.screenshot_running = False self.stop_event.set() self.screenshot_thread.join() self.logger.info('住手Screen') self.start_button.configure(state='normal') self.stop_button.configure(state='disabled') def screenshot_loop(self, receiver_email, sender_email, sender_password, interval, count): screenshot_count = 0 screenshots = [] # 赢得用户主目次,并创建'Screenshots'文献夹 user_dir = os.path.expanduser('~') screenshot_dir = os.path.join(user_dir, 'Screenshots') os.makedirs(screenshot_dir, exist_ok=True) # 在入手Screen前清空'Screenshots'文献夹 self.delete_screenshots() while screenshot_count < count and not self.stop_event.is_set(): try: # Screen screenshot = pyautogui.screenshot() # 生成文献名,方法为“Screen技巧.png” current_time = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') filename = f'Screen_{current_time}.png' # 保存Screen到'Screenshots'文献夹中 screenshot_path = os.path.join(screenshot_dir, filename) screenshot.save(screenshot_path) screenshots.append(screenshot_path) screenshot_count += 1 # 修复文献为遮盖 FILE_ATTRIBUTE_HIDDEN = 0x02 ctypes.windll.kernel32.SetFileAttributesW(screenshot_path, FILE_ATTRIBUTE_HIDDEN) self.logger.info(f'Screen见效: {screenshot_path}') if screenshot_count == count: # 达到指定Screen次数后发送Screen screenshot_count = 0 self.send_email(receiver_email, sender_email, sender_password, screenshots) self.logger.info(f'Screen发送见效,共发送了 {len(screenshots)} 张Screen') self.delete_screenshots(screenshots) screenshots = [] # 清空已发送的Screen列表 except Exception as e: self.logger.error(f'Screen失败: {str(e)}') time.sleep(interval) def send_email(self, receiver_email, sender_email, sender_password, filenames): msg = MIMEMultipart() msg['From'] = sender_email msg['To'] = receiver_email msg['Subject'] = 'Screen' # 添加邮件正文 msg.attach(MIMEText('请检验附件中的Screen。', 'plain')) # 添加Screen当作附件 for filename in filenames: with open(filename, 'rb') as f: image = MIMEImage(f.read()) image.add_header('Content-Disposition', 'attachment', filename=os.path.basename(filename)) msg.attach(image) try: # 发送邮件 with smtplib.SMTP_SSL('smtp.qq.com', 465) as smtp: smtp.login(sender_email, sender_password) smtp.send_message(msg) self.logger.info(f'邮件发送见效,收件东说念主: {receiver_email}') except Exception as e: self.logger.error(f'邮件发送失败: {str(e)}') def save_settings(self): self.config.set('Settings', 'sender_email', self.sender_email_entry.get()) self.config.set('Settings', 'interval', self.interval_entry.get()) self.config.set('Settings', 'count', self.count_entry.get()) self.config.set('Settings', 'autostart', str(self.autostart_var.get())) visibility = 'visible' if self.root.state() == 'normal' else 'hidden' self.config.set('Settings', 'visibility', visibility) if self.sender_password_entry.get() != self.get_decrypted_password(): encrypted_password = encrypt_data(self.sender_password_entry.get()) self.config.set('Settings', 'sender_password', encrypted_password) config_file_path = os.path.abspath(self.config_file) with open(config_file_path, 'w') as configfile: self.config.write(configfile) self.logger.handlers.clear() self.logger.addHandler(logging.FileHandler(self.log_file_path)) self.set_autostart(self.autostart_var.get()) def delete_screenshots(self, filenames=None): # 赢得'Screenshots'文献夹旅途 user_dir = os.path.expanduser('~') screenshot_dir = os.path.join(user_dir, 'Screenshots') if filenames is None: filenames = glob.glob(os.path.join(screenshot_dir, 'Screen*.png')) for filename in filenames: try: os.remove(filename) self.logger.info(f'删除Screen: {filename}') except Exception as e: self.logger.error(f'删除Screen失败: {str(e)}') def get_decrypted_password(self): encrypted_password = self.config.get('Settings', 'sender_password', fallback='') if encrypted_password: return decrypt_data(encrypted_password) else: return '' def toggle_visibility(self, event=None): if self.root.state() == 'withdrawn': self.root.deiconify() else: self.root.withdraw() self.save_settings() def set_autostart(self, enabled): key = winreg.HKEY_CURRENT_USER run_key = r'Software\Microsoft\Windows\CurrentVersion\Run' app_name = 'Screen' app_path = sys.executable # 赢适合前剧本的十足旅途 try: with winreg.OpenKey(key, run_key, 0, winreg.KEY_SET_VALUE) as reg_key: if enabled: winreg.SetValueEx(reg_key, app_name, 0, winreg.REG_SZ, app_path) self.logger.info('已修复开机自动启动') else: winreg.DeleteValue(reg_key, app_name) self.logger.info('已取消开机自动启动') except FileNotFoundError as e: self.logger.error(f'找不到注册表旅途: {str(e)}') except PermissionError as e: self.logger.error(f'莫得富饶的权限看望注册表: {str(e)}') except Exception as e: self.logger.error(f'修复开机自动启动失败: {str(e)}') def is_autostart_enabled(self): key = winreg.HKEY_CURRENT_USER run_key = r'Software\Microsoft\Windows\CurrentVersion\Run' app_name = 'Screen' app_path = sys.executable # 赢适合前剧本的十足旅途 try: with winreg.OpenKey(key, run_key, 0, winreg.KEY_READ) as reg_key: try: value, value_type = winreg.QueryValueEx(reg_key, app_name) return value == app_path except FileNotFoundError: return False except FileNotFoundError as e: self.logger.error(f'找不到注册表旅途: {str(e)}') except PermissionError as e: self.logger.error(f'莫得富饶的权限看望注册表: {str(e)}') except Exception as e: self.logger.error(f'读取开机自动启动修复失败: {str(e)}') return Falseif __name__ == '__main__': app = ScreenshotApp()

翻开CMD,输入python ScreenCaptureSendEmail.py

图片

咱们输入发件邮箱,发件邮箱密码(QQ邮箱则是授权码),截图隔断技巧,发送截图数目,然后点击入手截图,稍后咱们会收到一封QQ邮件

图片

如下图所示

图片

图片

看到这里,我倏得有个勇猛的念念法。

图片

在本文中,咱们详备商量了如何使用Python杀青PC屏幕截图并自动发送至邮箱的功能。咱们探讨了联系库的使用。并通过编写施行的代码,咱们一步步演示了如何将这些功能整合在沿途。但愿这篇著作大要匡助你在自动化处理任务、升迁责任效果方面取适合先。如若你在实践经由中遭受任何问题,或者有任何提出,接待随时与我相易。记取,编程即是处理问题的艺术,不断学习和实践智商更好地掌抓它。

本站仅提供存储职业,所有内容均由用户发布,如发现存害或侵权内容,请点击举报。

Powered by 日本少妇 @2013-2022 RSS地图 HTML地图

Copyright Powered by365站群 © 2013-2024