Gedankenfurz

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Perlchamp: Ja das ist eine Art Sandbox.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
Perlchamp
User
Beiträge: 172
Registriert: Samstag 15. April 2017, 17:58

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()
wer lesen kann ist klar im Vorteil ;-)
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
Benutzeravatar
Perlchamp
User
Beiträge: 172
Registriert: Samstag 15. April 2017, 17:58

salve,
ich hänge fest. Jemand eine Idee für mich ?
Im Voraus besten Dank !
wer lesen kann ist klar im Vorteil ;-)
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

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?
Benutzeravatar
Perlchamp
User
Beiträge: 172
Registriert: Samstag 15. April 2017, 17:58

@ 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 ...
wer lesen kann ist klar im Vorteil ;-)
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
Antworten