1.引用别的程序的units
2.用messagebox(),使用的系统资源比较少
3.reg:Tregister
  reg:=Tregister.create(self);
  reg:=....
  open key()
  ....
  closekey()
   .....

解决方案 »

  1.   

    1.winexec()  shellexecute()
    2。重定向到一个临时文本文件中 然后 打开文本文件  就可以了
    3。楼上说的没错
      

  2.   

    接受xjspa的第三点
    接受lx_king的第一点另外我不想重定向到文本,这个我会。我要直接能够接收别的程序的输出信息!另外上面三点问题有详细源码的给高分!!
      

  3.   

    创建一个命名管道来取代stdout试试。
      

  4.   

    我自己找了一个:
    http://community.borland.com/article/0,1410,10387,00.html谁有Delphi的例子呢??谁来解释解释CreatePipe的用法!
      

  5.   

    //下面一些变量没具体去声明,不过结合参数提示应该很容易得知类型
    //保存stdout
    hSaveStdout := GetStdHandle(STD_OUTPUT_HANDLE);
    //创建一个匿名管道(将子进程的Output重定向到父进程的Input里)
    CreatePipe(ParentInput, ChildOutput, @SecurityAttributes, SizeOf(SecurityAttributes));
    //将标准输出替换为ChildOutput
    SetStdHandle(STD_OUTPUT_HANDLE, ChildOutput);
    //创建一个不可被继承的Input副本
    hProcess := GetCurrentProcess;
    DuplicateHandle(hProcess, ParentInput, FProcess, @DuplicateInput, 0, False, DUPLICATE_SAME_ACCESS);
    //将原来的Input关闭
    CloseHandle(ParentInput);
    //创建一个子进程(例如masm.exe xxx),将其中的继承属性设为真
    CreateProcess(...);
    //恢复stdout
    SetStdHandle(STD_OUTPUT_HANDLE, hSaveStdout);
    CloseHandle(ChildOutput);
    //从管道中(即ParentInput的副本)读取数据
    ReadFile(DuplicateInput, Buffer, SizeOf(Buffer), TransSize, nil); 
      

  6.   

    Thank you all, westfly xjspa lx_king 结帖了。
    以后有问题再问大家。