//
        //#define SW_HIDE             0 //隐藏窗口,活动状态给令一个窗口
        //#define SW_SHOWNORMAL       1 //用原来的大小和位置显示一个窗口,同时令其进入活动状态
        //#define SW_NORMAL           1
        //#define SW_SHOWMINIMIZED    2
        //#define SW_SHOWMAXIMIZED    3
        //#define SW_MAXIMIZE         3
        //#define SW_SHOWNOACTIVATE   4 //用最近的大小和位置显示一个窗口,同时不改变活动窗口
        //#define SW_SHOW             5 //用当前的大小和位置显示一个窗口,同时令其进入活动状态
        //#define SW_MINIMIZE         6 //最小化窗口,活动状态给令一个窗口
        //#define SW_SHOWMINNOACTIVE  7 //最小化一个窗口,同时不改变活动窗口
        //#define SW_SHOWNA           8 //用当前的大小和位置显示一个窗口,不改变活动窗口
        //#define SW_RESTORE          9 //与 SW_SHOWNORMAL  1 相同
        //#define SW_SHOWDEFAULT      10
        //#define SW_FORCEMINIMIZE    11
        //#define SW_MAX              11        [DllImport("kernel32.dll")]
        public static extern int WinExec(string exeName, int operType);private void button4_Click(object sender, EventArgs e)
        {
              try
            {                WinExec(@"G:\游戏\盛大网络\传奇世界\Data\woool.dat", 0);//处理程序                          }
            catch (Exception ey)
            {
                MessageBox.Show(ey.Message);
            }
         }运行起来的程序显示出错(应用程序异常位置为0X什么的)
而用openFileDialog组件获取路径运行的话没有任何问题
直接指定绝对路径无法运行

解决方案 »

  1.   

    WinExec(@"C:\WINDOWS\system32\cmd.exe",5);
    正常,用其他方式打开dat
      

  2.   

    用什么方法呢
    Process只能打开EXE等文件不能打开DAT文件
    WinExec使用  如果路径是从openFileDialog组件获取的 只能打开运行没有问题
      

  3.   

    你的dat文件是和什么关联的?如果你在资源管理器理双击这个文件会怎么样?
      

  4.   

    这个文件是传奇世界执行文件
    我用openFileDialog组件获取路径和文件名能执行起来没有任何问题
    但是直接指定路径的话
    执行就出问题 
      

  5.   

    这个文件更名为.exe文件可以执行
    但是我现在不想更改文件名  
    WinExec(textBox1.Text, 0);
    textBox1.Text内容是openFileDialog组件获取路径和文件名
    这样能执行 没有任何问题
    但是我用WinExec(@"G:\游戏\盛大网络\传奇世界\Data\woool.dat", 0);
    这样的话就执行起来以后提示“应用程序发生异常unknow software exception (0xc00000d),位置为0x006c69b6
    点击确定就关闭了  无法运行
      

  6.   

    private void button4_Click(object sender, EventArgs e)
            {
                  try
                {
                    WinExec(textBox1.Text, 0);
                }
                catch (Exception ey)
                {
                    MessageBox.Show(ey.Message);
                }
             }
    private void button5_Click(object sender, EventArgs e)
            {
                openFileDialog1.Filter = "(*.dat)|*.dat";
                openFileDialog1.ShowDialog();
                textBox1.Text = openFileDialog1.FileName;
            }
    这样 点击button5给tBox1.Text获取G:\游戏\盛大网络\传奇世界\Data\woool.dat这个值执行没有任何问题
    但是如果我将WinExec(textBox1.Text, 0);换成WinExec(@"G:\游戏\盛大网络\传奇世界\Data\woool.dat", 0);
    执行就提示应用程序发生异常unknow software exception (0xc00000d),位置为0x006c69b6 
    点击确定就关闭了  无法运行
      

  7.   

    估计是程序当前目录导致的问题.每一个进程都有当前目录这个概念,如果没有特别指定,一开始当前目录就是C#的EXE程序所在的目录,当前目录在程序运行过程中可能因某种行为而变化,例如OpenFileDialog对话框默认的行为就是当你选择了文件,就会把当前目录变更成你选择文件的所在的目录;你这个游戏应该需要在当前目录下读取其他的文件才能执行,如果直接
    WinExec(@"G:\游戏\盛大网络\传奇世界\Data\woool.dat", 0); 当前目录还是你这个C#程序所在的目录,所以它找不到要找的文件.如果你把对话框的RestoreDirectory 属性设置为True,那么他就不会改变当前目录,假如这样改之后出同样的错,证明就是这原因了
      

  8.   

    怎么问个问题也这么难呢  知道的高手还请指教一下啊
    请问 chensxn 如何解决此问题啊  
      

  9.   

    运行之前加上这句试试:System.IO.Directory.SetCurrentDirectory(@"G:\游戏\盛大网络\传奇世界\Data\");
      

  10.   

    最好是利用Process.Start(ProcessStartInfo)方法,将你的dat文件作为参数传入。
    如果要用WinExec,则需要运行前调用SetCurrentDirectory设置当前目录
      

  11.   

    3QY   谢谢
    解决了  请问您有QQ吗  我想加你  好向您学习
      

  12.   

    最好是利用Process.Start(ProcessStartInfo)方法,将你的dat文件作为参数传入
    如何作为参数传入
      

  13.   

    看了一下帖子  感觉本来不想回   但发现楼主的问题貌似提出的有问题   你要打开的是dat文件   还是bat文件,dat文件时数据文件 ,无法向应用程序那样打开吧?   bat是批处理文件 保存了一些脚本信息。可以用你的那种方式运行  请自行判断一下吧,希望可以帮助你