日期:2014-05-20  浏览次数:20868 次

EXE间传值问题?
我做了一个项目A;在它的下面打开另一个项目B并传递一个参数 "tt ",如下:
String     tt   =   "asdfg ";
Process.Start( "C:\Documents   and   Settings\Administrator\My   Documents\Visual   Studio   Projects\test\bin\test.exe ",   "tt ");
在B中用下面的方法接收:
String     val=   Environment.GetEnvironmentVariable( "tt ");
MessageBox.Show(val   +   "123 ");
但val中接收不到值,请问应怎样修改或有什么办法?

------解决方案--------------------
tt是string argv[]里面得,你里面可以拿得到,这是启动参数
------解决方案--------------------
还可以把参数信息保存到注册表总, a写,b读。如果有数据库,还可以将参数写数据库中。
------解决方案--------------------
在启动得时候把参数给目标.
正真得exe间传值当时研究过,在windows下面一般有这样几种方法:(写文件,据库不算得)
1.dll共享段,也叫data_seg共享
2.虚拟内存
3.sendmessage(适合有窗体的)
4.DDE,微软的一套
5.COM/remoting
6.Net send(Tcp/udp等等了)
------解决方案--------------------
消息队列
------解决方案--------------------
同意
superxiaomm(小美)

lz的问题属于进程间的通信,可以去网上找找相关的方法。

------解决方案--------------------
还可以用序列化把你要传递的对象写成XML序列化文件,然后在另一个EXE中读取还原.
------解决方案--------------------
你说的这种情况我倒有个API的完整解决方案,用这种方法我已经处理完一个特别大的项目,但是现在没有时间整理,如果你能等过10多天我整理出来后给你
------解决方案--------------------
你的属于进程间的通信问题,如果是启动时获取的话你的Start传送参数然后获得是行的通的,如果不是这样的话,那就要用其他的方法了,我用的一个就是用Remoting方法,具体就是做个远程类,然后构建服务端和客户端,这样就可以进行通信了,采用读写什么东西的性能不行,而且也不能保证,MSMQ不见得没台机子都装了,TCP什么的难度比较大,呵呵,还是Remoting比较合适,简单,没几行代码就可以搞定,搞个线程监听消息就可以了.需要的话我可以提供我写的一个类.
------解决方案--------------------
lz把你的需求和主要的问题详细描述下把.
------解决方案--------------------
楼上说的对

按题目吧,楼上的第一个回答是对的。
但不符合你需求,所以,提问时最好把问题描述清楚些
免得还要去猜你的意思
------解决方案--------------------
关注
------解决方案--------------------
顶一下,学习中!
------解决方案--------------------
顶!