1

Thema: Dragon AutoIt

Hallo,

viele von Euch kennen sicherlich AutoIt.

Ist es möglich, aus AutoIt heraus ein Dragon-HeardWord bzw. Dragon-Script zu starten?

Ich möchte z.B. in AutoIt den Dragon-Sprachbefehl "als Ausdruck hinzufügen" auf einen Button legen, damit selektierter Text zu Dragon hinzugefügt wird.


In einem englischen Forum fand ich folgendes, kann das aber leider nicht so anpassen, dass es in AutoIt läuft.

Insbesondere weiß ich nicht, wie ich die Referenz auf Dragon in AutoIt herstellen kann.

Gibt es eine Dragon-DLL, die ich in AutoIt einbinden kann?


Hier das Beispiel:

If you simply want to run a command, this will work (VB)

(reference to Dragon NaturallySpeaking ActiveX Controls)

Public Sub Dictation()

Dim vcmd As New DNSTools.DgnVoiceCmd

If EngineControl.Speaker = "" Then

MsgBox "DNS is not running"

Exit Sub

End If

teststring = "HeardWord ""open"", ""dictation"", ""box"""

vcmd.Register dgnregNone

vcmd.ExecuteScript Script:=teststring, ID:=0

vcmd.UnRegister

End Sub 


Danke und einen schönen Abend
Alois

(DPI 14, Windows 8 / 64)

2

Re: Dragon AutoIt

Hallo Alois,

hinter der im Beispiel genannte Referenz zu Dragon NaturallySpeaking ActiveX steht die dnstk10.dll. Wie diese in AutoIt einzubinden ist, müssen Leute beantworten, die AutoIt benutzen. Ich benutze es nicht.

Welche Problemstellung, welche Idee verbirgt sich denn hinter Ihrem Beitrag?

Ich finde, dass Beiträge, die ganz gezielt nach einem sehr speziellen Sachverhalt fragen, in der Regel nicht zum Mitdenken anregen. Und damit auch wenig Motivation besteht, sich an der Suche nach einer Anwort zu beteiligen. Also, Leute, seid nicht so schreibfaul, wenn ihr eine Problem-Lösung braucht..
Gruß, Pascal

3 Zuletzt bearbeitet von Alois (14.02.2017 18:03:19)

Re: Dragon AutoIt

Vielen Dank für Ihre Antwort.

P.Roch schrieb:

hinter der im Beispiel genannte Referenz zu Dragon NaturallySpeaking ActiveX steht die dnstk10.dll.

Sagen Sie mir bitte, wo genau Sie die Referenz gefunden haben?
"reference to Dragon NaturallySpeaking ActiveX Controls" ... gibt es dafür eine Datei beim installierten Dragon - oder online was zum Nachlesen?

P.Roch schrieb:

Welche Problemstellung, welche Idee verbirgt sich denn hinter Ihrem Beitrag?

Wie in Post 1 geschrieben:

Alois schrieb:

Ich möchte z.B. in AutoIt den Dragon-Sprachbefehl "als Ausdruck hinzufügen" auf einen Button legen, damit selektierter Text zu Dragon hinzugefügt wird.

Es gibt Sprachbefehle, die sollten auf einem Button sein, da der Zugriff darüber wesentlich schneller ist. 

Jeder hat so seine Vorlieben :-) ... am liebsten wäre mir ein kreisrundes Kontextmenü für solche Sprachbefehle im Diktierfenster.

Ich wette, Herr Wilke hat ein paar Beispiele in der Schublade, da er einiges rund um Dragon herum programmiert hat ;-)

Es ist gar nicht so leicht, den Zugang zu finden, wenn man über Programmiersprachen ran an den Drachen möchte.

(DPI 14, Windows 8 / 64)

4

Re: Dragon AutoIt

Bevor ich meine Schublade öffne, haben Sie noch eine Menge Hausaufgaben zu erledigen. Etwa, mal den Thread, woraus Sie kopiert haben, einfach mal von Anfang bis Ende lesen und verstehen. Alternativ sich daraus ergebende konkrete Fragen stellen.

Für den Fall, dass Sie ihn nicht mehr finden können:

http://knowbrainer.com/forums/forum/mes … tstring%20

DPI 15 (15.00.000.076) auf Windows 8.1 (64-bit)
SpeechMike Premium (LFH3500) mit Philips Device Control Center (3.0)
Intel i7 2600 QuadCore - 3.4 GHz - 8 MB L3-Cache - 6 GB RAM

5 Zuletzt bearbeitet von Alois (14.02.2017 21:06:06)

Re: Dragon AutoIt

R.Wilke schrieb:

Bevor ich meine Schublade öffne, haben Sie noch eine Menge Hausaufgaben zu erledigen.

Ich habe den Link vorher gespeichert. Mein Englisch ist leider grottenschlecht und mit automatischer Google-Übersetzung bin ich noch nicht zu dem Punkt gekommen, auf den Sie mich lenken möchten.

Geben Sie mir bitte einen Tipp.

Nach langer Suche fand ich obigen Beitrag - und den leider als einzigen - der in mir die Hoffnung weckte, dass es möglich sein kann, eine Dragon-DLL in AutoIt einzubinden, um darüber einen Dragon-Sprachbefehl als Funktion auf einen Button zu legen.

PS: ich habe mich gerade 2,5 Stunden durch Forum gewühlt - durch Beiträge, die ich gestern zur ListVar1 geöffnet habe. Wow :-)

(DPI 14, Windows 8 / 64)

6

Re: Dragon AutoIt

Alois schrieb:

Mein Englisch ist leider grottenschlecht

Dann wird es wohl sehr schwierig für Sie, denn wenn es dazu überhaupt etwas zu lesen gibt, ist es auf Englisch.

der in mir die Hoffnung weckte, dass es möglich sein kann, eine Dragon-DLL in AutoIt einzubinden

Das kann ich nicht beantworten, weil ich AutoIt nicht kenne und nicht weiß, ob und wie man darin fremde Objekt-Bibliotheken einbinden kann.

Im allgemeinen sieht es so aus, dass die Dragon ActiveX Komponenten, oder die Dragon API, was nicht mit der Dragon eigenen Skriptsprache zu verwechseln ist, problemlos in folgende Programmierumgebungen eingebunden werden können:

Visual Basic
C#
C++

Das von Ihnen zitierte Beispiel bezieht sich dabei auf Visual Basic. In Visual Basic oder in C#, sofern man eine geeignete IDE verwendet, z.B. Visual Studio, erfolgt die Einbindung schlicht über entsprechende Objekt-Verwaltungen, genauso wie im Dragon Skript-Editor. Voraussetzung ist, dass auf dem Computer Dragon installiert ist, so dass die entsprechende DLL im System registriert ist. Es trifft zu, dass es sich dabei um dnstk10.dll, welche im Programmordner von Dragon liegt, damit kann man aber nichts anfangen, denn entscheidend ist, dass die Bibliothek bei der Installation registriert wurde, sonst könnten Visual Basic oder C# sie nicht finden.

Bei C++ sieht es noch etwas anders aus, dabei wird die API über sogenannte Header-Dateien (*.h) eingebunden, die nicht frei verfügbar sind, und über deren Inklusion sind die API-Schnittstellen objektmäßig verfügbar.

Die Tatsache, dass die Bibliothek und die Schnittstellen bei der Installation von Dragon registriert werden, sorgt wiederum dafür, dass die erstellten Programme auch auf dem Zielcomputer laufen.

Aber selbst wenn man soweit ist, dass man programmatisch auf die API zugreifen kann, kommt man nicht weit, wenn man nicht weiß, wie man mit den Schnittstellen umgehen kann. Elementarer noch: wie muss ein Programm überhaupt gestartet und beendet werden, damit es überhaupt mit Dragon kommuniziert und es nicht zum Absturz bringt?

So ein bisschen Einblick liefert eine Hilfedatei namens dnsapi.chm, die im Help-Ordner im Dragon-Programmordner liegt.

Und, üben könnte man schon mal mit Advanced Scripting, denn dort steht die API größtenteils ebenfalls zur Verfügung.

Wenn Sie nach all dem immer noch interessiert sind, würde ich Ihnen empfehlen, mal mit Visual Basic anzufangen.

DPI 15 (15.00.000.076) auf Windows 8.1 (64-bit)
SpeechMike Premium (LFH3500) mit Philips Device Control Center (3.0)
Intel i7 2600 QuadCore - 3.4 GHz - 8 MB L3-Cache - 6 GB RAM

7 Zuletzt bearbeitet von Alois (15.02.2017 04:41:47)

Re: Dragon AutoIt

Vielen Dank für Ihre Ausführungen.

R.Wilke schrieb:

Das von Ihnen zitierte Beispiel bezieht sich dabei auf Visual Basic.

Ja - und die gute Nachricht: AutoIt v3 ist eine BASIC-artige Freeware-Skriptsprache.

Folgender Befehl ruft in AutoIt eine Funktion in einer DLL dynamisch auf.

DllCall ( "dll", "return type", "function" [, type1, param1 [, type n, param n]] )

Beispiel für eine MessageBox API in AutoIt:
(zeigt eine Messagebox an)

DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "Irgendein Text", "str", "Ein Titel", "int", 0)

Daher würde ich gerne testen, ob es in AutoIt als BASIC verwandte Sprache möglich ist, die Dragon DLL einzubinden.

Was mir für den Anfang fehlt, ist ein einfacher Test, ob die DLL in AutoIt eingebunden werden kann.

Daher suche ich eine Beschreibung, wie die dnstk10.dll einzubinden ist.
Daher auch meine Google Suche nach Beispielen in Visual Basic.

In der dnsapi.chm fand ich nichts zu "dnstk10.dll". (gesucht unter Suche nach "*dnstk10*" und "dnstk10.dll")

In Analogie zum obigen Beispiel und der Syntax:

DllCall ( "dll", "return type", "function" [, type1, param1 [, type n, param n]] )

Wie würden Sie den DLL Aufruf schreiben?

Wo finde ich eine Beschreibung der Parameter für die dnstk10.dll?

Wenn in Visual Basich der Aufruf eines Dragon-Scripts wie folgt aussieht, würde ich das in AutoIt testen.

VB
IDgnVoiceCommand.ExecuteScript ( Script As String, ID As Long )

dnstk10.dll
=
Dragon NaturallySpeaking ActiveX Controls (1.0)

Ich fand noch folgende Dragon DLLs im Befehlscenter:

dgnmycmds.dll
(DngMyCommands)

Was hat es mit der auf sich?

Wenn ich was wesentliches übersehen habe sollte, wäre ich für einen Hinweis dankbar.

(DPI 14, Windows 8 / 64)

8

Re: Dragon AutoIt

Ich bezweifle, dass es so einfach geht, wie Sie sich das vorstellen, aber viel Glück dabei.

Was Ihre vielen Fragen betrifft, suchen Sie selbst nach Antworten.

Das Thema schließe ich damit.

PS: noch ein paar Anmerkungen, um Ihnen zu zeigen, wo Sie stehen.

Die Frage "Wo finde ich eine Beschreibung der Parameter für die dnstk10.dll?" ist widersinnig. Paramater gelten für den jeweiligen Funktionsaufruf, nicht für die komplette DLL. Um die Parameter zu kennen, müsste man erstmal die Funktionen kennen, und den Rückgabewert siehe oben.

Wenn Sie das von Ihnen zitierte Beispiel für den Aufruf einer Message Box verstehen würden, würde Sie die Frage so nicht stellen. Darauf bezogen, würde die Fragestellung nach Ihrem Kenntnisstand wie folgt lauten: Wo finde ich eine Beschreibung der Parameter für die user32.dll?

Dabei deutet die Antwort auf Kenntnisse der WinAPI, ohne die es nicht geht und wo klar ist, dass man nicht mal so eben von einer Skriptsprache in eine Programmiersprache herüberspringt.

Bei Dragon gilt dasselbe.

Das Thema bestätigte mich wieder mal in meinem Widerwillen auf solche Fragen zu antworten, sobald die auftauchen, weil man schon zu Anfang weiß, wie es endet.

DPI 15 (15.00.000.076) auf Windows 8.1 (64-bit)
SpeechMike Premium (LFH3500) mit Philips Device Control Center (3.0)
Intel i7 2600 QuadCore - 3.4 GHz - 8 MB L3-Cache - 6 GB RAM