佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2397|回复: 31

模拟键盘

[复制链接]
发表于 19-8-2009 01:08 AM | 显示全部楼层 |阅读模式
各位大大好~ 我的final year project 的题目是 keyboard simulator。 目标是使用c++把A 电脑上的ASCII file的内容,直接输出在B电脑上.

我的概念是这样的:

(设 A电脑传去B电脑)
A电脑选择一个ASCII file, 然后 B电脑上随便点个可以输入文字的地方..例如word,然后A电脑 按 "send" 按钮,我们就可以看到B电脑好像有人在打字一样(可是事实上没有)。

现在还在project 的初期,在寻找着各种可行的方法来开始我的编程。但是一直让我抓头的是,应该如何将程序模拟成键盘,通过cable把字"打"在别的电脑上面呢?  还是我可以直接把character传输过去别的电脑就可以了?

我打算用的cable 是 usb to usb cable. 可是我对usb port IO一窍不通...   不知道大家懂哪里有有关usb port的资料可以供我参考吗?

另外, 我是否应该先参考usb keyboard如何运作呢?

不知道大家可以给我一些意见吗?   如果问的很模糊,请原谅哦~ 我会再详细道出的

谢谢~

[ 本帖最后由 原久美子 于 19-8-2009 01:10 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 19-8-2009 01:18 AM | 显示全部楼层

sourceforge那边有
你的concept跟KVM很像

不过,KVM需要hardware而且不是networked的

sourceforge那边有类似的东西

自己去找
回复

使用道具 举报

发表于 19-8-2009 01:22 AM | 显示全部楼层
研究一下这个
keybd_event()
回复

使用道具 举报

 楼主| 发表于 19-8-2009 03:26 PM | 显示全部楼层
原帖由 faiko 于 19-8-2009 01:18 AM 发表

sourceforge那边有
你的concept跟KVM很像

不过,KVM需要hardware而且不是networked的

sourceforge那边有类似的东西

自己去找


oh? faiko说sourceforge有的是有关usb keyboard怎么操作?  

谢谢 tensaix2j 和 faiko
回复

使用道具 举报

发表于 19-8-2009 06:14 PM | 显示全部楼层
USB没研究.....NETWORK的话用TCPIP....做一个SERVER / CLIENT PROGRAM....
CLIENT可以CAPTURE WINDOW + SEND WM_XXXXXXX的MESSAGE....
SAMPLE可以看SPY++...
回复

使用道具 举报

发表于 19-8-2009 09:46 PM | 显示全部楼层
原帖由 原久美子 于 19-8-2009 03:26 PM 发表 oh? faiko说sourceforge有的是有关usb keyboard怎么操作?  谢谢 tensaix2j 和 faiko   

sourceforge是 open source project的集中营
那边你应该可以找到你要的东西。
现在那边找找看,找不到我才跟你说……
不然你的FYP将不会学到东西的

首先,你需要知道:
1) PC (host) -to- PC (remote)之间,你要怎样传送数据?
2) 你要通过怎样的方式,在remote PC“打出”在host PC的内容?所谓的virtual keyboard是怎样操作的?

最重要的是,你的s/w architecture必须要清晰。不然,你不懂你在做什么
回复

使用道具 举报

Follow Us
 楼主| 发表于 20-8-2009 02:56 PM | 显示全部楼层
原帖由 faiko 于 19-8-2009 09:46 PM 发表

sourceforge是 open source project的集中营
那边你应该可以找到你要的东西。
现在那边找找看,找不到我才跟你说……
不然你的FYP将不会学到东西的

首先,你需要知道:
1) PC (host) -to- PC ( ...


呜呜... 我不是想不劳而获,而是经过连日的搜索(也在sourceforge找了几天了),找不到我要的东东

virtual keyboard我也有找过,找了好久也没有结果

我只试过用java将2个pc 通过 tcp/ip传输data, 但是data 都是显示在java 的application 里面,所以我不清楚怎么可以直接好像keyboard 那样把字"打"在自己要的地方.

所以我一直想搞懂的是:

1.如果我用cable (usb or rs232) 接去另一台电脑(设它为B),那么B电脑怎么懂cable传过来的就是keyboard 的 data 咧?   和keybd_event()有关?

2. 应该怎么编程,才能使usb传输我要的data

希望能有一点提示,来开导我一下

[ 本帖最后由 原久美子 于 20-8-2009 03:20 PM 编辑 ]
回复

使用道具 举报

发表于 20-8-2009 07:24 PM | 显示全部楼层
你要的只是:
远程控制程式 + 模拟键盘程式
回复

使用道具 举报


ADVERTISEMENT

发表于 20-8-2009 10:29 PM | 显示全部楼层
原帖由 原久美子 于 20-8-2009 02:56 PM 发表 呜呜... 我不是想不劳而获,而是经过连日的搜索(也在sourceforge找了几天了),找不到我要的东东 virtual keyboard我也有找过,找了好久也没有结果 我只试过用java将2个pc 通过 tcp/ip传输data, 但是 ...

你找不到对的keyword来search……所以说,很多东西没有碰过钉子是学不会。学会用正确的keyword来search也是很重要

去sourceforge找Synergy吧。它跟你的构思很相似……有什么不同之处,自己再慢慢看、仔细琢磨。

先回答你的问题:
1)通过cable传送,你的B电脑需要claim access to那个传送媒介(usb, rs232, ethernet)。怎样claim access呢?这就需要写apps啦……而这个apps自然而然知道传过来的就是keyboard data咯(去参考socket是怎样运作的) keybd_event() 只是synthesize keyboard的key stroke……你没有去查它的API library啊?

2)去找USB library,高手就自己写driver 这个问题很模糊,我看你都不懂你在问什么 通常,只要跟hardware有关系的,用C/C++来写的。JAVA, C#, VB都还没有这个能力去直接access hardware registers(都是通过lib来access,速度比较慢……不过100% work

degree or diploma的FYP?
回复

使用道具 举报

 楼主| 发表于 23-8-2009 10:26 PM | 显示全部楼层
原帖由 faiko 于 20-8-2009 10:29 PM 发表

你找不到对的keyword来search……所以说,很多东西没有碰过钉子是学不会。学会用正确的keyword来search也是很重要

去sourceforge找Synergy吧。它跟你的构思很相似……有什么不同之处,自己再慢慢 ...


因为我学的东西,完全跟我的fyp没有关系...所以我很多都不清不楚 找东西也就很没有方向,我才在这里开帖子,希望大家能提供些意见的...

keybd_event()的library我有找...我真的有用心做功课的...只是想再确定一下..怕我miss了什么..

小小声说...是degree的fyp

非常谢谢哦~

[ 本帖最后由 原久美子 于 23-8-2009 10:35 PM 编辑 ]
回复

使用道具 举报

发表于 24-8-2009 01:28 AM | 显示全部楼层
原帖由 原久美子 于 23-8-2009 10:26 PM 发表


因为我学的东西,完全跟我的fyp没有关系...所以我很多都不清不楚 找东西也就很没有方向,我才在这里开帖子,希望大家能提供些意见的...

keybd_event()的library我有找...我真的有用心做功课的...只是想再确 ...

那你major什么的?

我不太懂keybd_event的api怎样被call出来……不过,synergy的working principle你需要留意咯。

我本身是用它来做我的日常事务 所以也没啥去研究它的source code。

有啥问题,当然可以提出来讨论。但是,千万不要spoon-fed 不然到社会工作——特别是technical skill requirement很高的工作,你是无法胜任的。还有,不要以为没有technical skill就可以跑management in technical field....没有人会尊重的你
回复

使用道具 举报

 楼主| 发表于 24-8-2009 06:52 PM | 显示全部楼层
我觉得,不知道别人背后努力、付出了多少,就不要批评别人咯...

不过,还是非常谢谢你们~
回复

使用道具 举报

发表于 24-8-2009 10:35 PM | 显示全部楼层
原帖由 原久美子 于 24-8-2009 06:52 PM 发表
我觉得,不知道别人背后努力、付出了多少,就不要批评别人咯...

不过,还是非常谢谢你们~

这就要看你怎样去定义“努力”了
努力的白忙一场
努力的原地踏步
努力的盲头乱冲
你认为呢?
回复

使用道具 举报

发表于 26-8-2009 03:38 PM | 显示全部楼层
ermmmm,
有点决得奇怪...
Z omok 一定要用 Keyboard Event?有特别要求?
不能用 Timer 来一个一个 Content 来 Show 出来么?
回复

使用道具 举报

发表于 26-8-2009 03:42 PM | 显示全部楼层
原帖由 eddom 于 26-8-2009 03:38 PM 发表
ermmmm,
有点决得奇怪...
Z omok 一定要用 Keyboard Event?有特别要求?
不能用 Timer 来一个一个 Content 来 Show 出来么?


你应该从了解问题学起。。
回复

使用道具 举报

发表于 26-8-2009 03:50 PM | 显示全部楼层
原帖由 yeenfei 于 26-8-2009 03:42 PM 发表


你应该从了解问题学起。。

Zo Mok 嘞?
"目标是使用c++把A 电脑上的ASCII file的内容,直接输出在B电脑上. "


要做到像有人打字, Zo Mok一定要用Keyboard Event? Timer 不能么? 因为题目很像没有讲一定要用Keyboard Event嘞~


单纯的读取 ASCII File Content, 然后 Send 去第二个 Terminal Display, 很像不能表达 Keyboard Simulator 嘞.


怎么不是Instantly Capture PC A Receive 的 Key Stroke, 然后 Instantly Send 到 PC B, 过后才来用 KeyEvent, 酱起码还可以 Simulate MultipleKeyPress Event 吧?? 比如 CTRL+R


如果只是单纯的想要 Display, Timer 已经绰绰有余的窝~
回复

使用道具 举报


ADVERTISEMENT

发表于 26-8-2009 04:08 PM | 显示全部楼层
哦哦哦哦,漏看了这句:
"应该如何将程序模拟成键盘,通过cable把字"打"在别的电脑上面呢?"
回复

使用道具 举报

发表于 26-8-2009 11:20 PM | 显示全部楼层
你要的是这个吗?
  1. import java.awt.event.KeyEvent;
  2. import java.awt.Robot;

  3. public class Key
  4. {
  5.     public static void main( String [] args ) throws Exception
  6.     {
  7.         Robot r = new Robot();

  8.         r.keyPress(KeyEvent.VK_0); // or any other key
  9.         r.keyRelease(KeyEvent.VK_0);
  10.     }
  11. }
复制代码
如果要client server, 那么就加入 Socket
回复

使用道具 举报

发表于 26-8-2009 11:22 PM | 显示全部楼层
奥, 抱歉, 没看清楚是 C++
回复

使用道具 举报

 楼主| 发表于 1-9-2009 01:51 PM | 显示全部楼层
原帖由 faiko 于 24-8-2009 10:35 PM 发表

这就要看你怎样去定义“努力”了
努力的白忙一场
努力的原地踏步
努力的盲头乱冲
你认为呢?


所以至少这样子就说明了我并不是单纯地要等别人spoon fed...

原帖由 eddom 于 26-8-2009 03:50 PM 发表

Zo Mok 嘞?
"目标是使用c++把A 电脑上的ASCII file的内容,直接输出在B电脑上. "


要做到像有人打字, Zo Mok一定要用Keyboard Event? Timer 不能么? 因为题目很像没有讲一定要用Keyboard Event嘞~


单纯的 ...


可是我project不要是要“吸取”keyboard stroke 哦~~  erm...

原帖由 onlylonly 于 26-8-2009 11:22 PM 发表
奥, 抱歉, 没看清楚是 C++

没关系,谢谢~


--------------------

我目前寻找到了usb的library, 叫libusb-win32, 但是研究了好久,找了很多资料,说它只能用在host controller... 我一直都搞不清楚这个是什么... 而且用它里面的usb_find_busses(),一直得到0而已. 我是否用错了呢? 我这个情况,是不是也算是host controller? 还是我应该写个hid?(当然我希望可以用library... )

[ 本帖最后由 原久美子 于 1-9-2009 01:53 PM 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-5-2024 01:20 PM , Processed in 0.083144 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表