CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

CreateProcess函数为什么没有执行呢!!!

楼主oyxiaoyu0(小雨仔)2003-09-03 13:51:31 在 Delphi / Windows SDK/API 提问

var   StartupInfo:TStartupInfo;  
          ProcessInfo:TProcessInformation;  
          commandLine:   string;  
  begin  
      commandLine   :=   'mode   com1   9600,n,8,1';  
      FillChar(StartupInfo,Sizeof(StartupInfo),#0);  
      StartupInfo.cb   :=   Sizeof(StartupInfo);  
      StartupInfo.dwFlags   :=   STARTF_USESHOWWINDOW;  
      StartupInfo.wShowWindow   :=   1;  
      StartupInfo.lpReserved   :=   nil;  
      StartupInfo.lpReserved2   :=   nil;  
   
      CreateProcess(nil,  
                                  commandLine,  
                                  nil,  
                                  nil,  
                                  false,  
                                  0,  
                                  nil,  
                                  nil,  
                                  StartupInfo,  
                                  ProcessInfo);  
  end;  
   
  想执行一个DOS程序,但好象没有什么反映呢,连个COPY命令都不好使  
  不太会用这个函数 问题点数:20、回复次数:13Top

1 楼oyxiaoyu0(小雨仔)回复于 2003-09-03 13:56:47 得分 0

我用WinExec(commandLine,SW_SHOW)怎么好象都不好使呢?这是为什么呢Top

2 楼oyxiaoyu0(小雨仔)回复于 2003-09-03 14:49:33 得分 0

把commandLine换成pchar(commandLine)也不好使  
  并且commandLine   :=   'mode   com1   9600,n,8,1';改成  
  commandLine   :=   'c;\\winnt\\system32\\mode.exe   com1   9600,n,8,1';  
  也不行!!!我算是没折了Top

3 楼oyxiaoyu0(小雨仔)回复于 2003-09-03 16:15:14 得分 0

不会吧!!怎么一个人也没有呢!Top

4 楼bengan(bin)回复于 2003-09-03 17:04:45 得分 0

我想问一下TStartupInfo,TProcessInformation是个什么控件?我在帮助里没有找到他们的解释,希望楼主介绍一下。最好提供相关的介绍文章。新手上路不要见笑!Top

5 楼oyxiaoyu0(小雨仔)回复于 2003-09-03 17:20:35 得分 0

是DEPHI中封装的STARTUPINFO这个结构体  
  见原码得     {$EXTERNALSYM   _STARTUPINFOA}  
      TStartupInfo   =   _STARTUPINFOA;  
      STARTUPINFO   =   _STARTUPINFOA;  
   
  StartupInfo:TStartupInfo;等同于C中的StartupInfo:STARTUPINFO;Top

6 楼renzy205(ren)回复于 2003-09-03 17:25:22 得分 0

做一个bat文件,内容是mode   com1   9600,n,8,1  
  commandline="test.bat";  
  应该就可以了  
  Top

7 楼ouyang75928(Thinking in Pascal)回复于 2003-09-04 14:45:44 得分 20

procedure   TForm1.Button1Click(Sender:   TObject);  
  var   StartupInfo:TStartupInfo;  
          ProcessInfo:TProcessInformation;  
          commandLine:   string;  
  begin  
      commandLine   :=   'Rundll32.exe   Shell32.dll,ShellExec_RunDLL   mode   com1   9600,n,8,1';  
      FillChar(StartupInfo,Sizeof(StartupInfo),#0);  
      StartupInfo.cb   :=   Sizeof(StartupInfo);  
      StartupInfo.dwFlags   :=   STARTF_USESHOWWINDOW;  
      StartupInfo.wShowWindow   :=   1;  
      StartupInfo.lpReserved   :=   nil;  
      StartupInfo.lpReserved2   :=   nil;  
   
      if   CreateProcess(nil,  
                                  PChar(commandLine),  
                                  nil,  
                                  nil,  
                                  false,  
                                  0,  
                                  nil,  
                                  nil,  
                                  StartupInfo,  
                                  ProcessInfo)   =   true   then  
          showmessage('ok');  
  end;  
  以上只能在winnt以上系统下才能使用。:)Top

8 楼wxjh(农民)回复于 2003-09-04 16:30:54 得分 0

DOS   程序用  
  WINEXEC就可以了Top

9 楼oyxiaoyu0(小雨仔)回复于 2003-09-08 09:02:00 得分 0

用WINEXEC根本就起不来的,我已经试过了Top

10 楼oyxiaoyu0(小雨仔)回复于 2003-09-08 09:15:48 得分 0

TO     ouyang75928(Thinking   in   Pascal)   (   )    
  谢谢了,NT下运行DOS命令是否都要加上Rundll32.exe,   shell32.exe,   shellexec_rundll呢?Top

11 楼oyxiaoyu0(小雨仔)回复于 2003-09-08 09:18:52 得分 0

TO     ouyang75928(Thinking   in   Pascal)   (   )      
  那为什么象COPY那种的命令则可以直接运行呢?而MODE这个也是exe的文件则必须要加上外壳才好使呢Top

12 楼ouyang75928(Thinking in Pascal)回复于 2003-09-08 10:47:39 得分 0

更确切的说Rundll32.exe,   shell32.exe,   shellexec_rundll是模拟windows下面的run命令。  
  mode   com1   9600,n,8,1这些都是参数来的,copy是函数。Top

13 楼oyxiaoyu0(小雨仔)回复于 2003-09-08 12:35:40 得分 0

O了~~~楼上的也姓欧阳吗?  
  一会给分,先聊聊:)Top

14 楼oyxiaoyu0(小雨仔)回复于 2003-09-08 12:36:47 得分 0

http://expert.csdn.net/Expert/topic/2234/2234728.xml?temp=.7062494  
  拜托也帮我看看这个帖子~~是DEPHI下的浮点如何比较?Top

相关问题

  • 为什么函数不执行?
  • 为什么该函数没有执行?
  • 函数为什么不执行?
  • 这段代码为什么不能执行(调用ClearCommError函数)
  • 100分奉上,关于asp中函数为什么不执行。
  • 调用函数指针为什么执行出错了?
  • Page_Load()函数为什么有时候不执行?
  • 为什么调用的API函数没有被执行???
  • paint(Graphics g)函数为什么自动会执行啊?
  • 为什么我的SEH处理函数执行了两次?

关键词

  • 函数
  • shell
  • startupinfo
  • commandline
  • nil
  • tstartupinfo
  • shellexec
  • startupinfoa
  • createprocess
  • tprocessinformation

得分解答快速导航

  • 帖主:oyxiaoyu0
  • ouyang75928

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo