如何在非表单应用程序中生成击键

2024-01-08

所以我有一个巨大的程序,并决定我应该让其中一个方法在单独的线程中运行。所以我将该方法放在一个单独的类中,并在我的表单上激活它。它似乎按照我想要的方式工作,直到它到达给我这个错误的地方:

SendKeys 无法在此应用程序内运行,因为该应用程序 不处理 Windows 消息。要么将应用程序更改为 处理消息,或使用 SendKeys.SendWait 方法。

我尝试在网上寻找答案。我想我看到了一些有关 SendKeys 如何仅在表单或其他内容中工作的内容。

谁能告诉我一种在不使用 SendKeys 的情况下模拟击键的方法,或者一种让 SendKeys 在不同的非表单线程中工作的方法?


您的控制台应用程序需要消息循环。这是通过应用 http://msdn.microsoft.com/en-us/library/6y6135ed.aspx班级。您需要致电应用程序.运行(应用程序上下文) http://msdn.microsoft.com/en-us/library/ms157901.aspx.

class MyApplicationContext : ApplicationContext 
{
    [STAThread]
    static void Main(string[] args) 
    {
        // Create the MyApplicationContext, that derives from ApplicationContext,
        // that manages when the application should exit.
        MyApplicationContext context = new MyApplicationContext();

        // Run the application with the specific context. It will exit when
        // the task completes and calls Exit().
        Application.Run(context);
    }

    Task backgroundTask;

    // This is the constructor of the ApplicationContext, we do not want to 
    // block here.
    private MyApplicationContext() 
    {
        backgroundTask = Task.Factory.StartNew(BackgroundTask);
        backgroundTask.ContinueWith(TaskComplete);
    }

    // This will allow the Application.Run(context) in the main function to 
    // unblock.
    private void TaskComplete(Task src)
    {
        this.ExitThread();
    }

    //Perform your actual work here.
    private void BackgroundTask()
    {
        //Stuff
        SendKeys.Send("{RIGHT}");
        //More stuff here
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在非表单应用程序中生成击键 的相关文章

  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • Windows .cmd 标准输出 - 多重重定向

    给定一个 windows cmd 文件abc cmd abc cmd gt output log 上述命令行操作会将执行的输出保存到output log 文件中 是否有选项可以运行此命令以创建此日志的多个副本 也就是说 我希望在一个位置创建
  • highcharts 不尊重我的 x 轴日期间隔

    几周以来 我每 15 分钟收集一次一系列数据 不幸的是 中间有一个星期的数据缺失 这只是我的一个事实 当我使用 Highcharts 绘制这些数据的图表时 它会压缩 x 轴 时间 从而使图表倾斜 例如 x 轴每 2 小时就有一次主要刻度 直
  • 代码中的注释页眉和页脚真的有必要吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C++ 构造函数初始化列表中的 vim 缩进

    include
  • 让 Gmail 自动显示我嵌入 HTML 电子邮件中的图像?

    我正在使用 Zend Mail 在 PHP 中构建 HTML 电子邮件 并且我想嵌入 附加 任何图像 以便 Gmail 会自动显示它们而不提示用户 我怎样才能做到这一点 谷歌的假设 Gmail 将自动为已验证其域的发件人显示图像 为确保 G
  • java.lang.IllegalStateException:查询 GraphQL 后递归更新

    我正在查询 graphQL 但遇到了这个异常 java lang IllegalStateException Recursive update at java base java util concurrent ConcurrentHash
  • tkinter Checkbutton 小部件返回错误的布尔值

    我这里有一个简单的 GUI 它应该根据检查按钮是否被选中返回一个布尔值 我已将布尔变量设置为 False 因此检查按钮为空 我不明白的是 当我检查按钮时 绑定到该小部件的函数返回 False 而不是 True 这是为什么 这是代码 from
  • Swift:对 NSNotFound 的引用不明确

    在向某些 Objective C 代码添加桥接标头后 我开始收到有关以下内容的编译器错误 NSNotFound是一个不明确的参考 我的猜测是它可以用某种模块前缀来修复 是的 将其更改为 Foundation NSNotFound
  • 如何在 Android SeekBar 上添加数字刻度

    我正在使用开箱即用的 android SeekBar 组件 下面我想添加 1 到 5 中的数字来显示 SeekBar 的进度 我在搜索栏上正确分配数字时遇到问题 就像下图一样 要在搜索栏拇指上绘制文本 请使用此功能 public Bitma
  • Rails 中用户注销后如何使所有会话失效?

    我是 Rails 新手 并且正在关注 Michael Hartl 的 Rails 教程 因此我的代码大部分是从那里借来的 这是场景 我使用以下方式登录我的网站Computer A 然后我使用相同的用户 ID 登录该网站Computer B
  • Android 文件路径 (Xamarin)

    我目前正在尝试选择一个具有意图的文件 我的问题是 返回的路径格式不正确 我的意图 private void selectAudioFile object sender EventArgs eventArgs Intent new Inten
  • PDF:提取的图像被切片/平铺

    图像提取pdfimages and mupdf mutool到目前为止工作正常 使用 FreePDF 生成的 PDF 中的图像始终会被切片 因此一张图像会生成多个图像文件 有什么技巧可以避免这种情况吗 我如何使用结果pdfshow 有没有坐
  • Lucene 索引

    我想使用 Lucene 为现有数据库中的表建立索引 我一直在想这个过程是这样的 为表中的每一列创建一个 字段 存储所有字段 分析 除具有主键的字段之外的所有字段 将表中的每一行存储为 Lucene 文档 虽然此表中的大多数列都很小 但其中有
  • Windows 窗体内存泄漏

    我在 Windows 应用程序中发现轻微的内存泄漏 我在我的应用程序中使用 DevExpress XtraForm 我看到的是该表格的一个实例始终保存在内存中 如果您多次打开同一个表单 它仍然保留上次打开的表单的引用 前任 如果您在应用程序
  • 如何强制删除GitHub中的远程分支?

    我有 2 个远程分支 pending issues in project new issues in project 我尝试删除pending issues in project像这样 git push origin pending iss
  • 提取最新记录

    我有一个这样的表 SKU AVG COST DATE TIME AAA 1 50 20110301 110331 AAA 1 52 20110302 140005 AAA 1 54 20110303 150301 AAA 1 56 2011
  • Python:当“列表”指同一事物时为什么使用“列表[:]”?

    考虑列出一个清单 gt gt gt l 1 2 3 使用有什么好处 gt gt gt l when gt gt gt l打印和以前一样的东西吗 Thanks 它创建一个 浅 副本 gt gt gt l 1 2 3 gt gt gt m l
  • 如何从svn中删除“-”文件?

    我不小心在目录中创建了文件 只是减号 并提交了它 我必须删除它 因为它在其他机器上引起错误 svn 无法将字符串从 UTF 8 转换为本机编码 svn 226 128 147 我可以使用 rm i 或 python os remove xe
  • 是否可以在不使用 s3 的情况下在 sagemaker 中进行预测

    我有一个 pkl 我想将其投入生产 我想对我的 SQL 服务器进行日常查询并对大约 1000 行进行预测 这文档 https docs aws amazon com sagemaker latest dg how it works batc
  • 如何在非表单应用程序中生成击键

    所以我有一个巨大的程序 并决定我应该让其中一个方法在单独的线程中运行 所以我将该方法放在一个单独的类中 并在我的表单上激活它 它似乎按照我想要的方式工作 直到它到达给我这个错误的地方 SendKeys 无法在此应用程序内运行 因为该应用程序