Und hallo erstmal.....
TurboMed und tagtägliche Arbeitsökonomie - Zwei Begriffe, die weit auseinander liegen. Aber es gibt eine Brücke...
Im Netz und auch auf den DVDs verschiedener Zeitungen gibt es ein Programm, welches sich "AutoIt" nennt (FreeWare). Hiermit kann man jedes Windowsprogramm (also auch TM) in vielen Bereichen automatisiert ablaufen lassen.
Also z.B. Aufruf des Laborimports (10 und mehr Mausklicks).
Oder eine automatische Datensicherung als Aufruf der einzelnen Menupunkte <Datensicherung> im Hauptmenu. (Sogar Zeitgesteuert !)
Oder...
Oder...
Vielleicht ergibt sich ein gemeinsames Brainstorming, damit nicht jeder das Rad neu erfinden muss. Wir haben doch noch mehr gelernt, als Kreuzchen zu machen (im Studium und im DMP), oder ????
Gruß!
LEM
Automatisierung von TM :wink:
Moderator: Forum Moderatoren
Forumsregeln
TM-Startforum - "offen für alle Themen".
Beiträge, die in einen anderen Bereich passen, werden bei Bedarf verschoben.
TM-Startforum - "offen für alle Themen".
Beiträge, die in einen anderen Bereich passen, werden bei Bedarf verschoben.
-
LEM
- Beiträge: 24
- Registriert: Samstag 30. September 2006, 07:47
- 19
-
Timo Beil
- Beiträge: 92
- Registriert: Mittwoch 24. November 2004, 21:33
- 21
AutoIt3
Hi
durch obigen Beitrag bin ich auf AutoIt gestossen und habe ein bißchen rumexperimentiert, An sich eine interessante Sache, insbesondere wenn hier einige Scripte (*.au3) veröffentlicht werden könnten.
Ein Problem habe ich schon: das Tool "AutoIt Window Info" zeigt die Position des Mauszeigers an. Wenn ich diese Position dann in ein Script eingebe, landet der Mauszeiger aber garantiert nicht da. Ich habe es schon auf verschiedenen Computern probiert. Woran könnte das liegen?
Grüße T.M.
durch obigen Beitrag bin ich auf AutoIt gestossen und habe ein bißchen rumexperimentiert, An sich eine interessante Sache, insbesondere wenn hier einige Scripte (*.au3) veröffentlicht werden könnten.
Ein Problem habe ich schon: das Tool "AutoIt Window Info" zeigt die Position des Mauszeigers an. Wenn ich diese Position dann in ein Script eingebe, landet der Mauszeiger aber garantiert nicht da. Ich habe es schon auf verschiedenen Computern probiert. Woran könnte das liegen?
Grüße T.M.
- michael
- PowerUser
- Beiträge: 743
- Registriert: Montag 6. März 2006, 00:14
- 19
- Wohnort: Marktoberdorf
- Hat Dank erhalten: 1 mal
AutoIt3
Ich kenne das Programm zwar noch nicht, aber könnte es sein, dass Autoit den Mauszeiger relativ zur Position verschiebt.
Also z.B. 2 cm nach rechts, 1cm nach unten von der jeweiligen Ausgangsposition?
Mfg
Michael
Also z.B. 2 cm nach rechts, 1cm nach unten von der jeweiligen Ausgangsposition?
Mfg
Michael
-
LEM
- Beiträge: 24
- Registriert: Samstag 30. September 2006, 07:47
- 19
Re: AutoIt3
Hallo Kollege Timo,
Tut mir leid, wenn ich erst so spät darauf antworte. Hatte am WE schon was anderes vorgehabt.
Zur Frage:
Was Michael schreibt ist wahrscheinlich richtig, AutoIt orientiert sich entweder relativ zur Fenstergröße oder relativ zum gesamten Bildschirm (oben links = Position 0,0). Dürfte aber wohl in bestimmten Basisdefinitionen (fangen u.a. mit <@_> einzustellen sein.
Ich versuche es zu umgehen, indem ich immer eine bestimmtee Fenstergröße (meistens Vollbild) vorgebe.
Es gibt den Befehl <WinSetState()>. Hier ist ein Parameter möglich, der sich <@SW_RESTORE> nennt. Damit wird das Fenster auf die übliche Fenstergröße zurückgestellt. Wenn das erledigt ist, kann man <WinSetState("", "", @SW_MAXIMIZE> und anderen Parametern eingegeben oder über <WinMove()> dem Fenster die gewünschte Größe und Position zuweisen.
Im Internet kursiert übrigens auch eine deutschsprachige Hilfedatei für die Version 3.1.x (wobei hier ganz selten benötigte Begriffe nicht mit aufgenommen wurden. Warum?? Keine Ahnung.) Ob diese aber mit der Version 3.2 zusammenläuft, da bleibt nur ausprobieren.
Sehr hilfreich ist der "Scriptwriter", im Verzeichnis des Editors "SciTE" zu finden. Er funktioniert wie eine Makroaufzeichnung. Alle Tastaturanschläge und Mausbewegungen werden aufgezeichnet. In der Regel kann man sich daran ganz gut entlang hangeln und dann etwas kompaktes zusammen bekommen. Einfache Sache können auch sofort funktionsfähig übernommen werden.
Anliegend ein Beispiel, was machbar ist. Habe das File gerade eben ausprobiert, klappt einwandfrei. Beste Voraussetzung ist aber, wenn in TM von vornherein schon KEIN Fenster mehr geöffnet ist. (Bitte die Angaben zu den Pfaden vorher anpassen !!)
Und zum Scripte veröffentlichen: Ein Beispiel anbei.
Lasst uns das Rad gemeinsam erfinden. Jeder fügt einen Baustein hinzu.
(Damit TM endlich Beine bekommt).
Gruß
LEM
Tut mir leid, wenn ich erst so spät darauf antworte. Hatte am WE schon was anderes vorgehabt.
Zur Frage:
Was Michael schreibt ist wahrscheinlich richtig, AutoIt orientiert sich entweder relativ zur Fenstergröße oder relativ zum gesamten Bildschirm (oben links = Position 0,0). Dürfte aber wohl in bestimmten Basisdefinitionen (fangen u.a. mit <@_> einzustellen sein.
Ich versuche es zu umgehen, indem ich immer eine bestimmtee Fenstergröße (meistens Vollbild) vorgebe.
Es gibt den Befehl <WinSetState()>. Hier ist ein Parameter möglich, der sich <@SW_RESTORE> nennt. Damit wird das Fenster auf die übliche Fenstergröße zurückgestellt. Wenn das erledigt ist, kann man <WinSetState("", "", @SW_MAXIMIZE> und anderen Parametern eingegeben oder über <WinMove()> dem Fenster die gewünschte Größe und Position zuweisen.
Im Internet kursiert übrigens auch eine deutschsprachige Hilfedatei für die Version 3.1.x (wobei hier ganz selten benötigte Begriffe nicht mit aufgenommen wurden. Warum?? Keine Ahnung.) Ob diese aber mit der Version 3.2 zusammenläuft, da bleibt nur ausprobieren.
Sehr hilfreich ist der "Scriptwriter", im Verzeichnis des Editors "SciTE" zu finden. Er funktioniert wie eine Makroaufzeichnung. Alle Tastaturanschläge und Mausbewegungen werden aufgezeichnet. In der Regel kann man sich daran ganz gut entlang hangeln und dann etwas kompaktes zusammen bekommen. Einfache Sache können auch sofort funktionsfähig übernommen werden.
Anliegend ein Beispiel, was machbar ist. Habe das File gerade eben ausprobiert, klappt einwandfrei. Beste Voraussetzung ist aber, wenn in TM von vornherein schon KEIN Fenster mehr geöffnet ist. (Bitte die Angaben zu den Pfaden vorher anpassen !!)
Und zum Scripte veröffentlichen: Ein Beispiel anbei.
Lasst uns das Rad gemeinsam erfinden. Jeder fügt einen Baustein hinzu.
(Damit TM endlich Beine bekommt).
Gruß
LEM
Script AutoIt (mit sehr ausführl. Deklarationen) Nicht erschrecken, es sieht nur im allerersten Moment schlimmer aus, als es in Wirklichkeit ist. hat geschrieben: ;==============================================
; Beispiel zur Durchführung einer Datensicherung, welche automatisch auf dem TM-Sicherungs-PC abläuft.
; Es wurden jetzt nur die Sicherungsdaten genommen, die standardmäßig gezogen werden können,
; auch wenn das ganze Netz läuft.
;==============================================
; Ergänzung / Erweiterung möglich für Praxisdaten, Druckaufträge, Datenstämme und Externe Daten.
; Hier ist zu beachten, dass dies nur erfolgen kann, wenn man TMAdmin nutzt
; (habe ich persönlich aber noch nicht ausprobiert) oder wenn der PC zur Datensicherung
; nur noch der TM-Sicherungs-PC im Netz aktiv ist.
;==============================================
; Sieht zwar etwas komplex aus, dieser Teil konnte aber in etwa 45-60 Minuten erstellt werden,
; (Als ich nicht nicht sonderlich viel Erfahrung mit AutoIt Programmnierung hatte.)
;==============================================
DIM $Meldung
DIM $Sicherungskontrolle = "!n" ; Durch ändern in <"!J"> kann hier die Überprüfung der Datensicherung eingeschaltet werden (Verbraucht aber mehr Zeit).
;==============================================
DIM $days = StringSplit("So,Mo,Di,Mi,Do,Fr,Sa", ",")
DIM $TempDir = @TempDir
;==============================================
;==============================================
; Sicherungsabfrage, ob die Sicherungslaufwerke / -verzeichnisse vorhanden sind.
;==============================================
; Für "J:" muss hier der Pfad für die DatenSICHERung angegeben werden (Über Grundeinstellungen nachzuschauen) !!!
; Für "K:" muss hier der Pfad für die DatenSPIEGELung angegeben werden (Über Grundeinstellungen nachzuschauen) !!!
; Oder ggf. auf diese Abfrage verzichten.
;==============================================
If FileExists("J:") = 0 OR FileExists("K:") = 0 then
MsgBox(48, "Turbomed", "TM scheint nicht korrekt gestartet worden zu sein !" & @CRLF & @CRLF & "Es fehlen die Verzeichnisse:" & @CRLF & "<J:\> und <K:\>",12)
Exit
EndIf
;==============================================
; Sicherungsabfrage, ob TM überhaupt läuft. Sonst endet dieser Zug hier.
;==============================================
If WinExists("TurboMed") Then
WinActivate("TurboMed")
Sleep(1000)
Send("{ESC 12}")
Sleep(5000)
Else
MsgBox(48,"WARNUNG", "Turbomed ist nicht aktiv !", 3)
MsgBox(48,"Kommentar", "Datensicherung kann nicht gezogen werden," _
& @CRLF & "weil TURBOMED nicht getartet wurde !")
EXIT
EndIf
;==============================================
; Aufruf der Befehle, um die einzelnen SICHERungsschritte durchzuführen
;==============================================
; Hier kann noch eine Zeitabfrage oder erweitert auch eine Zeitsteuerung eingetragen werden, etwa dieser Art:
;~ If $days[@Wday] = "Di" OR $days[@Wday] = "Do" OR $days[@Wday] = "Fr" Then
;==============================================
WinActivate("TurboMed")
Send("{F12}!Csv")
Sicherungsbefehl("Vorlagen")
;==============================================
WinWait("TurboMed")
Send("{F12}!Csb{ENTER}")
Sicherungsbefehl("Befunde")
;==============================================
WinWait("TurboMed")
Send("{F12}!Csf")
Sicherungsbefehl("Formulare")
;==============================================
WinWait("TurboMed")
Send("{F12}!Csdd")
Sicherungsbefehl("Dokumente")
;==============================================
; Falls jemand den Rest wirklich einzeln gesichert haben möchte, dann bitte ";" entfernen.
; (Markieren und Minus-Taste im Zahlenblock oder Strg-Q im SciTE Editor)
;==============================================
;~ WinWait("TurboMed")
;~ Send("{F12}!Csda")
;~ Sicherungsbefehl("Audio")
;~ ;==============================================
;~ WinWait("TurboMed")
;~ Send("{F12}!Csdv")
;~ Sicherungsbefehl("Video")
;~ ;==============================================
;~ WinWait("TurboMed")
;~ Send("{F12}!Csdb")
;~ Sicherungsbefehl("Briefe")
;==============================================
;~ EndIf
;==============================================
;==============================================
; Eintrag für die Abschlussmeldung zur optischen Trennung von SICHERung und SPIEGELung
;==============================================
Verlauf("===================================")
;==============================================
;==============================================
; Aufruf der Befehle, um die einzelnen SICHERungsschritte durchzuführen
;==============================================
; Hier kann noch eine Zeitabfrage oder erweitert auch eine Zeitsteuerung eingetragen werden, etwa dieser Art:
;~ If $days[@Wday] = "Mo" OR $days[@Wday] = "Mi" OR $days[@Wday] = "Fr" Then
;==============================================
MonitorMeldung("Vorlagen auf dem SPIEGELLAUFWERK werden gelöscht - einen Moment bitte")
RunWait("cmd /c RD /S /Q K:\Vorlagen", $TempDir, @SW_MINIMIZE)
WinWait("TurboMed")
Send("{F12}!Cpv")
Spiegelbefehl("Vorlagen")
;==============================================
MonitorMeldung("Befunde auf dem SPIEGELLAUFWERK werden gelöscht - einen Moment bitte")
RunWait("cmd /c RD /S /Q K:\Befunde", $TempDir, @SW_MINIMIZE)
WinWait("TurboMed")
Send("{F12}!Cpb{ENTER}")
Spiegelbefehl("Befunde")
;==============================================
MonitorMeldung("Formulare auf dem SPIEGELLAUFWERK werden gelöscht - einen Moment bitte")
RunWait("cmd /c RD /S /Q K:\Formulare", $TempDir, @SW_MINIMIZE)
WinWait("TurboMed")
Send("{F12}!Cpf")
Spiegelbefehl("Formulare")
;==============================================
MonitorMeldung("Dokumente auf dem SPIEGELLAUFWERK werden gelöscht - einen Moment bitte")
RunWait("cmd /c RD /S /Q K:\Dokumente", $TempDir, @SW_MINIMIZE)
WinWait("TurboMed")
Send("{F12}!Cpdd")
Spiegelbefehl("Dokumente")
;==============================================
;~ EndIf
;==============================================
;==============================================
; Abschlussmeldung
;==============================================
MsgBox(0,"Folgende DATENSICHERUNGEN wurden durchgeführt:", $Meldung)
;==============================================
;ProgrammEnde
;==============================================
EXIT
;==============================================
;==============================================
; Hier beginnen selbsterstellte Funktionen, die oben aufgerufen werden.
;==============================================
;==============================================
; Der Funktionsname sagt es.
;==============================================
Func MonitorMeldung($Mitteilung)
SplashTextOn("", $Mitteilung, 1000, 33, -1, 300, 1, "", 20)
EndFunc
;==============================================
; Hier wird die MEldung zusammengestellt, die am Programmende angezeigt wird.
;==============================================
Func Verlauf($Antwort)
$Meldung = $Meldung & $Antwort & @CRLF
EndFunc
;==============================================
; Wenn die SICHERung erfolgt ist, tauchen diverse Fenster mit abfragen auf.
; Hier werden die möglichen Fenster abgefragt und beantwortet.
;==============================================
Func Sicherungsbefehl($SicherungsName)
MonitorMeldung("SICHERUNG - Turbomed - " & $SicherungsName)
WinWait("Hinweis","Wollen Sie wirklich eine Sicherung")
Send("!J")
While 1
$msg = WinWaitActive("Hinweis","TurboMed bietet Ihnen eine zeitraumbegrenzte Sicherung Ihrer Daten an.",1)
If $msg = 1 Then
Send("!J")
$msg = ""
EndIF
$msg = WinWaitActive("Hinweis", "Wollen Sie die heutige Sicherung", 1)
If $msg = 1 Then
Send("!J")
$msg = ""
EndIF
If WinWaitActive("Hinweis", "Wollen Sie die jetzt löschen?", 1) = 1 Then
Send("!J")
$msg = ""
EndIF
$msg = WinWaitActive("Hinweis", "Wollen Sie Ihre Sicherung",1)
If $msg = 1 Then
Send($Sicherungskontrolle)
$msg = ""
EndIF
$msg = WinWaitActive("Hinweis", "wurde erfolgreich beendet!",1)
If $msg = 1 Then
Send("!O")
$msg = ""
ExitLoop
EndIF
Wend
Verlauf("DatenSICHERUNG: " & $SicherungsName)
EndFunc
;==============================================
; Wenn die SPIEGELung erfolgt ist, taucht ein Fenster mit eine Abfrage auf.
; Hier wird das Fenster abgefragt und beantwortet.
;==============================================
Func Spiegelbefehl($SicherungsName)
MonitorMeldung("SPIEGELUNG - Turbomed - " & $SicherungsName)
WinWait("Hinweis","Wollen Sie wirklich eine Spiegelung")
Send("!J")
WinWait("Hinweis", "Die Spiegelung der ")
Send("!O")
Verlauf("DatenSPIEGELUNG: " & $SicherungsName)
EndFunc
;==============================================
-
LEM
- Beiträge: 24
- Registriert: Samstag 30. September 2006, 07:47
- 19
Re: AutiIt
Hallo,
das Skript mal durchgesehen und in TM ausprobiert?
In der Zeit, in der man sonst zum Wegklicken der Fenster vor dem Monitor sitzen und warten muss, was Vernünftiges machen können ?
Funktioniert das Ganze also auch anderswo und nicht nur bei mir?
Gruß LEM
das Skript mal durchgesehen und in TM ausprobiert?
In der Zeit, in der man sonst zum Wegklicken der Fenster vor dem Monitor sitzen und warten muss, was Vernünftiges machen können ?
Funktioniert das Ganze also auch anderswo und nicht nur bei mir?
Gruß LEM
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 39 Gäste