Beiträge von BugFix
-
-
Vielleicht noch als Ergänzung:
Den Namen des Fensters und u.U. auch die der Controls, kannst du mit dem Tool "AutoIt Window Info" (enthalten in Programmgruppe 'AutoIt v3') auslesen. Evtl. hat das Fenster auch keinen Namen. Sofern es zur Laufzeit das einzige 'namenlose' ist, ist es somit eindeutig identifizier- und ansprechbar. Mausklicks solltest du wirklich nur dann ausführen, wenn Steuerung über Controls oder mit Send() nicht realisierbar ist. -
Hi,
da du sagst, Bernds Lösung ist nicht das, was du meinst, ist mir ehrlich gesagt nicht ganz klar, was du geanau möchtest.
Stell doch mal ein Beispiel ein: Welches ist der Ausgangsstring, was möchtest du selektieren?z.B.
$string = "1234567890"
$n = variable Anzahl zu selektierender Zeichen ($n = 2)
$instring = "5"wenn $instring in $string enthalten, dann Rückgabe $n Zeichen links davon
Ergebnis hier: "34"
Meinst du sowas?
-
Hi,
habe meinen ersten Urlaubstag mal dazu genutzt, ein Startwiederholungsscript für Carom3D zu schreiben. D.h., das Script hatte ich ja schon - jetzt hab ich es nur allgemeingültig umgebastelt, mit INI für die Einstellungen.Spoiler anzeigen
SETTINGS:
Code
Alles anzeigen#include <GuiConstants.au3> Global $butt_x, $butt_y, $var, $path, $game, $c_game, $room, $c_room, $i If FileExists(@ScriptDir & "\" & "carom_again.INI") Then $path = IniRead(@ScriptDir & "\" & "carom_again.INI", "path", "appl", "") $var = IniReadSection(@ScriptDir & "\" & "carom_again.INI", "practicebutton") $butt_x = $var[1][1] $butt_y = $var[2][1] $game = IniReadSection(@ScriptDir & "\" & "carom_again.INI", "game") $room = IniReadSection(@ScriptDir & "\" & "carom_again.INI", "room") Else MsgBox(4096, "Achtung ! Fehlende Datei!", "Die Datei: <carom_again.INI> ist nicht im Ordner: <" & @ScriptDir & "\" & "> enthalten!" & @LF & @LF & "Ohne diese Datei kann das Programm nicht ausgeführt werden!") Exit EndIf $gui= GuiCreate("Einstellungen Carom3D mit Wiederholung", 392, 329,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) $Group_appl = GuiCtrlCreateGroup("Anwendung", 30, 10, 340, 50) $Input_appl = GuiCtrlCreateInput("", 40, 30, 220, 20) $Button_appl_chg = GuiCtrlCreateButton("Ändern", 280, 30, 80, 20) $Group_button = GuiCtrlCreateGroup("Position <PRACTICE> Button", 30, 80, 340, 50) $Input_button = GuiCtrlCreateInput("", 40, 100, 220, 20) $Button_button_chg = GuiCtrlCreateButton("Ändern", 280, 100, 80, 20) $Group_game = GuiCtrlCreateGroup("Game Typ", 30, 150, 340, 50) $Combo_game = GuiCtrlCreateCombo("", 40, 170, 320, 21) $Group_room = GuiCtrlCreateGroup("Room Typ", 30, 220, 340, 50) $Combo_room = GuiCtrlCreateCombo("", 40, 240, 320, 21) $Button_esc = GuiCtrlCreateButton("Abbrechen", 30, 290, 110, 20) $Button_set = GuiCtrlCreateButton("Übernehmen", 260, 290, 110, 20) _FillCombos() GUICtrlSetData($Input_appl, $path) GUICtrlSetData($Input_button, "x: " & $butt_x & ", y: " & $butt_y) GuiSetState() While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Or $msg = $Button_esc ExitLoop Case $msg = $Button_appl_chg $var = FileOpenDialog("","C:\Program Files\Carom3D\", "(*.exe)") If $var <> "" And $var <> 1 Then GUICtrlSetData($Input_appl, $var) EndIf Case $msg = $Button_button_chg HotKeySet("!y", "_MausPos") ; Hotkey für Bestätigung <ALT>+<y> MsgBox(0,"Position 'PRACTICE' - Button", "Bitte Carom3D starten!" & @LF & @LF & "Den Mauszeiger mittig über dem <PRACTICE> Button positionieren (NICHT klicken!)." & @LF & @LF & "Die Position mit <ALT>+<y> bestätigen.") GUISetState(@SW_MINIMIZE, $gui) WinWaitActive($gui) HotKeySet("!y", "_Blind") Case $msg = $Button_set $path = GUICtrlRead($Input_appl) $c_game = GUICtrlRead($Combo_game) $c_room = GUICtrlRead($Combo_room) If $c_game = "6-Ball" Or $c_game = "9-Ball" Or $c_game = "Rotation" Or $c_game = "Normal-Snooker" Or $c_game = "Short-Snooker" Then MsgBox(4096, "Hinweis", "Für das gewählte Spiel: <" & $c_game & "> muß der Anwendungspfad auf" & @LF & @LF & "die Installation: Carom3D-Full-Practice verweisen." & @LF & @LF & "Sollte das nicht der Fall sein, wird das Tool nicht funktionieren.") EndIf _WriteINI() Exit EndSelect WEnd Exit Func _FillCombos() Dim $c_game = $game[10][1], $c_room = $room[9][1], $tmp GUICtrlSetData($Combo_game, "") For $i = 1 To $game[0][0]-1 $tmp = $game[$i][0] GUICtrlSetData($Combo_game, $tmp, $c_game) Next GUICtrlSetData($Combo_room, "") For $i = 1 To $room[0][0]-1 $tmp = $room[$i][0] GUICtrlSetData($Combo_room, $tmp, $c_room) Next EndFunc Func _MausPos() $pos = MouseGetPos() $butt_x = $pos[0] $butt_y = $pos[1] GUICtrlSetData($Input_button, "x: " & $butt_x & ", y: " & $butt_y) GUISetState(@SW_RESTORE, $gui) EndFunc Func _WriteINI() IniWrite(@ScriptDir & "\" & "carom_again.INI", "path", "appl", $path) IniWrite(@ScriptDir & "\" & "carom_again.INI", "practicebutton", "pos_x", $butt_x) IniWrite(@ScriptDir & "\" & "carom_again.INI", "practicebutton", "pos_y", $butt_y) IniWrite(@ScriptDir & "\" & "carom_again.INI", "game", "Current_Game", $c_game) IniWrite(@ScriptDir & "\" & "carom_again.INI", "room", "Current_Room", $c_room) IniWrite(@ScriptDir & "\" & "carom_again.INI", "set", "done", 1) EndFunc Func _Blind() ; ohne Funktion - nur Aufhebung Hotkey EndFuncWIEDERHOLUNGSSCRIPT
Code
Alles anzeigen#NoTrayIcon Dim $state, $aktiv, $butt_x, $butt_y, $var, $path, $game, $c_game, $key_game, $room, $c_room, $key_room, $i If FileExists(@ScriptDir & "\" & "carom_again.INI") Then $var = IniRead(@ScriptDir & "\" & "carom_again.INI", "set", "done", "") If $var = 0 Then MsgBox(4096, "Achtung", "Die 'carom_again_settings' müssen zumindest einmal ausgeführt" & @LF & @LF & "und an deine Installation angepaßt werden." & @LF & @LF & @LF & @LF & "Das Einstellungsprogramm wird jetzt aufgerufen.") Run(@ScriptDir & "\" & "carom_again_settings.exe") If @error Then MsgBox(4096, "Achtung!", "Das Einstellungsprogramm: 'carom_again_settings.exe' ist nicht im Installationspfad: " & @ScriptDir & "\" & "vorhanden!" & @LF & @LF & "Das Programm wird jetzt beendet.") Exit EndIf While $var = 0 Sleep(250) $var = IniRead(@ScriptDir & "\" & "carom_again.INI", "set", "done", "") WEnd EndIf $path = IniRead(@ScriptDir & "\" & "carom_again.INI", "path", "appl", "") $var = IniReadSection(@ScriptDir & "\" & "carom_again.INI", "practicebutton") $butt_x = $var[1][1] $butt_y = $var[2][1] $game = IniReadSection(@ScriptDir & "\" & "carom_again.INI", "game") $c_game = $game[10][1] $room = IniReadSection(@ScriptDir & "\" & "carom_again.INI", "room") $c_room = $room[9][1] Else MsgBox(4096, "Achtung ! Fehlende Datei!", "Die Datei: <carom_again.INI> ist nicht im Ordner: <" & @ScriptDir & "\" & "> enthalten!" & @LF & @LF & "Ohne diese Datei kann das Programm nicht ausgeführt werden!") Exit EndIf HotKeySet("!y", "_CaromStart") $aktiv = 0 For $i = 1 To $game[0][0]-1 If $game[$i][0] = $c_game Then $key_game = $game[$i][1] ExitLoop EndIf Next For $i = 1 To $room[0][0]-1 If $room[$i][0] = $c_room Then $key_room = $room[$i][1] ExitLoop EndIf Next MsgBox(4096, "Hinweis", "Es startet jetzt automatisch das voreingestellte Spiel im voreingestellten Raum." & @LF & @LF & "Nach Beendigung des Spiels, kann mit der Tastenkombination:" & @LF & @LF & "< ALT > + < y >" & @LF & @LF & "sofort ein neues Spiel begonnen werden." & @LF & @LF & @LF & @LF & "© Frank Stahlke 2006" & @LF & @LF & "eMail: bug_fix@web.de" & @LF & @LF & "Created with AutoIt3") While 1 Sleep(500) $state = WinGetState("Carom3D", "") Select Case $state = 0 And $aktiv = 1 ExitLoop Case $aktiv = 0 ; Practice Mode Run($path) If @error Then MsgBox(4096, "Achtung", "Programmpfad der Anwendung: " & $path & " ist nicht vorhanden!") Exit EndIf WinWaitActive("Carom3D") Sleep(1000) $aktiv = 1 _CaromStart() EndSelect WEnd Exit Func _CaromStart() BlockInput(1) MouseClick("left",$butt_x,$butt_y,1,0) Send($key_game) Send("{TAB}") Send($key_room) Send("{ENTER}") BlockInput(0) EndFuncINI
Code
Alles anzeigen[path] appl=C:\Program Files\Carom3D\carom.exe [practicebutton] pos_x=536 pos_y=178 [game] 3-Cushion=3 4-Ball=4 6-Ball=6 8-Ball=e 9-Ball=9 CardBall=c Rotation=r Short-Snooker=s Normal-Snooker=n Current_Game=8-Ball [room] Underground=u Japanese=j Korean=k Millennium=m Christmas=c Event=e Antique=a CaromBeach={PGDN} Current_Room=Korean [set] done=0
Damit ich die INI-Datei anhängen konnte, hab ich ihr noch den Suffix .txt verpaßt. Bei Nutzung also wieder entfernen.Und das ganze mit der Beta nutzen. Gute Nacht auch noch.
Edit:
Kleine Änderung - ich hatte glatt Snooker vergessen einzubauen. Jetzt ist aber alles komplett.Edit 2:
Aus mir nicht erklärlichen Gründen funktioniert das BlockInput() (Script: carom_again.au3; Zeilen: 65 bis 73) nicht. Der User kann beim Erststart die Maus munter bewegen, sodass die gesendeten Befehle verpuffen.
Hängt vermutlich damit zusammen, dass vorm Aufruf der Funktion zwar mit WinWaitActive() (Zeile 58 ) auf das Fenster gewartet wird, dieses jedoch noch nicht komplex aufgebaut ist (die Befehle somit ins Leere gehen).
Ich habe jetzt hinter das WinWaitActive() noch ein Sleep(800) gesetzt und nun funktioniert es auch. Wobei 800 ms die untere Grenze ist. Ich denke mit 1 s ist man absolut auf der sicheren Seite. -
Ich hatte per Mail eine Anfrage an den Autor der "TS HTML Help Tipps & Tricks 3.1" geschickt. Hier die Antwort:
ZitatAlles anzeigen..du musst wie folgt vorgehen:
Sofern du noch kein Fenster erstellt hast, solltest du dies über "Add/Modify
window definitions" tun. Das Fenster sollte den Namen main erhalten. Du
solltest jetzt in den einzelnen Registern das Aussehen deines Fensters
festlegen, da alle Themenseiten der Hilfe von nun an in diesem Fenster
angezeigt werden.
Im Register "Position" kannst du die Position und Größe einstellen. -
Goldig!!
Das Fenster ist nicht nur 800x600 groß, sondern maximiert. So gefällt mir das.
Danke für eure Mühe.Edit:
Etwas zu früh gefreut. Das Fenster kommt doch nur 800x600. Hatte es vorhin nur zuvor maximiert, deshalb ist es wieder so gestartet.Soweit ich das der HTML Help-Anleitung entnehmen konnte, lassen sich durch Einsatz von Frames und CSS die Fenstergrößen festlegen. Solchen Aufwand will ich aber für eine relativ kurze Hilfe gar nicht betreiben.
-
Danke,
genau danach habe ich gesucht. Werde es gleich testen und dann Rückmeldung geben.Edit:
Also "url#textmarke" hat er nicht haben wollen. bringt nur die url.
Muß mir erst mal das ganze Werk reinziehen und dann wieder testen.
Momentan schreib ich grad die englische Hilfe. Muß also noch etwas warten.Edit #2:
Ha, geht doch. War mein Fehler. Hatte es bei 'Advanced URL' eingetragen (ich Schäfchen, ich
).
Nun muß ich bloß noch rausfinden, wie ich das Hilfefenster maximiert starten kann. Naja, notfalls 'zwinge' ich es mit autoit. :schild4: -
ahh..
Danke!
Meine Oma sagt immer: Kannste alt wer'n wie 'ne Kuh, lernste immer noch dazu.
Recht hat sie!
Edit:
Ich hab die Hilfedatei mit "HTML Help Workshop" erstellt. Ging auch recht simpel. Allerdings suche ich noch nach ein paar Einstellmöglichkeiten:
- das Hilfe-Fenster soll mit einer von mir festgelegten Größe starten (wegen enthaltener Bilder)
- das Inhaltsverzeichnis soll ausgeklappt sein
- wie kann ich im Inhaltsverzeichnis auf Textmarken verlinken (angeboten wird nur der Link auf Seiten)Falls jemand da Erfahrung hat - bin für jeden Rat dankbar.
-
Hallo,
hab für ein Tool eine eigene Hilfedatei erstellt (help.chm). Aber wie kann ich die aufrufen??
"run()" gilt nur für ausführbare Dateien, "call()" für Funktionen....
Hab in der Hilfe keinen Hinweis dazu gefunden. -
Ja Danke,
das werd ich mal probieren.Guten Abend noch!
-
-
Da auch ich diese typische männliche Eigenschaft [alles-haben-will-was-neu-und-elektronisch-ist] besitze
habe ich mir ein Pocket WEB zugelegt. Kostenmäßig ist das bei mir ein Nullsummenspiel, da ich durch Änderung meines Telefonanschlusses von ISDN auf Analog ca. 10 € pro Monat spare und etwa das gleiche für die Pocket-Web-Flat ausgebe.
Was wirklich gut ist: eMailen und surfen, wo immer ich gehe oder stehe.
Das Surfen ist natürlich eher etwas für Puristen. Für Multimedia ist das Teil nicht konzipiert (schon Flash ist ein unüberwindbares Hindernis).
Wer aber mal schnell bei Google od. Wikipedia Infos sucht, kommt damit ganz gut zu rande.
Eine Möglichkeit die gängigen Chat-Tools zu nutzen, hab ich noch nicht entdeckt. (Muß dann wohl den Teenie Chat auf Yahoo nutzen - grrrrrr)
Was nicht ausgereift ist, ist die fehlende Interaktion zwischen Browser und Mailprogramm. So ist es z.B. nicht möglich Favoriten in eine Mail zu kopieren oder überhaupt Seiteninhalte zu kopieren und in einer Mail zu verwenden.
Zusätzlich ist das Gerät (in Kombination mit einem Bluetooth-Headset) als Telefon verwendbar (Netzanbieter: Vodafone), allerdings zu horrenden Tarifen.
SMS kostet die üblichen 19 ct. und läßt sich mit der wirklich guten QWERTZ - Tastatur auch flüssig schreiben.
Kalender, Terminverwaltung, Kontakte sind auch enthalten. Die Anzahl der Kontakte ist auf 500 limitiert und sollte zumindest für private Zwecke ausreichen.Mein Fazit:
Wer wie ich stets und ständig all seine Mails im Blick haben will und häufig Infos aus dem Web braucht, findet hier eine relativ preiswerte Variante.
Qualitativ und preismäßig günstiger als gleiches über ein Web-fähiges Handy.
Die Gerätekosten liegen bei einmalig ca. 50 € (teilweise gibt es gesponsorte Aktionen, hab meins für 19,90 € bekommen) und monatlichen 9,90 € für die Flat (innerhalb Deutschlands).
Nutzung als Telefon und Versand SMS kostet extra.Falls jemand Fragen dazu hat - ich teile meine Erfahrungen gerne.
-
Danke,
hat geklappt. Schönen Abend noch. -
Hi Bernd,
da du grad online bist.Ich würde gern die mit der Routine ermittelten Maus-Koordinaten beim Wiederherstellen des Fensters auf der aufrufenden Schaltfläche mit abbilden.
Wie kann ich da 'nen Refresh durchführen?Probiert hatte ich
Bei der Definition der GUI:
$butt_lm_pos = GUICtrlCreateButton($label[31] & $lm_butt_x & ", " & $lm_butt_y, 32, 449, 345, 25)Nach Beendigung der Routine hab ich die Definition erneut aufgerufen. Ca. 10 sec. nach Wiederherstellung des Fensters erschienen die neuen Koordinaten um nach etwa der gleichen Zeit wieder zu verschwinden (die alten Koordinaten erschienen wieder).
Hab kein Plan weshalb. -
Hi,
Problem ist gelöst. Hab das ganze separat getestet und brauchte dort nicht die Beta.
Jetzt hab ich den Code in das kpl. Programm eingebunden, das ich mit der Beta ausführe - und siehe da es läuft.
Aber eigentlich sollte es auch mit der Prod funktionieren.
-
Hallo,
schaut mal auf folgenden Codeausschnitt. Der Code wird ausgeführt aber das Fenster nicht wiederhergestellt (auch nicht mit @SW_SHOW oder @SW_SHOWNORMAL). Wenn ich das Fenster von Hand wiederherstelle, läuft der Code normal weiter.
Wo liegt der Fehler?Code
Alles anzeigen.. .. Case $msg = $butt_lm_pos HotKeySet("^+{SPACE}", "_LMpos") ; Hotkey für Bestätigung MsgBox(0,"",$label[30]) ; Aufforderung z. Mauspositionierung, Bestätigung mit <STRG>+<SHIFT>+<SPACE> GUISetState(@SW_MINIMIZE, $gui_pref) ; GUI minimieren, User führt Aktion durch WinWaitActive($label[16]) ; Warten das die GUI wieder aktiv ist HotKeySet("^+{SPACE}", "_Blind") ; Aufheben des Hotkey .. .. .. Func _LMpos() $pos = MouseGetPos() $lm_butt_x = $pos[0] $lm_butt_y = $pos[1] GUISetState(@SW_RESTORE, $gui_pref) EndFunc Func _Blind() ; ohne Funktion - nur Aufhebung Hotkey EndFunc -
Ja, Danke!
Bin eh grad dabei eine GUI für die Einstellungen zu schreiben (der User soll ja nicht in der INI rumfummeln), da werde ich die Abfrage für die Mausposition hinzufügen. -
Hallo @all
Hab ein kleines Projekt, dass ich immer nur Testen kann, wenn ich beim Kunden bin (wg. Lizenzen hab ich keine Möglichkeit die Software bei mir laufen zu lassen).
Falls jemand Lust hat, wär's nett, wenn ihr mal 'nen Blick drauf werft.
Die Fremdanwendung läßt sich leider nicht über Controls steuern, daher Mausklicks und Send.
Kurze Erläuterung:
Je nach Einstellung startet die Anwendung mit dem Titel $main_wdw1 od. ~2. Je nach OS-Sprache wird für die Beschriftung deutsch oder englisch verwendet. Ziel ist es, einen auszuwählenden Report mit der dafür in der Anwendung eingebundenen Funktion für einen auszuwählenden Patienten als PDF-Datei zu exportieren.
Wenn ihr irgendwelche Ungereimtheiten entdeckt - ich bin für jeden Hinweis dankbar.Spoiler anzeigen
C
Alles anzeigen#NoTrayIcon #include <GuiConstants.au3> #Include <Misc.au3> Dim $lbl_date, $lbl_name, $state1, $state2, $state3, $var, $report, $appl, $pdf_target Dim $main_wdw1, $main_wdw2, $i, $lang, $label[15], $split Select Case StringInStr("0407,0807,0c07,1007,1407", @OSLang) ; Systemsprache Deutsch $lang = 1 Case Else ; für alle anderen Englisch $lang = 2 EndSelect If FileExists(@ScriptDir & "\" & "ReportToPDF.INI") Then $var = IniReadSection(@ScriptDir & "\" & "ReportToPDF.INI", "window") $main_wdw1 = $var[1][1] $main_wdw2 = $var[2][1] $var = IniReadSection(@ScriptDir & "\" & "ReportToPDF.INI", "aktuell") $report = $var[1][1] $var = IniReadSection(@ScriptDir & "\" & "ReportToPDF.INI", "pdf") $pdf_target = $var[1][1] $var = IniReadSection(@ScriptDir & "\" & "ReportToPDF.INI", "application") $appl = $var[1][1] $var = IniReadSection(@ScriptDir & "\" & "ReportToPDF.INI", "language") For $i = 1 To $var[0][0] $split = StringSplit($var[$i][1],"|") $label[$i] = $split[$lang] Next Else If $lang = 1 Then MsgBox(4096, "Achtung !", "Die Datei: <ReportToPDF.INI> ist nicht im Ordner: <" & @ScriptDir & "\" & "> enthalten!" & @LF & "Ohne diese Datei kann das Programm nicht ausgeführt werden!") Else MsgBox(4096, "Attention !", "File: <ReportToPDF.INI> Is Not Included In Directory: <" & @ScriptDir & "\" & "> !" & @LF & "The Program Doesn't Work Without This File!") EndIf Exit EndIf $auswahl = GUICreate($label[1], 392, 131, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) $Combo_r = GUICtrlCreateCombo("", 40, 30, 310, 21) $Button_esc = GUICtrlCreateButton($label[2], 21, 90, 150, 20) $Button_ok = GUICtrlCreateButton($label[3], 219, 90, 150, 20) $Group_r = GUICtrlCreateGroup($label[4], 20, 10, 350, 60) $gui = GUICreate($label[5], 381, 230, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) $Group_1 = GUICtrlCreateGroup($label[6], 50, 30, 280, 160) $Button_2 = GUICtrlCreateButton($label[7], 90, 60, 200, 30) $Button_3 = GUICtrlCreateButton($label[8], 90, 140, 200, 30) _ListReport() GUISetState(@SW_SHOW, $auswahl) While 1 Sleep(500) ; Prozessorlast verringern $state1 = WinGetState($main_wdw1) $state2 = WinGetState($main_wdw2) $state3 = WinGetState($label[1]) $msg = GUIGetMsg() Select Case $state1 = 0 And $state2 = 0 And BitAnd($state3,8) <> 8 Run($appl) _report() GUISetState(@SW_SHOW, $gui) Case $msg = $Button_2 GUISetState(@SW_HIDE, $gui) _report() Case $msg = $GUI_EVENT_CLOSE Or $msg = $Button_3 GUISetState(@SW_HIDE, $gui) ExitLoop Case $msg = $Button_esc GUISetState(@SW_HIDE, $auswahl) Case $msg = $Button_ok $var = GUICtrlRead($Combo_r) If @error Then IniWrite(@ScriptDir & "\" & "ReportToPDF.INI", "aktuell","report0", $var) Else IniDelete(@ScriptDir & "\" & "ReportToPDF.INI", "aktuell","report0" ) IniWrite(@ScriptDir & "\" & "ReportToPDF.INI", "aktuell", "report0",$var) EndIf GUISetState(@SW_HIDE, $auswahl) EndSelect WEnd Send("!{F4}") ; Beenden LabManager Exit Func _report() Dim $var, $lm_butt_x, $lm_butt_y $var = IniReadSection(@ScriptDir & "\" & "ReportToPDF.INI", "labmanbutton") ; bei untersch. Bildauflösung in INI anpassen $lm_butt_x = $var[1][1] $lm_butt_y = $var[2][1] BlockInput(1) $lbl_name = "" If $state1 = 8 Then WinSetState($main_wdw1, "",@SW_MAXIMIZE) MouseClick("Left",$lm_butt_x,$lm_butt_y,1,1) ; Button LabManager EndIf If $state2 = 8 Then WinSetState($main_wdw2, "",@SW_MAXIMIZE) MouseClick("Left",$lm_butt_x,$lm_butt_y,1,1) ; Button LabManager EndIf Send("{TAB 3}") ; Button CUSTOM SCORE SET REPORTS Send("{ENTER}") Sleep(1500) Send($report) ; Auswahl Report Send("{ENTER}") Send("^{TAB}") ; WECHSELN ZU PATIENTENAUSWAHL BlockInput(0) While $lbl_name = "" MsgBox(4096, $label[9], $label[10] & @LF & $label[11]) While _IsPressed("78") = 0 ; Warten auf User-Auswahl beendet und <F9> gedrückt Sleep(250) WEnd Send("^{c}") ; ausgewählten Patienten kopieren in Zwischenablage $lbl_name = ClipGet() ; Patient aus Zwischenablage zuweisen if $lbl_name = "" Then MsgBox(4096, $label[12], $label[13] & @LF & $label[14]) EndIf WEnd BlockInput(1) $lbl_name = StringReplace($lbl_name, " ", "") $lbl_name = StringReplace($lbl_name, ",", "_") Send("{TAB}") ; wechselt in das Feld Datum und markiert es Send("^{c}") ; Datum kopieren in Zwischenablage $lbl_date = ClipGet() ; Datum aus Zwischenablage zuweisen $lbl_date = _MultiDateToNorm($lbl_date, 1) ; in String wandeln (JJJJ-MM-TT) Send("^+{TAB}") ; zurück zu Registerkarte REPORTS Send("{TAB 22}") ; Button PDF Send("{ENTER}") ; PDF-Speichermenü Send($pdf_target & $lbl_name & "_" & $lbl_date) ; Dateinamen eintragen Send("{TAB 2}") ; Button Speichern Send("{ENTER}") ; Speichern BlockInput(0) EndFunc ;==>_report Func _ListReport() Dim $var, $tmp, $i $var = IniReadSection(@ScriptDir & "\" & "ReportToPDF.INI", "reports") For $i = 1 To $var[0][0] $tmp = $var[$i][1] If $tmp <> "" Then GUICtrlSetData($Combo_r, $tmp, $var[1][1]) EndIf Next EndFunc ;==>_ChangeReport Func _MultiDateToNorm($date, $s_sort = 0) If StringMid($date, 2, 1) = "." Then; Tag dt. einstellig ? $date = "0" & $date; Vornull Tag EndIf If StringMid($date, 2, 1) = "/" Then; Monat amerik. einstellig ? $date = "0" & $date; Vornull Monat EndIf If StringMid($date, 2, 1) = "-" Then; Tag amerik. lang einstellig ? $date = "0" & $date; Vornull Tag EndIf If StringMid($date, 5, 1) = "." Then; Monat dt. einstellig ? $tmp = StringTrimLeft($date, 3) $date = StringLeft($date, 3) & "0" & $tmp; Vornull Monat EndIf If StringMid($date, 5, 1) = "/" Then; Tag amerik. einstellig ? $tmp = StringTrimLeft($date, 3) $date = StringLeft($date, 3) & "0" & $tmp; Vornull Tag EndIf If StringLen($date) = 8 Or StringLen($date) = 9 Then; Jahr 2-stellig ? $strJJ = StringRight($date, 2) ; Zeichen für Jahr selektieren $date = StringTrimRight($date, 2) ; beide Zeichen für Jahr abschneiden If $strJJ < 30 Then $strJH = "20"; 00 bis 29 sind 20.. Else $strJH = "19"; 30 bis 99 sind 19.. EndIf $date = $date & $strJH & $strJJ; Jahr jetzt 4-stellig EndIf Select Case StringMid($date, 3, 1) = "/"; amerik. Format "MM/TT/JJJJ" ? $strMM = StringLeft($date, 2) $strTT = StringMid($date, 4, 2) $date = $strTT & "." & $strMM & "." & StringRight($date, 4) Case StringMid($date, 3, 1) = "-";amerik. Format "TT-Mon-JJJJ" ? $strTT = StringLeft($date, 2) $strMM = StringUpper(StringMid($date, 4, 3)) Select Case $strMM = "JAN" $strMM = "01" Case $strMM = "FEB" $strMM = "02" Case $strMM = "MAR" $strMM = "03" Case $strMM = "APR" $strMM = "04" Case $strMM = "MAY" $strMM = "05" Case $strMM = "JUN" $strMM = "06" Case $strMM = "JUL" $strMM = "07" Case $strMM = "AUG" $strMM = "08" Case $strMM = "SEP" $strMM = "09" Case $strMM = "OCT" $strMM = "10" Case $strMM = "NOV" $strMM = "11" Case $strMM = "DEC" $strMM = "12" EndSelect $date = $strTT & "." & $strMM & "." & StringRight($date, 4) EndSelect If $s_sort = 1 Then; Optionsschalter gesetzt ? $date = StringRight($date, 4) & "-" & StringMid($date, 4, 2) & "-" & StringMid($date, 1, 2) ; als sortierbarer String EndIf Return $date EndFunc ;==>_MultiDateToNormCode
Alles anzeigen;ReportToPDF.INI [window] main1=SomnoStar Pro - 1. Standard main2=SomnoStar Pro - 1. Auswertung [reports] report0=Kommentare, Default report1=MSLT Report, Default report2=Polysomnography Report, Default report3=Short Report, Default report4=Long Report, Default report5=Sleep Stage Report, Default report6=Treatment Sequence Report, Default report7= report8= report9= [aktuell] report0=Polysomnography Report, Default [pdf] target=Z:\ [application] appl_path=C:\4100\score.exe [labmanbutton] pos_x=750 pos_y=500 [language] label1=Aktuellen Report Ändern|Change Current Report label2=Weiter mit aktuellem Report|Resume with Current Report label3=Neue Auswahl Bestätigen|Acknowledge New Choice label4=Aktueller Report - Bei Bedarf anderen Auswählen|Current Report - Change If Required label5=Report Exportieren|Report Export label6=Report in PDF-Datei exportieren|Report Export To PDF-File label7=Einen weiteren Report exportieren|To Export Another Report label8=Beenden|Exit label9=Hinweis|Note label10=Bitte wählen Sie den Patienten aus|Please Select Patient label11=Bestätigen Sie die Auswahl mit Taste <F9> !|Acknowledge Your Choice With Key <F9> ! label12=Achtung !|Attention ! label13=- Es wurde kein Patient ausgewählt oder|- No Patient Was Selected Or label14=- Der gewählte Patient ist nicht markiert (blau hinterlegt).|- The Selected Patient Is Not Marked (Lay Underneath Blue). -
@jonk
Faulhei.. äh, ich meine natürlich: Sparsamer Umgang mit Ressourcen
ist doch schon seit jeher Antrieb für Forschung und Entwicklung.Hab grad die 3.1.1.132 installiert und das SciteUpgrade dazu. Und siehe da: Es geht wieder alles [fröhlichseinundsingen].
-
Danke!
Trotz der Affenhitze eine Supraschnelle Beantwortung hier - echt goil. :party4: