Win 7, UAC,
из процесса запущенного под юзером вызываю PostMessage чтобы послать мессагу в окно запущенное под SYSTEM. PostMessage возвращает false, getlasterror=5
окошко для получения сообщений создаётся так:
function CreateInVisibleWindow(const WndClass: string; Method: TWndMethod): HWND;
var
UtilWindowClass: TWndClass;
function AllocateWnd(Method: TWndMethod): HWND;
var
TempClass: TWndClass;
ClassRegistered: Boolean;
begin
UtilWindowClass.hInstance := HInstance;
UtilWindowClass.lpfnWndProc := @DefWindowProc;
ClassRegistered := GetClassInfo(HInstance, UtilWindowClass.lpszClassName,
TempClass);
if not ClassRegistered or (TempClass.lpfnWndProc <> @DefWindowProc) then
begin
if ClassRegistered then
Windows.UnregisterClass(UtilWindowClass.lpszClassName, HInstance);
Windows.RegisterClass(UtilWindowClass);
end;
Result := CreateWindowEx(WS_EX_TOOLWINDOW, UtilWindowClass.lpszClassName,
'', WS_POPUP , 0, 0, 0, 0, 0, 0, HInstance, nil);
if Assigned(Method) then
SetWindowLong(Result, GWL_WNDPROC, Longint(MakeObjectInstance(Method)));
end;
begin
with UtilWindowClass do
begin
style := 0;
lpfnWndProc := @DefWindowProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := 0;
hIcon := 0;
hCursor := 0;
hbrBackground := 0;
lpszMenuName := nil;
lpszClassName := PChar(WndClass);
end;
Result := AllocateWnd(Method);
end;
в PostMessage хендл окна правильный.
вопрос - как под uac отправить мессагу из юзерского uac окна в окно процесса под system ?