WinExec(pChar('net use \\192.168.1.1 ""/user:"guest"'),SW_SHOW);
之后就跳出一个dos窗口,怎么发一个回车给这个窗口?
之后就跳出一个dos窗口,怎么发一个回车给这个窗口?
解决方案 »
- delphi 修改导入表实现DLL注入
- idudpsever端口被占用后,怎么写自动+1
- ClientDataSet.DataRequest()多个参数的问题???
- 网络文件传输
- 为何IdTCPServer/IdTCPClient.把IP 设为127.0.0.1 能正常传递数据。但在我把它放不同IP的两台电脑上时却怎么设置都不行。
- 高分求一实际项目中的算法,急,
- 很菜的问题,快来啊
- 我的第一个项目完成了,散分!
- 用Delphi做的系统向B/S模式上的移植问题(相信很多人面临的),谁有好的方案?
- 如何使用pagecontrol控件?
- 如何实现对一个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的使用,管道与输入重定向(你的问题看来不用重定向输出)
这些资料网上都有的.