|
![]() | 作者: zhxiaoyu [zhxiaoyu]
![]() |
登录 |
我利用函数system来运行一些windows系统的命令, 例如: system("tree C:\\ >> aa.txt"); system("net send xx.xx.xx.xx MMMMMMM"); 可以正常运行,但是会显示控制台的黑框。 有没有办法消除黑框? 如果使用WinExec等API函数, 则不能正常运行, 这是为什么? 难道系统命令不是程序吗? tree也是windows目录下的一个程序啊。 希望哪位大虾能指点一下。 谢谢。 |
地主 发表时间: 06/04 20:01 |
![]() | 回复: xiean [xiean] ![]() |
登录 |
--------------- 如果使用WinExec等API函数, 则不能正常运行, --------------- 不能正常运行指的什么? |
B1层 发表时间: 06/06 22:21 |
![]() | 回复: zhxiaoyu [zhxiaoyu] ![]() |
登录 |
就是不能运行, 应该是因为tree.com是DOS程序的缘故吧。 注意看下一层。 |
B2层 发表时间: 06/07 18:57 |
![]() | 回复: zhxiaoyu [zhxiaoyu] ![]() |
登录 |
偶终于搞出一套办法来了, 很土,但非常实用。 这里拿出来共享吧,希望以后有兄弟能用的着。 #include <windows.h> /*在windows下运行DOS程序不带黑框*/ /*不仅是.exe,.com,连.bat也可以准确运行*/ //调试环境win2000Pro. VC6 //如果在95,98下则cmd.exe的名字可能要稍微改一下 //在最简单的SDK程序中运行就可以了 // void LoadExtApp(char *sCmdLine){ WinExec(sCmdLine, SW_HIDE); } int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { LoadExtApp("cmd /c tree C:\\ >> aa.txt"); return 0 ; } //下面,我简单介绍以下可能的原理: //1、WINDOWS2000运行DOS程序应该是通过CMD.EXE这个程序 //2、你用PE文件资源分析工具稍微作个分析,就可以发现 // cmd.exe自己却是个不折不扣的WIN32的PE文件!! //3、我们调用WinExec()不能执行DOS程序,但却可以执行CMD.EXE这个WIN32的程序 //4、其实,只要设定CMD.EXE运行的方式,则自然可以随意定义了是否出现窗口了 // 黑框其实就是cmd.exe的窗口,我们把它隐藏掉(SW_HIDE),自然就没黑框了。 |
B3层 发表时间: 06/07 18:59 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号