Dragging & dropping files (Explorer) to elevated application:
procedure SetDragAndDropOnSystemsWIthUAC(Wnd : HWND; IsEnabled : boolean);
type
TChangeWindowMessageFilter = function(Msg : Cardinal; Action : Word) : Bool; stdcall;
const
Msg_Add = 1;
WM_COPYGLOBALDATA = $49;
var
DllHandle : THandle;
ChangeWindowMessageFilter : TChangeWindowMessageFilter;
begin
DllHandle := LoadLibrary('user32.dll');
if DllHandle > 0 then
begin
ChangeWindowMessageFilter := GetProcAddress(DllHandle, 'ChangeWindowMessageFilter');
if Assigned(ChangeWindowMessageFilter) then
begin
DragAcceptFiles(Wnd, IsEnabled);
ChangeWindowMessageFilter(WM_DROPFILES, Msg_Add);
ChangeWindowMessageFilter(WM_COPYGLOBALDATA, Msg_Add);
end;
end;
end;