各位论坛上的朋友,想请教一下,小弟在DELPHI的程序里面调用以下命令
for i:=1 to 200 do
begin
ShellExecute(Handle, nil, 'cmd.exe', pchar('/c md c:\目录'), nil, SW_HIDE);
end;
但发现这时CPU占有率达到百分之百,而且执行时间差不多要一分钟左右,有没有办法,在循环调用ShellExecute的时候,可以减低程序对CPU的占用率和减少程序的执行时间,又或者有没有另外一种方式来执行DOS的命令,达到对应的效果,请各位朋友赐教,谢谢!!!
for i:=1 to 200 do
begin
ShellExecute(Handle, nil, 'cmd.exe', pchar('/c md c:\目录'), nil, SW_HIDE);
end;
但发现这时CPU占有率达到百分之百,而且执行时间差不多要一分钟左右,有没有办法,在循环调用ShellExecute的时候,可以减低程序对CPU的占用率和减少程序的执行时间,又或者有没有另外一种方式来执行DOS的命令,达到对应的效果,请各位朋友赐教,谢谢!!!
解决方案 »
- 关于MYSQL修改字符类型字段的问题
- 没有找到dpl,找不到指定的模块
- 谁教我使用IHTMLDocument2::onmousedown
- 请给一个NMFTP1.FTPDirectoryList.ParseLine用法的例子
- 又一颗DELPHI的新星冉冉升起,脱掉五条裤衩,终于升星啦,爽啊,特散200分,普天同庆,
- 分布式数据库的^^^^^^^^^^^^^^^^
- (年轻问题)如何与系统自动设置数据库?
- OLE类型的数据在报表中如何显示出来
- 请看如下问题,搞得我睡不着 吃不好,重谢,卖血了
- 要聊不如QQ见。
- 动态创建的控件如何对其做某些事件?
- Delphi+ADO通过sql查询访问Oracle 817数据的问题
至於減少CPU的占用率,我想衹能是使用線程的sleep方法,因為文件夾操作,本身是系統內核在操作。你可以把這段代碼創建一個線程執行,每執行一次循環,線程睡眠sleep一斷時間,當然這樣一來,實際上運行的時間會更長一些。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI;type
TMyThread=class(TThread)
protected
procedure Execute;override;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
thread:TMyThread;
begin
thread:=TMyThread.Create(true);
thread.FreeOnTerminate:=true;
thread.Resume;
end;{ TMyThread }procedure TMyThread.Execute;
var
i:integer;
begin
inherited;
while not Terminated do
begin
for i:=1 to 200 do
begin
//創建目錄,建議不要使用ShellExecute調用cmd.exe
CreateDirectory('目錄名',nil);
//ShellExecute(Handle, nil, 'cmd.exe ', pchar( '/c md c:\目? '), nil, SW_HIDE);
Sleep(10); //線程睡眠10秒
end;
end;
end;end.