VC++高手 : 请一定留意这个'打破进程边界'的问题,会的朋友一定指教下!

KuangXiang 2000-06-26 11:12:00
VC++专家们,大家好!
偶然遇到了一个比较麻烦的问题不好解决,我想到了VC++高级编程中的一个'打破进程边界'的问题,对于该话题我在这里想发表一下自己的一些粗略的观点,如果说的不对请大家原谅和及时指正:
因为在win32编程中每个进程都有自己4GB的地址空间,而且彼此地址空间独立,很难互相影响, '打破进程边界'使我们通过一些手段去向另一个进程注入dll,从而可以达到访问另一个进程地址空间或间接控制另一个进程一些行为的目的!
我现在有如下的问题请大家帮忙看下是否可以用'打破进程边界的方法'来解决,如果能的话,我该怎样做:
(1) 我有一个叫GetInfo.exe的能在windows NT平台上的ms-dos提示符下运行的程序(说白了就是dos界面程序),程序执行的时候需要一个IP地址作为参数(Getinfo 202.12.12.1),然后该程序可以在DOS窗口中显示很多信息,这里我强调的是GetInfo.exe我没有他的源代码,只有他的一份可执行文件。
(2)我有另外一个程序,这个另外的程序是我自己写的,是一个windows NT下的GUI程序,我现在这个程序中想利用我刚才提到的GetInfo.exe的输入结果来做一些事情(由于Getinfo.exe功能的实现比较复杂,所以想直接利用这个.exe文件产生的结果来做事情),
那么:我的问题就是,我怎么启动这个带参数的Getinfo.exe文件,启动后Getinfo.exe执行完毕的判断方法,以及Getinfo.exe的执行结果信息我如何取到我的GUI程序中来的方法!
由于该方法对我非常重要,所以希望有类似经验的朋友都能帮助我!不知道我上述的问题是否是一个进程边界的打破问题,还请大家指正!

...全文
305 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
KuangXiang 2000-06-26
  • 打赏
  • 举报
回复
谢谢这么多热心朋友的帮忙,各位朋友的建议我进行了一些测试,有一些疑问我又发了一个帖子,标题是: r上午提到的"打破进程边界"的问题疑问的补充![Visual C++]
请朋友们在腾出点宝贵的时间来指点一下!谢谢!
hyena 2000-06-26
  • 打赏
  • 举报
回复
最佳解决方法:
在父进程中先通过_pipe调用创建一个读写管道
然后使用dup2(PIPEWRITE_HANDLE, 1)调用将进程的标准输出重定向到管道的写端
在调用spawnl创建子进程,由于子进程继承父进程的所有
已经打开的文件句柄,所以它的标准输出仍然指向管道,
这样父进程就可以直接从管道的读出端读出子进程的标准
输出。
子进程的标准输入也同样可以重定向。

这比用重定向到临时文件好在父进程和子进程可以同时执行
并交互,父进程不必等到子进程结束就能获得子进程的输出。

具体程序可以参看MSDN中关于_pipe一节的例子。
茂奇软件 2000-06-26
  • 打赏
  • 举报
回复
you also can define the input and output
handle for the console application.
jansen zhu
ARMDEVICE 2000-06-26
  • 打赏
  • 举报
回复
用CreateProcess启动Getinfo,将输出重定向到一个文件,并启动信息设置为不显示。
你的程序读那个文件。

ARMDEVICE 2000-06-26
  • 打赏
  • 举报
回复
用CreateProcess启动Getinfo,将输出重定向到一个文件,并运行模式设置为不显示。
你的程序读那个文件。

茂奇软件 2000-06-26
  • 打赏
  • 举报
回复
wjf is all right.
you can notice you also can hide the
console window , by some parameter.
It is a standard way to interage
some application module. jansen zhu
wjf 2000-06-26
  • 打赏
  • 举报
回复
事实上不需要打破进程边界

PROCESS_INFORMATION info;
CreateProcess(..., "GetInfo.exe >c:\1.txt", ..., &info);
WaitForSingleObject(info.hProcess, INFINITE);

...
读文件c:\1.txt
wjf 2000-06-26
  • 打赏
  • 举报
回复
PROCESS_INFORMATION info;
CreateProcess(..., "GetInfo.exe >c:\1.txt", ..., &info);
WaitForSingleObject(info.hProcess, INFINITE);

...
读文件c:\1.txt

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧