function IsAppRespondig9X(dwThreadId: DWORD): Boolean;
type
TIsHungThread = function(dwThreadId: DWORD): BOOL; stdcall;
var
hUser32: THandle;
IsHungThread: TIsHungThread;
begin
Result := True;
hUser32 := GetModuleHandle('user32.dll');
if (hUser32 > 0) then
begin
@IsHungThread := GetProcAddress(hUser32, 'IsHungThre
全局对象在什么时候创建也是有讲究的,如果在调用之前尚未创建肯定会报错,那么下面通过调用函数间接调用全局对象的方法就不会有任何问题了。
var
FUserInfo: TUserInfo = nil;
function UserInfo: TUserInfo;
begin
if not Assigned(FUserInfo) then
FUserInfo := TUserInfo.Create;
Result := FUserInfo;
end;