Seite 1 von 1

Re: Gedankenfurz

Verfasst: Dienstag 26. Februar 2019, 18:13
von __blackjack__
@Perlchamp: Ja das ist eine Art Sandbox.

Re: Gedankenfurz

Verfasst: Mittwoch 27. Februar 2019, 21:58
von Perlchamp
ahoi !
ich bin bereits einen Tag am Suchen, finde aber leider nichts.

Code: Alles auswählen

SYSTEM_PATH = 'c:/windows/system32/'

def btn_snip_clicked():
   shell = win32com.client.Dispatch("WScript.Shell")
   app_snip = shell.Run(f'{SYSTEM_PATH}SnippingTool.exe')
   win32api.Sleep(300)
   shell.AppActivate(f'{SYSTEM_PATH}SnippingTool.exe')
   win32api.Sleep(300)
   shell.SendKeys("^n")
   win32api.Sleep(300)
Wie kann ich SnippingTool.exe wieder beenden ?
Bishereige Versuche u.a.:
app_snip.kill()
app_snip.terminate()
shell.kill()
shell.terminate()

Re: Gedankenfurz

Verfasst: Samstag 16. März 2019, 10:16
von Perlchamp
salve,
ich hänge fest. Jemand eine Idee für mich ?
Im Voraus besten Dank !

Re: Gedankenfurz

Verfasst: Samstag 16. März 2019, 11:34
von Sirius3
Programmieren ist halt nicht raten. Hast Du geschaut, was der Rückgabewert von Run ist?
Dann ist ziemlich schnell klar, dass `app_snip` weder eine kill noch eine terminate Methode hat (was auch die Fehlermeldung sagen würde).

Warum benutzt Du überhaupt direkt Windows-Funktionen, wenn auch einfache Pythonvarianten gibt, wie time.sleep oder subprocess.Popen?

Re: Gedankenfurz

Verfasst: Samstag 16. März 2019, 12:25
von Perlchamp
@ Sirius3:
danke für deine schnelle Antwort :-)
1.
Natürlich habe ich festgestellt (durch die Fehlermeldungen - ich kann ja lesen), dass *app_snip* diese Methoden nicht kennt. Ich hatte meine *Versuche* deswegen aufgeführt, dass ihr nicht denkt, ich würde hier 'Däumchen drehen' und darauf warten, bis mir jemand eine Lösung präsentiert ... und im Netz habe ich bisher keine Lösung gefunden, und bin noch am lesen/recherchieren ...
2.
time_sleep und subprocess bringen mich insofern nicht weiter, weil ich bisher keine Lösung des eigentlichen Problems gefunden habe:
zeitweise automatische Steuerung von Programmen via Tastatur (Übergabe von Tastendruck-Events) und Maus (MouseDown, MouseUp, rechte, linke Taste, etc.)
ich habe was gefunden, das mich mit der Maus weiterbringt, guckst du:

Code: Alles auswählen

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'''detecting_mouseclicks_in_windows_using_python.py:
Code to check if left or right mouse buttons were pressed
  '''

__author__ = 'Markacho'
__date__ = '30.01.2017'


import win32api
import time

state_left = win32api.GetKeyState(0x01)  # Left button down = 0 or 1. Button up = -127 or -128
state_right = win32api.GetKeyState(0x02)  # Right button down = 0 or 1. Button up = -127 or -128

while True:
    a = win32api.GetKeyState(0x01)
    b = win32api.GetKeyState(0x02)

    if a != state_left:  # Button state changed
        state_left = a
        print(a)
        if a < 0:
            print('Left Button Pressed')
        else:
            print('Left Button Released')
            break

    if b != state_right:  # Button state changed
        state_right = b
        print(b)
        if b < 0:
            print('Right Button Pressed')
        else:
            print('Right Button Released')
            break

    time.sleep(0.001)
die *break*s habe ich gesetzt, weil ich nur einen Durchgang der Schleife haben möchte (dann brauche ich auch time.sleep nicht, ich weiß) ...
wenn das auch nur mit Python-Mitteln geht, wäre ich der letzte, der dies ablehnen würde, da es dann nicht windows-proprietär wäre ...