在回调函数中使用with结构导致界面无响应
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) lst1: TListBox; btn1: TButton; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; function GetTitle(Hwnd: THandle; Param: Pointer): Boolean; stdcall;var Form1: TForm1;implementation{$R *.dfm} function GetTitle(Hwnd: THandle; Param: Pointer): Boolean; stdcall; var Text: String; begin SetLength(Text, 100); GetWindowText(Hwnd, PChar(Text), 100); Text := PChar(Text); if Text <> '' then begin //=============================问题代码===================================== //用With结构会导致界面死掉 with Form1.lst1.Items do begin Add(IntToStr(Hwnd) + ':' + Text); end; //=============================问题代码===================================== //正常 Form1.lst1.Items.Add(IntToStr(Hwnd) + ':' + Text); end; Result := True;end;procedure TForm1.btn1Click(Sender: TObject);var EWProc: TFNWndEnumProc;begin EWProc := @GetTitle; EnumWindows (EWProc, 0);end;end.