【问题标题】:Sendkeys.Send and InputSimulator not firing in Win 7Sendkeys.Send 和 InputSimulator 在 Win 7 中未触发
【发布时间】:2016-06-13 13:40:37
【问题描述】:

我是 c# 编程的新手,我希望这是一个简单的问题。

我的这段代码在带有 WinXP 的 Visual Studio 2010 上运行良好:

        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);
        }         

在我迁移到 Win 7 和 Visual Studio 2015 后,它不再触发 ENTER 键。

我也尝试将 SendKeys 替换为:

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

但这也不行。

谁能帮忙?

提前致谢。

洛里多

【问题讨论】:

  • SendKeys.send is blocked的可能重复
  • 我添加了同样的问题,大多数时候窗口跳过它(不是代码)尝试添加 System.Threading.Thread.Sleep(5);在您的 SendKeys.Send("{ENTER}"); 之前。窗口有时没有“时间”来接收密钥发送。
  • 感谢 Jrsls,但不幸的是,这并没有解决问题。
  • 你想达到什么目的?您正在打开一个用于与用户交互的 SaveFileDialog,但是您正在发送一个不允许用户提供输入的 Enter 键消息?
  • 我只想自动保存.txt文件,不需要用户输入。

标签: c# .net visual-studio


【解决方案1】:

不需要 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);

【讨论】:

  • 太棒了,这解决了我的问题,两种解决方案都有效,谢谢。
【解决方案2】:
    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);
    }      

【讨论】:

  • 我也尝试过延迟 1 秒,但仍然无法触发 ENTER 按钮
猜你喜欢
  • 2013-10-13
  • 2019-11-24
  • 2019-09-12
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多