简单进程问题求助

页面上有两个按钮 

btnCreateProcess,用于创建一个打开ie的进程

Process csdn= Process.Start("IExplore.exe", "www.csdn.net");

btnGetProcess

我想获取 btnCreateProcess 创建的这个进程,这代码什么写?

作者: mydear303   发布时间: 2011-06-15

btnCreateProcess.Handle

作者: bdmh   发布时间: 2011-06-15

如果声明一个全局变量存取该进程ID
int ID;

btnCreateProcess按钮事件下:

Process csdn= Process.Start("IExplore.exe", "www.csdn.net");
ID=csdn.Id

btnGetProcess 按钮事件下:
Process csdn= Process.GetProcessById(ID);
会报错:
ID为 ... 的进程当前未运行

我应该啥改咧?求高手教教,谢谢!!!

作者: mydear303   发布时间: 2011-06-15

我来学习。。。

作者: andy572633   发布时间: 2011-06-15

引用 1 楼 bdmh 的回复:

btnCreateProcess.Handle


刚接触,不是很明白?

应该是我书写得不好 btnCreateProcess 只是一个按钮,我应该在该按钮事件下写什么样的代码咧?

作者: mydear303   发布时间: 2011-06-15

来人啊,救火啦。。。。。。

作者: mydear303   发布时间: 2011-06-15

返回值csdn 不是进程吗

作者: xpcxpy   发布时间: 2011-06-15

引用 6 楼 xpcxpy 的回复:

返回值csdn 不是进程吗

不行,我试过了

作者: mydear303   发布时间: 2011-06-15

C# code

        int id;
        private void button1_Click(object sender, EventArgs e)
        {
            Process csdn = Process.Start("IExplore.exe", "www.csdn.net");
            id = csdn.Id;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show((Process.GetProcessById(id)).ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }


我这完全没有错

作者: xpcxpy   发布时间: 2011-06-15

貌似是知道原因了,Process.Start()方法会“重用了现有进程”,如果事先已经打开了一个iexplorer的话,就会报错

msdn的描述是:
返回值
类型:System.Diagnostics..::.Process

与该进程关联的新的 Process 组件,或者如果没有启动进程资源(例如,如果重用了现有进程),则为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。

作者: xpcxpy   发布时间: 2011-06-15

引用 9 楼 xpcxpy 的回复:

貌似是知道原因了,Process.Start()方法会“重用了现有进程”,如果事先已经打开了一个iexplorer的话,就会报错

msdn的描述是:
返回值
类型:System.Diagnostics..::.Process

与该进程关联的新的 Process 组件,或者如果没有启动进程资源(例如,如果重用了现有进程),则为 nullNothingnullptrnull 引用(在……


谢谢关注!!

那是不是说我想获取该进程只能通过找到"explorer.exe"进程来确定?

那如果我只是想关闭由按钮“btnCreateProcess”打开的IE什么办?

作者: mydear303   发布时间: 2011-06-16

NO 有人来帮帮我咧

作者: mydear303   发布时间: 2011-06-16

Process csdn = Process.Start("IExplore.exe", "www.csdn.net");
  csdn.WaitForInputIdle();
  int id = csdn.Id;

作者: zanfeng   发布时间: 2011-06-16

引用 12 楼 zanfeng 的回复:

Process csdn = Process.Start("IExplore.exe", "www.csdn.net");
csdn.WaitForInputIdle();
int id = csdn.Id;


如果是还未打开任何一个IE的话是对的,但只要执行前电脑已打开一个IE就会报错

像 9楼 说的一样

不过感谢你的关注!!

作者: mydear303   发布时间: 2011-06-16

help help me

作者: mydear303   发布时间: 2011-06-16