WinExec(pChar('net use \\192.168.1.1 ""/user:"guest"'),SW_SHOW);
之后就跳出一个dos窗口,怎么发一个回车给这个窗口?
之后就跳出一个dos窗口,怎么发一个回车给这个窗口?
解决方案 »
- 有一些列坐标点xyz的值,已经存入数据库中,现在想在数据库中读出来,然后根据点的坐标,勾勒出一个形状来,发现速度很慢
- BDE访问DB2时出错。数据库连接正确,但一点TTable表的表名下拉时就报Access Violation错误。
- 使用TCHART组件遇到的问题
- 广州思浪资讯科技公司--招DELPHI程序员
- 我会做一些简单的ADO之类的小系统,可以找到工作吗?
- 如何用Delphi打开一个HTML文件,打开后,没有菜单项,工具栏,地址拦,并且能够传入参数?
- 请教高手TXMLDocument的问题
- 如何编程实现“判断一个程序是用的什么编译器”
- 关于在sqlserver 2000的image字段里面存储jpg图象的问题
- 怎样使quickrep强制分页,详细内容在里面
- 如何实现对一个XML文件的遍历
- Delphi 中怎样用MD5加密
不是我不想說, 我曾想實現可在程序與Console交互, 但沒完成, 第一次比較簡單, 後來就無法通訊!!!
行不行,我没试。我以前用的是net send 命令AnsiString s="net send ";
s=s+Trim(ComboBox1->Text)+" ";
s=s+Memo1->Text;
WinExec(s.c_str(),SW_HIDE);
若想避免复杂的VxD编程,只能从DOS程序的输入缓冲区下手,因为一般的DOS程序都是直接或间接地读取键盘缓冲区。最常见的办法是利用DOS窗口的Paste功能,即选择DOS窗口的系统菜单,然后选择Edit,再选择Paste。这样,Windows将系统剪贴板上的内容输入DOS程序的键盘缓冲区。我们以VB程序为例说明这一过程。
Shell "f:\tc\sample.exe", 1
Clipboard.SetText "f:\tc\data" + Chr(13)
AppActivate "sample.exe"
SendKeys "% ep", True ‘ 激活Paste功能
AppActivate "Project1 - Microsoft Visual Basic [run]"
这里的SendKeys是模拟键盘输入,Delphi和C++可以使用Journal Playback钩子函数实现。这个VB程序调用sample.exe,然后利用粘贴功能输入路径和回车,DOS程序开始工作。我曾经利用这一程序来调用一个DOS下的计算程序,输入路径后,DOS程序将计算结果存盘,然后Windows程序再进行进一步地处理。但是这一过程,最好是让DOS程序显示,但不需用户干预。如果把DOS程序最小化,Sendkeys不容易成功。如果一定要最小化显示,也可以编写一个DOS程序,让该程序向键盘缓冲区写入键码,然后由这个DOS程序调用你想控制的DOS程序,这样可能运行得更稳定一些。但填充键盘缓冲区的这种方法对DOS程序有要求:
一、DOS程序不能清除键盘缓冲区。有些DOS程序在一次输入完成之后,进行下一次输入之前会自动清除键盘缓冲区,以避免误操作,但这会使我们的程序进行不下去。
二、DOS程序没有按任意键终止程序运行的功能。有些DOS程序,如HD-COPY在复制磁盘的过程中一旦用户按任何一个键就终止运行。
三、DOS程序不能使用Ctrl、Atl等组合键。
四、DOS程序的操作步骤不能太多。因为键盘缓冲区的大小是有限的。
总的来说,在Windows程序中控制DOS程序程序并非不可能,但这很大程度上要看DOS程序的工作方式。不过,以我的经验,只要可能最好把DOS程序改写为Windows程序,这才是最好的办法。
CreatePipe创建Pipe连接Console
DuplicateHandle复制IO的Handle
MsgWaitForMultipleObjects等待进程结束
WriteFile向Pipe写数据,就是向Console输入了
ReadFile读Pipe数据,就是对Console的输出做起来也不算太复杂的,Tips都给了,剩下的问题就不大了,主要是VC的版本多,MSDN肯定有的
在控制台上运行'net use \\192.168.1.1 ""/user:"guest"'之后,就会跳出一个dos窗口,我要手工去按一下回车,那个窗口才不见而且上面那个语句才会执行.所以必须想发一个回车给那个dos窗口.
上面很多人都看得懂,只是他们不愿意公开技术或者还不知道怎么解决.如果我不显示那个dos窗口的话,也就不用发回车了,但是那个语句就不会起作用,你明白了吗?
你也许要动手试试,才知道怎么回事.这个问题很多人也碰过的,没碰过的人是理解不了的.
谢谢你的热心帮忙.lucyruth(自由人) ,你很聪明吧,连问题都没搞明白."这么一个简单的功能完全可以换另外一个语句来实现"亏你说得出来,不懂别装懂.你要真有本事,你就把问题理解清楚吧,理解清楚了你再告诉大家你这个语句怎么写.
lucyruth(自由人),是啊,不跳出了,你真懂事,几岁了?
我不知道你想要得到一个什么样的结果。
首先,我对这句执行语句的理解是连同一个另外一台机子。
其次,我在我的机子上试过了,dos窗口一闪而过,就可以连同另外一台机子。
最后,这样的结果,可以用api函数实现。
希望你把你要实现的所有情况说一下,看是不是像你说得那样,只能用这条语句来实现。
或者还有其他方法。
这样就避免了大家还要猜想你到底想要做什么。
CreateProcess的使用,管道与输入重定向(你的问题看来不用重定向输出)
这些资料网上都有的.