This patch to Delphi 6.02's Controls.pas fixes an AV issue with
combo boxes and Outlook Express; see:
http://groups.google.com/group/borland.public.delphi.vcl.components.using/browse_thread/thread/e012cea3ea1d258b
Delphi 2-5 have the same problem, but need a slightly different patch --
see VCL-Controls-D2D5-patch.txt.
Delphi 7 and later already incorporate an equivalent fix.
After applying the changes, recompile Controls.pas from the command
line as follows:
> c:\delphi\bin\dcc32 -$D- -$L- Controls.pas
> move Controls.dcu c:\delphi\lib
--- Controls.pas.orig Fri Feb 15 14:02:00 2002
+++ Controls.pas Tue Mar 19 21:04:58 2002
@@ -1743,14 +1743,20 @@
{ The global atom table is trashed when the user logs off. The extra test
below protects UI interactive services after the user logs off. }
function FindControl(Handle: HWnd): TWinControl;
+var
+ PID: DWORD;
begin
Result := nil;
if (Handle <> 0) then
begin
- if GlobalFindAtom(PChar(ControlAtomString)) = ControlAtom then
- Result := Pointer(GetProp(Handle, MakeIntAtom(ControlAtom)))
- else
- Result := ObjectFromHWnd(Handle);
+ if (GetWindowThreadProcessId(Handle, @PID) <> 0) and
+ (PID = GetCurrentProcessId) then
+ begin
+ if GlobalFindAtom(PChar(ControlAtomString)) = ControlAtom then
+ Result := Pointer(GetProp(Handle, MakeIntAtom(ControlAtom)))
+ else
+ Result := ObjectFromHWnd(Handle);
+ end;
end;
end;
@@ -2448,14 +2454,20 @@
// See comments for FindControl about global atom stability in service apps.
function IsDelphiHandle(Handle: HWND): Boolean;
+var
+ PID: DWORD;
begin
Result := False;
if Handle <> 0 then
begin
- if GlobalFindAtom(PChar(WindowAtomString)) = WindowAtom then
- Result := GetProp(Handle, MakeIntAtom(WindowAtom)) <> 0
- else
- Result := ObjectFromHWnd(Handle) <> nil;
+ if (GetWindowThreadProcessId(Handle, @PID) <> 0) and
+ (PID = GetCurrentProcessId) then
+ begin
+ if GlobalFindAtom(PChar(WindowAtomString)) = WindowAtom then
+ Result := GetProp(Handle, MakeIntAtom(WindowAtom)) <> 0
+ else
+ Result := ObjectFromHWnd(Handle) <> nil;
+ end;
end;
end;
Wyszukiwarka
Podobne podstrony:
VCL Controls D2D5 patchcontrol structures continue12 control statements02 ZELIO CONTROL?TALOGUETest di controllomikrotik bandwidth controlco ControlPortC6401 52 Check control module 01controlled boxes2001 01 Know How Commandline Control of Babelfish Translation ServiceCauses and control of filamentous growth in aerobic granular sludge sequencing batch reactorsplan project configuration change control?F019DFwięcej podobnych podstron