これは、web ではなく、Windows デスクトップ用です... Visual Studio 2013 を使用する C# で。Windows 7 で。
こんにちは、「Windows Speech Recognizer」を最初から再作成しています... si は非常にうまく機能しています... si を実行する必要があるのは、開いている windows プロセス (つまり、メモ帳、Firefox など) を確認してから、IF メモ帳です。開いている、何かをする...そのアクションを自分で呼び出す必要はありません...自動のように...メモ帳を開く...「こんにちはメモ帳」というアラート...私はメモ帳を閉じます」アクションは「メモ帳を閉じる」と言います。 .. 12948305380453 さまざまなことを試してみましたが、私が達成した唯一のことは、数字を書くことです...そして、メモ帳を閉じて再度開くと...数字が異なります...プロセス名が必要です...のようにWindowsタスクマネージャーから「notepad.exe」「firefox.exe」...
申し訳ありませんが、投稿するコードがありません。実際にこの部分のコードを持っていないためです...ありがとう...
プログラム (メモ帳) は手動で開くため、コードは常にタスク マネージャーのプロセスを追跡する必要があります。コード内の変数で結果を教えてください(たとえば、文字列「PNAME」なので、コードの残りの部分でその変数を使用できます.
Notepad.exe が開かれていない (つまり、True または False) かどうかを教えてくれるだけでいいのです。
notepad.exe が開いている場合はこれを実行する notepad.exe が閉じている場合は何もしない
わかりました...コードはかなり大きいです...だから、最も関連性の高いものを投稿しようとします...
私が使用している「usign」は...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Speech;
using System.Speech.Synthesis;
using System.Speech.Recognition;
using System.Text;
using System.Windows.Forms;
using System.Threading;
Windows UI またはそのコマンドを使用しない音声認識エンジンを初期化しました (つまり、Open Firefox と言っても、彼の文法にないため何もしません)。
それから私は自分の文法をロードしました
private Grammar CreateCustomGrammar()
{
GrammarBuilder GeneralCommands = new GrammarBuilder();
GeneralCommands.Append(new Choices("cut", "copy", "paste", "Read Clipboard", "help", "Close Recognition", "Turn Dictation On", "Read That"));
return new Grammar(GeneralCommands);
recognizer.LoadGrammar(GeneralCommands);
}
文法のすべての単語にスイッチを追加して、何をすべきかを知っています
private void SpeechToAction(string text)
{
DetermineText(text);
switch (text)
{
case "cut":
//cut();
speed();
break;
case "copy":
copy();
break;
case "paste":
paste();
break;
case "Read Clipboard":
readClipboard();
break;
case "Read That":
readThat();
break;
case "Turn Dictation Off":
TurnDictationOff();
break;
case "help":
help();
break;
case "Close Recognition":
Exit();
break;
}
}
別のアプリケーション「つまりメモ帳」を使用したい場合、そのすべてがバックグラウンドで機能します
しかし、「メモ帳」がフォアグラウンドアプリケーションであるときにアクティブになりたいコマンドがある場合...私が立ち往生している場所があります
理論を知っている...
それはこのようなものになります
(私が追加したすべてのコードの前に)
//here is the tricky part
IF //notepad is the foreground and var notepadOK == 1
{
private Grammar NEWNAME()
{
GrammarBuilder NEWNAME = new GrammarBuilder();
GeneralCommands.Append(new Choices("Hole notepad", "save"));
return new Grammar(NEWNAME);
var notepadOK = 0
}
}
IF //notepad is NOT in the foreground and notepadOK == 0
{
// unload Notepad Grammar (i remember how to do this part, just cant find //it in the code
}