往timer里加for为什么会出现系统当机??
试了很多次了
重起机子也N多次。
就是找不到解决方法
代码如下
procedure TForm1.Timer1Timer(Sender: TObject);
var
i,j:integer;
dc:HDC;
begin
dc:=GetDc(findwindow('notepad',nil));
for i:=0 to 30 do
for j:=0 to 40 do
if getpixel(dc,i,j)=0 then
ShowMessage('找到了颜色');
end;

解决方案 »

  1.   

    我也不明白。会不会是因为重入了?改成这样试一试:
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
    i,j:integer;
    dc:HDC;
    begin
    Timer1.Enabled := false; // agui added
    dc:=GetDc(findwindow('notepad',nil));
    for i:=0 to 30 do
    for j:=0 to 40 do
    if getpixel(dc,i,j)=0 then
    ShowMessage('找到了颜色');Timer1.Enabled := true; // agui added
    end;
      

  2.   

    另外,你没有调用 ReleaseDC,改为这样试试:procedure TForm1.Timer1Timer(Sender: TObject);
    var
    i,j:integer;
    dc:HDC;
    begin
    dc:=GetDc(findwindow('notepad',nil));
    for i:=0 to 30 do
    for j:=0 to 40 do
    if getpixel(dc,i,j)=0 then
    ShowMessage('找到了颜色');ReleaseDC( dc );
    end;附:我这里(Win2000)不会down掉。你用的是WIN98?
      

  3.   

    我也觉得是这样,进入timer后最好先关掉enable.不然看你interval设多少了,短的话timer反复激活,一大堆showmessage出现,死机估计也是迟早的事.