在控制台应用程序中禁用粘贴

时间:2010-09-28 10:37:51

标签: c# command-line console-application copy-paste

所以,这是一个奇怪的问题:当我按下控制台左上角的“C:\”按钮时,有没有办法禁用你得到的菜单?

我正在制作一款有趣的游戏,但如果玩家能够将单词粘贴到命令行中,它会带来很多乐趣。

我还没有找到任何关于它的话题,所以我想知道是否有人知道如何完成这项工作,或至少解决这个问题。

提前致谢!

编辑:任何^字符的简单注册是否有效?或者控制台不使用^ C和^ V?

2 个答案:

答案 0 :(得分:2)

我不确定控制台是否支持通过键盘组合粘贴,您可以通过菜单粘贴或只是右键单击控制台(这取决于控制台的设置方式)。

我建议更好的解决方案是创建一个winforms应用程序,而不是在控制台应用程序中控制输入/输出。

否则,一个解决方法可能是每100毫秒左右调用Clipboard.Clear以确保他们永远不会有时间复制和粘贴任何东西,直到你清除它为止,但这当然会让人心烦意乱, /或者如果用户的应用程序在后台运行并且正在尝试在其他软件中进行某些工作,则会使用户感到困惑。

答案 1 :(得分:2)

a)使用GetConsoleWindow获取窗口句柄;使用子类和钩子来过滤鼠标和键盘事件。虽然这种方法可能存在很多隐藏的障碍,因为Windows控制台实现细节。

b)使用时序分析。如果此间隔不合理地短,则测量击键之间的时间间隔并忽略输入。您可能需要尝试找到最有效的标准。也许最好测量entrie字的输入持续时间,而不是字符间间隔。

请注意,将文本粘贴到Windows控制台是通过键盘输入模拟实现的,即当您将某些内容粘贴到控制台时,控制台应用程序会观察一系列按键/键入事件。