2016-06-13 81 views
0

我是c#編程中的新手,我希望這是一個簡單的問題。Sendkeys.Send和InputSimulator未在Win 7中觸發

我有這樣的代碼,這是在Visual Studio 2010中工作正常與WinXP的:

 SaveFileDialog saveFile2 = new SaveFileDialog(); 

     saveFile2.InitialDirectory = "C:\\BARCODE"; 

     saveFile2.FileName = "modulaListaV.txt"; 
     saveFile2.DefaultExt = "*.txt"; 
     //saveFile2.Filter = ".txt File|*.txt"; 

     SendKeys.Send("{ENTER}"); 

     if (saveFile2.ShowDialog() == System.Windows.Forms.DialogResult.OK && 
      saveFile2.FileName.Length > 0) 
     { 

      richTextBox3.SaveFile(saveFile2.FileName, RichTextBoxStreamType.PlainText); 
     }   

後,我搬到勝7和Visual Studio 2015年,它不是射擊ENTER鍵了。

我試圖也以取代此所述的SendKeys:

InputSimulator.SimulateKeyPress(VirtualKeyCode.RETURN); (必須添加特定的.dll)

但是這也不起作用。

任何人都可以請幫忙嗎?

在此先感謝。

Lorrido

+0

的可能的複製[SendKeys.send被阻塞(http://stackoverflow.com/questions/4665952/sendkeys-發送被阻止) – fruggiero

+0

我添加相同的問題,大部分時間窗口跳過它(而不是代碼)嘗試添加一個System.Threading.Thread.Sleep(5); SendKeys.Send(「{ENTER}」);之前。窗口有時沒有「時間」來接收keysend。 – jsls

+0

謝謝Jrsls,但不幸的是,這並沒有解決它。 –

回答

0

無需SaveFileDialog,因爲你不需要用戶干預/輸入。

嘗試使用以下代替:

var initialDirectory = @"C:\BARCODE"; 
var fileName = "modulaListaV.txt"; 
var fullFileName = Path.Combine (initialDirectory ,fileName); 

richTextBox3.SaveFile(fullFileName,RichTextBoxStreamType.PlainText); 

或更短:

richTextBox3.SaveFile(@"C:\BARCODE\modulaListaV.txt",RichTextBoxStreamType.PlainText); 
+0

真棒,這是解決我的問題,兩個解決方案都工作, 謝謝。 –

0
SaveFileDialog saveFile2 = new SaveFileDialog(); 

    saveFile2.InitialDirectory = "C:\\BARCODE"; 

    saveFile2.FileName = "modulaListaV.txt"; 
    saveFile2.DefaultExt = "*.txt"; 
    //saveFile2.Filter = ".txt File|*.txt"; 

    System.Threading.Thread.Sleep(1000) 

    SendKeys.Send("{ENTER}"); 

    if (saveFile2.ShowDialog() == System.Windows.Forms.DialogResult.OK && 
     saveFile2.FileName.Length > 0) 
    { 

     richTextBox3.SaveFile(saveFile2.FileName,RichTextBoxStreamType.PlainText); 
    }  
+0

我也試過把1秒的延遲,但它仍然不啓動ENTER按鈕 –