2016-08-30 18 views
-3

私は私のお父さんのためのアプリを作成しました。それは単純なディクテーションプログラムです。事は彼が彼のコンピュータにそれをインストールしたときにそれがストールし、一般的なアクセスがエラーを拒否したと言いました。環境とフォルダブラウザのダイアログ

それは私が、その後SaveFileDialog sfd = new SaveFileDialog()を使用し、エラーを与えた最初の時間は、ダイアログがOKだったことを確認するために、通常は「」if文を追加しました。しかし、アプリが拒否されたアクセスファイルを持っていた。

私はEnvironment.GetFolderと同じことをしましたしかし、私がsaveFileDialog1openFileDialog1をツールボックスの外に置いても、それは保存されず、txtドキュメントは開かれません。

私のノートパソコンではなく、彼のノートパソコンで動作します。これはコンピュータとコードのエラーが原因である可能性があります。Environement.GetFolderをで使用する正しい方法は何ですか?。

必要に応じて、プログラムにフルコードを投稿することもできます。

private void lblOpenFile_Click(object sender, EventArgs e) 
    { 

     OpenFileDialog open = new OpenFileDialog(); 
     open.Title = "Open File"; 
     open.Filter = "Text Files (*txt) | *.txt"; 

     if (open.ShowDialog() == DialogResult.OK) 
     { 
      StreamReader read = new StreamReader(File.OpenRead(open.FileName)); 

      txtTextBox.Text = read.ReadToEnd(); 
      read.Dispose(); 
     } 
    } 

    private void lblSaveFile_Click(object sender, EventArgs e) 
    { 

     SaveFileDialog save = new SaveFileDialog(); 
     save.Title = "Save File"; 
     save.Filter = "Text Files (*txt) | *.txt"; 

     if (save.ShowDialog() == DialogResult.OK) 
     { 
      StreamWriter write = new StreamWriter(File.Create(save.FileName)); 

      write.Write(txtTextBox.Text); 
      write.Dispose(); 
     } 
    } 

これは私のスクリーンレコーダーで使用されているEnviromentです。私はそれを保存をクリックすると、私はファイル名を保存すると、それは何もしないダイアログボックスを表示します。ファイルを保存しますが、私は指定したとおりに保存しません。だから私は上記と下のコードをマージしようとしている。上記のコードは以下がありませんしかし、アクセス権を付与するものではありません

string OutputPath;  

OutputPath = Environment.GetFolderPath(Environment.SpecialFolder.MyVideos) + @"\\IvanSoft Desktop Recorder" + saveFileDialog1; 


private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) 
    { 
     string fileName = saveFileDialog1.FileName; 
     fileName = "Tutorial";  
    } 

プログラムにコード全体

using System; 
using System.Drawing; 
using System.Windows.Forms; 
using System.IO; 
using System.Speech.Recognition; 
using System.Threading; 

namespace AGM_Speech 
{ 
    public partial class Form1 : Form 
    { 
     public SpeechRecognitionEngine recognizer; 
     public Grammar grammar; 
     public Thread RecThread; 
     public Boolean RecognizerState = true; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void lblAbout_Click(object sender, EventArgs e) 
     { 
      this.Hide(); 
      About about = new About(); 
      about.Show(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      GrammarBuilder builder = new GrammarBuilder(); 
      builder.AppendDictation(); 


      grammar = new Grammar(builder); 
      recognizer = new SpeechRecognitionEngine(); 
      recognizer.LoadGrammarAsync(grammar); 
      recognizer.SetInputToDefaultAudioDevice(); 

      recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized); 

      RecognizerState = true; 
      RecThread = new Thread(new ThreadStart(RecThreadFunction)); 
      RecThread.Start(); 
     } 

     private void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
     { 

      if (!RecognizerState) 
       return; 

      this.Invoke((MethodInvoker)delegate 
      { 
       txtTextBox.Text += (e.Result.Text.ToLower() + " "); 
       txtTextBox.SelectionStart = txtTextBox.Text.Length - 0; 
       txtTextBox.SelectionLength = 0; 

      }); 
     } 

     public void RecThreadFunction() 
     { 
      while (true) 
      { 
       try 
       { 
        recognizer.RecognizeAsync(); 
       } 
       catch 
       { 

       } 


      } 
     } 

     private void lblStartSpeech_Click(object sender, EventArgs e) 
     { 
      RecognizerState = true; 

     } 

     private void lblStopSpeech_Click(object sender, EventArgs e) 
     { 
      RecognizerState = false; 
     } 

     private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
     { 
      RecThread.Abort(); 
      RecThread = null; 
      grammar = null; 
      recognizer.UnloadAllGrammars(); 
      recognizer.Dispose(); 


     } 

     private void lblOpenFile_Click(object sender, EventArgs e) 
     { 

      string open = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 

      StreamReader reader = new StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); 


     } 

     private void lblSaveFile_Click(object sender, EventArgs e) 
     { 

      SaveFileDialog save = new SaveFileDialog(); 
      save.Title = "Save File"; 
      save.Filter = "Text Files (*txt) | *.txt"; 

      if (save.ShowDialog() == DialogResult.OK) 
      { 
       StreamWriter write = new StreamWriter(File.Create(save.FileName)); 

       write.Write(txtTextBox.Text); 
       write.Dispose(); 
      } 
     } 




     private void txtSearch_Click(object sender, EventArgs e) 
     { 
      txtSearch.Clear(); 
      lblGo_Click(null, null); 
     } 

     private void txtSearch_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      if (e.KeyChar == (char)ConsoleKey.Enter) 
      { 
       lblGo_Click(null, null); 

      } 
     } 

     private void lblGo_Click(object sender, EventArgs e) 
     { 
      int index = 0; 
      String temp = txtTextBox.Text; 
      txtTextBox.Text = ""; 
      txtTextBox.Text = temp; 

      while (index <= txtTextBox.Text.LastIndexOf(txtSearch.Text)) 
      { 
       txtTextBox.Find(txtSearch.Text, index, txtTextBox.TextLength, RichTextBoxFinds.None); 
       txtTextBox.SelectionColor = Color.YellowGreen; 
       index = txtTextBox.Text.IndexOf(txtSearch.Text, index) + 1; 
      } 
     } 
    } 
} 
+0

あなたのマシンの管理者は....彼は彼の管理者ですか?アクセス拒否は許可エラーです。 – Sorceri

+0

彼は自分のマシンの管理者であり、私は私の管理者です。 – campnerd

+0

私は自分のデスクトップレコーダーを作りました。私は 'Enviroment.GetFolderPath'を使い、それを別のコンピューターに配備していました。しかし、私はファイルの名前を変更できませんでした。だから私はそれが動作するのと同じ方法をしたが、ファイルの名前が入力されたときに私はテキストボックスを使用する必要がありますか、私はちょうどSaveFileDialogを使用してテキストを変更することができますか私は疑問に思っていた – campnerd

答えて

0

それはあなたが失敗している場所のようにあまりありませんので、言うのは難しいですtry/catchまたはロギングの

これを代わりに使用して、メッセージボックスに表示されるスタックトレースを貼り付けることはできますか?これにより

private string fileOutputLocation { get; set; } 

private void lblSaveFile_Click(object sender, EventArgs e) 
{ 
    bool fileSelected = false; 
    Try(() => 
    { 
     SaveFileDialog save = new SaveFileDialog(); 
     save.Title = "Save File"; 
     save.Filter = "Text Files (*txt) | *.txt"; 
     save.InitialDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyVideos), "IvanSoft Desktop Recorder"); 

     if (save.ShowDialog() == DialogResult.OK) 
     { 
     fileOutputLocation = save.FileName; 
     fileSelected = true; 
     } 
    }); 
    if (fileSelected) 
    { 
     bool fileSaved = SaveFile(); 
     MessageBox.Show("File saved successfully: " + fileSaved.ToString()); 
    } 
} 

private bool SaveFile() 
{ 
    TryDeleteFile(); 

    bool fileSaved = false; 

    Try(()=> 
    { 
    File.WriteAllText(fileOutputLocation, txtTextBox.Text); 
    fileSaved = true; 
    }); 

    return fileSaved; 
} 

private void TryDeleteFile() 
{ 
    Try(()=> 
    { 
     if (File.Exists(fileOutputLocation)) 
     { 
     File.Delete(fileOutputLocation); 
     } 
    }); 
} 

private void Try(Action action) 
{ 
    try 
    { 
     action(); 
    } 
    catch (Exception e) 
    { 
     MessageBox.Show(string.Format("The following exception was thrown:\r\n{0}\r\n\r\nFile path: {1}", e.ToString(), fileOutputLocation)); 
    } 
} 

、プラスのイベントは、Windowsイベントビューア([スタート]> [ファイル名を指定して実行]> [eventvwrと>セキュリティ)にログインし、我々は問題が何であるかを伝えることができるはずです。

最後に、実行ファイルを提供するだけの場合は、ファイルのプロパティをチェックして、Windowsでブロックされていないことを確認する必要があります。

+0

私ができることは、 SaveFileDialogを持っているので、プログラムのコード全体を約100行だけ見ることができます。また、このアプリは、アプリを取る小さなメモです。私の父親はMSスピーチが好きではありません。なぜなら、それは一時停止し、彼はレイアウトが気に入らないからです。だから、アプリはすべてを省略し、アプリを通過します。その基本的なアプリ。今、 'Environment'の部分は私のカスタムデスクトップスクリーンリーダーにあります。私はwin8.1でビルドし、10に展開しました。ファイルを保存するだけの方法で実行できます。それが私の問題です。私は全体のコードを質問に入れます – campnerd

+1

私はこのコードを実行して詳細を提供するよう依頼します。これ以上実行するには、あなたが提供しているものに十分な詳細がありません。私が求めたコードと詳細は、私たちに必要なデータを与えるでしょう。問題は明らかに環境ですが、詳細がなくても、私たちはもうあなたを助けることはできません。 – Jake

+0

';'や ''( ''のようないくつかの一般的なエラーを投げるので、ちょっと修正する必要があります。私は私のパパにダウンロードリンクを送るときに今晩遅くまでテストすることができません。他のラップトップ私はそれをテストする必要がありますここではない新しいMoboのサービス店に送られたので、私は明日の結果を投稿します – campnerd

関連する問題