VCL Controls D6 patch


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 patch
control structures continue
12 control statements
02 ZELIO CONTROL?TALOGUE
Test di controllo
mikrotik bandwidth control
co ControlPortC64
01 52 Check control module 01
controlled boxes
2001 01 Know How Commandline Control of Babelfish Translation Service
Causes and control of filamentous growth in aerobic granular sludge sequencing batch reactors
plan project configuration change control?F019DF

więcej podobnych podstron