哼哼,这儿有谁敢自称高手?看看歪就歪狰狞的面孔!(300分)

  • 主题发起人 主题发起人 歪就歪
  • 开始时间 开始时间

歪就歪

Unregistered / Unconfirmed
GUEST, unregistred user!
1000分求解:<br><br>第一步:用AllocConsole启动控制台(CONSOLE)<br>第二步:用CreateProcess运行一个DOS程序<br>第三步:用WriteConsoleInput向该DOS程序输出按键。<br><br>以上三步目前都已经能运行,但问题是,当DOS程序是简单的READLN是,可以接收<br>到WINDOWS程序通过WriteConsoleInput发出来的按键消息,但,当DOS程序是<br>比如:c:/windows/command/edit.com一类的程序时,WriteConsoleInput虽然<br>返回成功的值,但DOS程序似乎没有接到按键。<br><br>想做这个目的是,要把DOS程序的输入、输出转到WINDOW的GUI界面里。要求是:<br>在GUI上显示DOS程序在CONSOLE上的输出(CONSOLE自身是HIDE),并接受来自<br>WINDOWS的GUI的按键(包括组合按键)。<br><br>谁是高手?能给出代码并符合要求者,1000元(出再高分也没意义了,99.99%<br>的可能性是连这300分都白出了)
 
同意你的观点
 
因为分多,所以进来看看。<br>下次试着用少于100分来提问题。
 
俺赶紧练功去。<br>BTW:这个问题几年内有效?
 
1. 如果是自己写的程序, 那么改一改啦. 别偷懒. ^_*<br><br>2. 如果是别人写的程序, 而且运行在Windows 95/98下, 可以试试看向DOS窗口paste的<br>方法来实现输入, 输出可以通过重定向写到一个文件中, 不过看上去好象你是想要控制<br>edit.com, 那就直接保存成文件就是了.<br><br>3. 如果是别人写的程序, 而且运行在Windows NT下, 那么建议你去找个相同功能的控件,<br>或者看看有没有命令行就能解决该问题的方法.<br><br>4. 不知道你想运行的是什么程序, 看看能不能有别的方法绕过去?
 
Iknow:<br>都不是什么好主意!<br>1. Dos程序不是我编的,用于控制设备,不适合全改成READLN的输入方式<br><br>2. 不是控制EDIT.com,而是控制一个类似的、有菜单、有选择项的DOS程序,<br>所以关心的不是PASTE入一段STRING,而是接受WINDOW发来的按键消息<br><br>3. 控件也是人编的,别人能编出实现这功能的控件,为什么咱们就做不出来?<br>再说,你见到哪个控件能干这活儿?<br><br>4. 绕不过去了<br>
 
果然狰狞!!
 
呵呵,286时代我写过这样的dos程序,当时考虑运行效率,键盘管理是自己做的,<br>跟dos无关,也就是说无法和windows兼容,这你是没办法的,<br>WriteConsoleInput只是转译系统消息而已。<br>看来你的分数最后还得自己收回去。
 
只能出出主意. 没工夫帮你试<br>试试SetStdHandle重定向你的Console的标准输入输出缓冲区. 然后就能够控制它的输入输出了.
 
向STD窗口postmessage键盘总可以了吧
 
TO ANOTHER_EYES:<br><br>呵呵,非常感谢高手帮忙,不过,请不要说自己没时间,我看你呀,搞图像也许是个<br>高手了,但这个未必能作的出来。<br><br>我的方法几乎就是你所说的,并且能够向简单的DOS程序输出键盘。问题是,它不能<br>向EDIT之类(和其他类似有菜单的)程序输出。<br><br>TO NETWIND:<br>POSTMESSAGE和SENDERMESSAGE都是把消息发到CONSOLE窗口,而不是CONSOLE的输入缓冲<br>区。如果用KEY_EVENT,却要有CONSOLE窗口显示,而且ON TOP,才能工作。不符合要求。<br><br>IEE:<br>不太对头吧,无论用什么键盘管理,最终都是到DOS中断上。<br><br>各位高手,别光出注意啊,1000分虽然不入各位的眼,但写几行代码试试,才能知道<br>水深水浅。<br><br>哼哼__
 
我也哼...<br>&nbsp; &nbsp;哼....哼...
 
我给你一个建议吧。<br>&nbsp; 考虑一下,问题得不到解决的实质原因就是在Wendows和你原来的DOS应用程序之间无法<br>建立有效的通讯,所以我的建议是:<br>&nbsp; 另外写一个DOS键盘中断管理程序(INT16,可以是一个外壳程序也可以是一个TSR),这个<br>程序与你原来的DOS程序在同一个进程空间运行,并接管键盘中断,而且,这个程序是你自<br>己写的,可以任何方式与你的Windows程序建立通讯。<br>&nbsp; OK?<br>
 
好象是见者有分<br>报个到先
 
老歪,<br><br>从理论上讲,没有作不到的事情;从技术难度上讲,还不如重新写这个程序来的经济.
 
龙丹:谢谢,TSR截取了键盘中断,我那DOS程序怎么能得到它?虽是一种“换一个<br>思路”的办法,但不合适。<br><br>ZWHC:谢谢,如果没有你的高见+代码,肯定没有你的分。<br><br>老屯:这个DOS程序从1985年写到1992年,我实在是没兴趣改它了。<br><br><br>INTERNET网上,关于CONSOLE的控件有几个,但似乎都做的不怎么样。我现在<br>开始相信:要么这儿没高手,要么就是这根本就做不出来。<br><br>哼!
 
世上无难事,只怕有心人,好好干吧
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部