输入“你好,世界!”


11

编写一个程序,生成类型为的键盘事件Hello, World!

它不必独立于平台。

它不能保持任何键被按下。例如,在Java中,Robot.KeyPress('H');将保持H按下状态,因此必须使用Robot.KeyRelease('H');

您可以假设在运行程序时大写锁定处于关闭状态。大写字母可以通过按住Shift并按下字母或切换大写字母来键入。对于!,您可能必须使用shift方法。

最短的代码获胜。

Answers:


9

C(Linux),186字节

#include<sys/ioctl.h>
#include<fcntl.h>
#include<stdio.h>
main(){char*s="Hello, World!",d[99],*c;fscanf(popen("tty","r"),"%s",d);int D=open(d,O_RDWR);for(c=s;*c;c++)ioctl(D,TIOCSTI,c);}

应用ugoren的建议后:

111字节

main(D){char*c,d[99];fscanf(popen("tty","r"),"%s",d);D=open(d,2);for(c="Hello, World!";*c;)ioctl(D,21522,c++);}

您可以缩短一些。删除s(只是初始化for(c="H..),c在中增加ioctlmain(D)以保存int。也许还会删除一些包含(甚至是硬代码O_RDWRTIOCSTI)。
ugoren

@ugoren谢谢,我会尝试的:)
saeedn

这不是最短的。为什么这是公认的答案?(我认为这是一个不错的答案,但我只想学习该网站的工作原理。)
2013年

@ 11684最短答案的作者问我不要计算,所以我接受了最短的非平凡答案。
cardboard_box

tty仅在stdin是tty的情况下才需要调用它,在这种情况下,0已经是一个开放的终端fd。
戴夫

18

AppleScript,50个字节

tell app"System Events"to keystroke"Hello, World!"

感谢marinus的建议。


3
嗯 您似乎为正确的工作选择了正确的语言。
cardboard_box

您可以将其缩短为tell app"System Events"to keystroke"Hello, World!"
marinus

该死的,我独立地想到了……+1!
2013年

13

自动热键,20个字节

send Hello, World{!}

请不要算这个。我不想欺骗那些实际上使用不用于发送击键的语言的人。这个答案只是为了完成:P



3

Windows 7中为C,201字节

#include<windows.h>
#include<winable.h>
#define S SendInput(1,&k,28);
int k[7]={1};main(i){char*s="^HELLO, ^WORLD^1";for(i=0;i<16;i++){k[2]=0;if(s[i]>90){k[1]=16;S i++;}k[1]=s[i];S k[2]=2;S k[1]=16;S}}

程序结果:

C:\My\Directory>type.exe

C:\My\Directory>Hello, World!


1

VBScript,54个字节

createobject("wscript.shell").sendkeys "Hello, World!"


1

USB Rubber Ducky的Ducky脚本,22字节

String "Hello, World!"

0

PowerShell,55个字节

(New-Object -c wscript.shell).sendkeys('Hello, World!')

0

InstantEXE 3.0,20个字节

Keys "Hello, World!"

0

Python 3,67字节

from pynput.keyboard import*
s=Controller()
s.type("Hello, World!")

在Tio上没有名为pynput的模块

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.