Nachdem ich hier bisher nur als Gast unterwegs war, dachte ich, es wäre eine gute Idee, mich mal anzumelden
Und da habe ich auch schon gleich eine Frage...
Vorgeschichte:
Ich benutze ständig Nuance Dragon Professional Individual 15 zum Diktieren. Allerdings gibt es reichlich Anwendungen, in denen das nicht vernünftig funktioniert.
(Mit "ständig" meine ich übrigens ständig. Also für diesen Beitrag hier oder für E-Mails genauso, wie zum Umbenennen von Dateien oder zum Ausfüllen einer Überweisung.)
Also brauche ich ein einfaches Tool, das sich mit einem Sprachbefehl starten lässt, ohne große Tipperei den diktierten Text archiviert und auch auf Knopfdruck beim Schließen in die Zwischenablage packt.
Der diktierte Text wird dann einfach aus der Zwischenablage in die nicht so gut funktionierenden Anwendungen kopiert.
WordPad & Co scheiden dafür aus, weil viel zu umständlich zu bedienen. Jeder Tastendruck und jeder Mausklick ist einer zu viel.
Dafür möchte ich mir eine kleine GUI mit einem RTF-Control basteln. Leider habe ich aber noch nicht einmal ansatzweise eine Idee, wie ich das hinbekomme.
Um ein Grundgerüst zu haben, habe ich mir eine GUI mit einem Edit-Control gebastelt, was soweit schon mal tut was es soll.
Leider hat es aber den Nachteil, dass Dragon auch in einem Edit-Control nicht in allen Details funktioniert.
Kleine Warnung, falls sich jemand den Code tatsächlich im Detail ansieht: An einigen Stellen steht evtl. noch überflüssiger Code, der eigentlich nichts macht und nur vom Herumprobieren stammt.
Nun die konkrete Frage:
Hat jemand eine Idee oder einen funktionierenden Codeschnipsel, mit dem ich ein RTF-Control in meine GUI einbinden, eine RTF-Datei laden und unter beliebigem Namen speichern kann?
Code: Select all
#NoEnv
#SingleInstance force
SetWorkingDir %A_ScriptDir%
SetBatchLines -1
SetControlDelay, -1
SetWinDelay, -1
SplitPath, A_ScriptFullPath, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
IniFileName := OutNameNoExt ".ini"
TxtFileName := OutNameNoExt ".txt"
LogFileName := OutNameNoExt
Menu, DateiMenu, Add, Quellverzeichnis öffnen, OpenSourceDir
Menu, DateiMenu, Add, Log-Datei laden, LoadLogFile
Menu, ExtrasMenu, Add, Programm beenden, ExitScript
Menu, ExtrasMenu, Add, Text löschen, EmptyEditControl
Menu, MyMenuBar, Add, Datei, :DateiMenu
Menu, MyMenuBar, Add, Extras, :ExtrasMenu
Gui, New, +MaximizeBox +Resize +MinSize400x400 +AlwaysOnTop +HwndDiktatHwnd
Gui, Menu, MyMenuBar
Gui, Add, StatusBar,vMyStatusBar,
SB_SetText("Margarethe (C) 2017-" A_YEAR " - Diktat (für Nuance Dragon Professional)")
Gui, Add, Button, x0 y0 w400 h25 -TabStop vMyButton1 gCopyAndClose, Kopieren und Schließen
Gui, Add, Button, x400 y0 w400 h25 -TabStop vMyButton2 gCopyAndMinimize, Kopieren und Minimieren
Gui, Font, s13, Courier New
Gui, Add, Edit, x0 y25 w300 h300 vMyEdit HwndThisEditHwnd T10
FileRead, EditContent, %TxtFileName%
GuiControl,, MyEdit, %EditContent%
Gui, Show , w800 h1000, Diktat
Send, {End}
GuiControl Move, MyEdit, % "H" . (A_GuiHeight)-20 . " W" . (A_GuiWidth)
Return
OpenSourceDir: ; Menu-Funktion
Run, % A_ScriptDir
Return
LoadLogFile: ; Menu-Funktion
MsgBox, 4112, Debug, A_LineNumber = %A_LineNumber%`nA_ThisLabel = %A_ThisLabel%`nA_ThisFunc = %A_ThisFunc%
Return
EmptyEditControl:
GuiControl,, MyEdit ; Text löschen
Return
CopyAndMinimize:
Clipboard :=
ControlGetText, DiktatText,, ahk_id %ThisEditHwnd%
DiktatText := Trim(DiktatText,"`t`r`n ")
Clipboard := DiktatText
WinMinimize, ahk_id %DiktatHwnd%
Return
GuiDropFiles:
Loop, Parse, A_GuiEvent, `n
{
FileRead, EditContent, %A_LoopField%
GuiControl,, MyEdit, %EditContent%
break ;### TEST ###
}
Return
GuiSize:
GuiControl Move, MyEdit, % "H" . (A_GuiHeight)-47 . " W" . (A_GuiWidth)
GuiControl Move, MyButton1, % "H25 W" . (A_GuiWidth/2)
GuiControl Move, MyButton2, % "X" . (A_GuiWidth/2) . " H25 W" . (A_GuiWidth/2)
GuiControl, Show, MyStatusBar
SB_SetText("Margarethe (C) 2017-" A_YEAR " - Universelles Eingabefenster für Nuance Dragon Professional")
If (A_GuiHeight > 0)
Send, {End}
Return
; Beenden des Scriptes
ExitScript:
CopyAndClose:
!Escape::
GuiClose:
Clipboard :=
SoundPlay, *64
ControlGetText, DiktatText,, ahk_id %ThisEditHwnd%
DiktatText := Trim(DiktatText,"`t`r`n ")
Clipboard := DiktatText
JJ := SubStr(A_Now,1,4)
MM := SubStr(A_Now,5,2)
TT := SubStr(A_Now,7,2)
hrs := SubStr(A_Now,9,2)
min := SubStr(A_Now,11,2)
sec := SubStr(A_Now,13,2)
FileRecycle, % TxtFileName
FileAppend, % DiktatText, % TxtFileName
ZeitString := "===[ " JJ "-" MM "-" TT " " hrs "." min "." sec " Uhr ]===`n`n"
If (DiktatText) {
FileAppend, % ZeitString DiktatText, % "LOG_" LogFileName " [" JJ "-" MM "-" TT "]-[" hrs . min . sec "].log"
}
ExitApp
Return