Last active
April 3, 2023 08:07
-
-
Save alfonsrv/d613988f31f37ee1462c711cdf721238 to your computer and use it in GitHub Desktop.
DATEV Belegtransfer Auto-Login nach 30 Tagen Inaktivität
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python3 | |
# -*- coding: utf-8 -*- | |
# Rau Systemberatung GmbH (rausys.de) | |
# Licensed under the GNU General Public License, Version 3 | |
import subprocess | |
from typing import List | |
from pywinauto import Application | |
def datev_autologin(): | |
""" Logs in Belegtransfer after the session timed out after 30 days """ | |
try: | |
app = Application(backend='uia').connect(path='BTTMain.exe') | |
window = app.top_window() | |
window.child_window( | |
auto_id='AutomaticLogoutAlert' | |
).child_window( | |
title='Anmelden', control_type='Button' | |
).click() | |
except Exception: | |
return # nothing to do | |
app = Application(backend='uia').connect(path='iexplore.exe') | |
for process_id in process_pids(process_name='iexplore'): | |
try: | |
app = Application(backend='uia').connect(process=process_id) | |
window = app.top_window() | |
except RuntimeError: | |
pass | |
window['DATEV SmartCard / DATEV mIDentity'].click() | |
window['Weiter'].click() | |
def process_pids(*, process_name: str) -> List[str]: | |
stdout = subprocess.check_output(['wmic', 'process', 'get', 'description,processid']) | |
processes = [process.split() for process in stdout.decode().split('\n')] | |
processes = [process for process in processes if process] | |
return [process[1] for process in processes if process[0] == process_name] | |
if __name__ == '__main__': | |
datev_autologin() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment