CreateProcess函数为什么没有执行呢!!!
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




