如何在 C# 控制台应用程序中获取光标处的字符?

2024-03-17

我知道如何设置光标到控制台中的特定点设置光标位置 or 光标向左 and 光标顶部一起。那不是问题。

But,我怎样才能得到该点的值?难道没有类似的东西吗控制台.光标?那么我可以得到那个位置的角色吗?也许是这样的:

char c = Console.GetCharAtCursor();

No luck?


AFAIK,您必须将整个控制台缓冲区作为二维缓冲区读取,并使用光标的 X 和 Y 坐标作为该缓冲区的索引。看:

[DllImport("kernel32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
public static extern bool GetConsoleScreenBufferInfo(
    IntPtr consoleHandle,
    out CONSOLE_SCREEN_BUFFER_INFO consoleScreenBufferInfo);

您可以在此处阅读有关缓冲区结构的信息:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682093(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms682093(v=vs.85).aspx

Update:

如果您有兴趣使用控制台 API 来编写游戏,有人为控制台编写了《太空入侵者》(实际上是 powershell),但所有 API 都是托管代码,而不是脚本。他有精灵/路径例程等 - 来源已结束http://ps1.soapyfrog.com/2007/08/26/grrr-source-code-include-invaders/ http://ps1.soapyfrog.com/2007/08/26/grrr-source-code-including-invaders/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 控制台应用程序中获取光标处的字符? 的相关文章

  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • Linq - 从表达式 创建表达式

    我有一个谓词Expression
  • 是否有可能劫持标准输出

    我正在尝试使用 C 重定向 Windows XP 上已运行进程的标准输出 我知道如果我自己生成进程 我可以做到这一点 但对于这个应用程序 我更喜欢一个 监听器 我可以附加到另一个进程 这在纯 Net 中可能吗 如果不可能 在 Win32 中
  • 自动映射器多对多 stackoverflowException

    我遇到以下映射的堆栈溢出 Mapper CreateMap
  • 将字符串作为 PChar 从 CSharp 传递到 Delphi DLL

    我正在尝试将字符串从 C 传递到 Delphi 构建的 DLL Delphi DLL 需要 PChar 这是Delphi导出 procedure DLL Message Location PChar AIntValue integer st
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • C# 无法捕获 SerializationException

    我的程序在加载序列化文件的部分遇到问题 如果文件无法反序列化 我希望很好地失败 但由于某种原因 我的程序将中断而不是进入 catch 子句 这是我的代码 using FileStream fs new FileStream openFile
  • ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton

    我有一个加载自定义用户控件的 Sharepoint WebPart 用户控件包含一个 Repeater 而 Repeater 又包含多个 LinkBut ton 在 Web 部件的 RenderContent 调用中 我有一些用于添加事件处
  • 将 dataGridView 中选定的行作为对象检索

    我有一堂这样的课 public partial class AdressBokPerson public long Session get set public string F rnamn get set public string Ef
  • 控制台应用程序中使用 Unicode 字符的 _tprintf

    我正在从 Unicode 构建的控制台应用程序 使用 C 和 Visual Studio 2008 执行这个简单的输出 此代码旨在在 Windows 上运行 tprintf L Some sample string n 一切正常 但是如果我
  • 调用异步方法在视图模型的构造函数中加载数据有警告

    我的视图包含一个 ListView 它显示来自互联网的一些数据 我创建一个异步方法来加载数据并在我的视图模型的构造函数中调用该方法 它有一个警告提示我现在使用await关键字 还有其他解决方案可以在构造函数中异步加载数据吗 有几种可以应用的
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 使用数据绑定,如何将包含表情符号的文本绑定到标签并使其正确显示?

    我正在编写一个应用程序来连接 WordPress BuddyPress API 该应用程序将允许用户通过 API 相互发送消息 当这些消息包含表情符号时 我很难正确显示它们 以下是 API 返回的消息文本的简短示例 Hi x1f642 ho
  • DataGridView 行背景颜色没有改变

    我想根据加载时的特定条件更改 DGV 行的背景颜色 即使在 Windows 窗体中也是如此 但我看不到任何 DGV 行的颜色有任何变化 谁能告诉我如何解决这个问题 private void frmSecondaryPumps Load ob
  • Gremlin.net 文本包含等效项

    我正在使用 Gremlin net 库连接到 janus 图形服务器 我使用 cassandra 和弹性搜索进行数据存储和索引 在我使用的 gremlin 语言和 gremlin 控制台中文本包含在属性的文本中进行搜索 我正在使用混合索引
  • C 变量声明的效率 [重复]

    这个问题在这里已经有答案了 例如 在 C 中声明一个变量需要多长时间int x or unsigned long long var 我想知道它是否会让我的代码在类似的事情中更快 for conditions int var 0 code 这
  • “1个未解决的外部”C++

    我已经检查了所有文件之间的连接以及类和函数定义 但每次我尝试运行我的程序时 它都会阻止我并告诉我它有 1 个未解析的外部 该程序应该打开多个文件 一个 学生 文件和一个 成绩 文件 从中读取数据 然后使用 查询文件 来查找数据 找到查询中要
  • Xcode 7 调试器不会中断内联标头函数

    过去五年我一直在各种 C 项目中使用 Xcode 没有出现这个问题 今天 我打开了一个较旧的项目 大约 2 年前 并尝试通过在该函数中放置一个活动断点来调试头文件中的内联函数 由于某种原因 调试器不会中断此代码 但是 如果我在调用该函数的
  • 具有四个 && 的 LINQ Where 子句

    我正在尝试在Where 子句中创建一个带有4 个参数的LINQ 查询 这是一个 Windows 8 应用程序项目 我正在使用 SQLite 数据库 SQLite 实现 https github com praeclarum sqlite n
  • 将一个 IEnumerable 拆分为多个 IEnumerable

    我是 linq 新手 我需要根据指示器将 Couple string text bool Indicator 类型的 IEnumerable 拆分为多个 IEnumerable 我尝试使用skipWhile 和 TakeWhile 但没有找

随机推荐

  • Android canvas drawText 文本的 y 位置

    我正在使用 Canvas 创建一个带有一些背景和一些文本的 Drawable 该可绘制对象用作 EditText 内的复合可绘制对象 文本是通过在画布上的 drawText 绘制的 但在某些情况下 我确实对绘制文本的 y 位置存在问题 在这
  • 我从哪里开始组装?

    嘿 我会用 C 语言编程 会一点 Python 和 Pascal 我真的很想学习汇编 我今年 18 岁 高中毕业 编程是 我的爱好 因为学业确实不是什么挑战 我下载了几本关于汇编的书籍 它们是 汇编的艺术 初学者的汇编 完全初学者的汇编和
  • Android 媒体记录器停止异常

    我正在从 Android 媒体录音机录制视频和音频 我正在检查剪辑长度 如果少于 2 秒 请删除它 但问题是 如果我从文件路径检查文件的持续时间 MediaRecorder 每次抛出异常后都会抛出异常 即使我录制 10 秒的音频 但是当我评
  • 为什么空基类优化 (EBO) 在 MSVC 中不起作用?

    为什么空基类优化 EBO 在Visual C 中没有得到充分应用 如果我有很多基类 我有什么办法可以帮助编译器进行这种优化吗 include
  • iOS UITesting 如何关闭 Popover(iPad Popover 不是警报样式)

    我有一个非常复杂的应用程序 有很多视图和弹出窗口 用于快速选择条目 我无法关闭弹出窗口 我尝试了很多类似的 点击窗口中的坐标 app otherElements PopoverDismissRegion 击中后面的元素 弹出窗口 根本不可点
  • Python KafkaConsumer 从某个时间戳开始消费消息

    我计划跳过主题的开头 只读取从某个时间戳到结束的消息 关于如何实现这一目标有任何提示吗 我猜你正在使用kafka python https github com dpkp kafka python https github com dpkp
  • 如何将列表视图放置在 SingleChildScrollView 中但防止它们单独滚动?

    我有一个像这样的小部件树 SingleChildScrollView Column Container ListView or GridView 问题是 当我的小部件树如上所示时 它会给我错误 需要油漆 所以我像这样改变我的小部件树 Col
  • C# 十六进制转ascii

    我正在尝试使用以下命令将十六进制字符串转换为 ASCII public void ConvertHex String hexString StringBuilder sb new StringBuilder for int i 0 i lt
  • 如何从 Android 上的 sqlite 数据库中删除旧行?

    我有一个参数 用户可以在其中选择应存储数据的时间段 我读到了days多变的 记录添加到数据库时的日期和时间存储在KEY DATE ADDED 它的创建方式如下 SimpleDateFormat dateFormat new SimpleDa
  • git-ftp 在 repo 根目录中的文件夹和文件名中添加尖号 (#)

    I use Git ftp https github com git ftp git ftp scripts to uploading of my project via FTP on shared hosting But there is
  • 在 Golang 中导入模块时如何捕获错误?

    在golang中 当我导入一个模块时 它的init 被执行 我假设在main 之前 这个函数中可能会产生一些错误 我如何捕获这些错误并在我自己的代码中处理它们 正如你所知 Go 中的错误是返回值 由于 init 不返回任何内容 因此如果出现
  • 在android中,当应用程序因滑动而被杀死时,如何执行代码?

    所以基本上我在 xamarin 上使用 C 创建了一个应用程序 一切都运行完美 我调用了一个事件处理程序 当我按下 Android 上的后退按钮时 它不会退出应用程序 只是将其移动到后台 为此 我使用了 public override vo
  • Android 获取 Google Play 商店应用程序版本

    我正在使用此代码来获取 Google Play 商店应用程序版本 但这导致我的应用程序挂起 请指定获取应用程序版本的另一种方法 或者我如何使用此代码使应用程序不会挂起并成功运行 public class VersionChecker ext
  • 在 jQuery Mobile 的弹出窗口中打开外部页面

    我正在使用 jQuery Mobile 实际上我想在弹出窗口中打开外部链接 我试过这个 a href Open Dialog a
  • 在 Python 中合并数据帧时出现重复行

    我目前正在使用内部联接合并两个数据帧 但是 合并后 即使我合并的列包含相同的值 我也会看到所有行都是重复的 具体来说 我有以下代码 merged df pd merge df1 df2 on email address how inner
  • 如何在 django 中将图像添加到帖子中

    我正在构建一个博客系统 它允许用户将图像添加到他们的博客中 当用户添加图像时 图像会自动上传 这是在博客发布之前发生的 所以我应该如何处理上传的图像 这些图像有点像临时图像 因为如果用户发布博客 这些图像将会有该博客的外键 并保存到某个文件
  • AWS Lambda 函数无法调用同一 VPC 中的另一个 Lambda 函数

    我创建了一个VPC10 5 0 0 16有 2 个子网 10 5 1 0 24 10 5 4 0 24 我创建了一个安全组 入境规则 Type Protocol Port range Source Description optional
  • 真的有必要在每次应用程序启动时创建 SQLite 表吗?

    我在不止一个 SQLite 教程中注意到该表是在onCreate 扩展类的事件SQLiteOpenHelper 我已经在 Firefox 插件的帮助下在 Android 环境 Eclipse IDE 之外创建了 SQLite 数据库和表 数
  • SQL 更改表然后修改值

    我正在处理一个 SQL 脚本 当我创建 或编辑 列然后尝试修改该新列时遇到问题 例如 BEGIN ALTER TABLE SampleTable ADD ColumnThree int END IF EXISTS SELECT FROM s
  • 如何在 C# 控制台应用程序中获取光标处的字符?

    我知道如何设置光标到控制台中的特定点设置光标位置 or 光标向左 and 光标顶部一起 那不是问题 But 我怎样才能得到该点的值 难道没有类似的东西吗控制台 光标 那么我可以得到那个位置的角色吗 也许是这样的 char c Console