2016-06-13 73 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按钮 –