Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Смена экрана блокировки (lockscreen)


Автор: Albinos_x 17.4.2015, 13:15
Доброе время суток!

собственно САБЖ, кто-нибудь пытался уже такое делать и что из этого вышло?

Автор: CynicRus 17.4.2015, 16:22
В смысле изображение поменять, или поменять весь механизм на свой самописный?

Автор: Albinos_x 17.4.2015, 16:30
Изображение

Автор: Illusion Dolphin 17.4.2015, 21:18
Я думаю что стоит посмотреть тут https://code.msdn.microsoft.com/windowsapps/Personalization-App-sample-9ebfe147 

Автор: Albinos_x 18.4.2015, 09:15
Illusion Dolphin, смотрел.. но в XE2 нет таких модулей для того чтоб подгрузить этот класс и функцию... и библиотеку нужную пока также не удалось найти...

Автор: CynicRus 18.4.2015, 11:12
Можно поковырять в этом направлении: https://github.com/tgerdes/DelphiWinRT/

Ну и в довесок:http://www.thomgerdes.com/2011/12/writing-hello-world-for-winrt-in-delphi.html

Автор: Poseidon 18.4.2015, 13:16
Цитата(Albinos_x @  18.4.2015,  09:15 Найти цитируемый пост)
но в XE2 нет таких модулей для того чтоб подгрузить этот класс и функцию..
Поддержка механизмов Windows 8 появилась только в XE3

Автор: Albinos_x 18.4.2015, 14:06
Poseidon, это я понимаю... но не думаю, что нельзя написать приложение с данной функцией)

Добавлено через 6 минут и 45 секунд
пока я нашел способ, как использовать данное пространство имен в powershell:
Код

$NULL = [Windows.System.UserProfile.LockScreen, Windows.System.UserProfile, ContentType = WindowsRuntime]
[Windows.System.UserProfile.LockScreen]::OriginalImageFile


если powershell может загрузить данные значит и в программе своей можно... думаю, может через COM можно сделать...

Автор: Albinos_x 20.4.2015, 16:29
хм... в XE8 я тоже не нашел заготовленного такого класса... хоть это и Windows API Core...(

Автор: Albinos_x 23.4.2015, 18:05
в общем до API core достучаться не смог(

вот здесь предлагали через захват прав и подмену изображений либо GPO
http://forum.oszone.net/thread-248582.html

в общем реализовал аналог GPO - т.к. у меня корпоративное решение то вариант подходит
Код
...
...
////////////////////////////////////////////////////////////////////////////////
// установка экрана блокировки для ПК
Function SetLockScreenWin8Sys(FileName:String):boolean;
var Reg: TRegistry;
begin
Result:=True;
try
  try
     Reg:=TRegistry.Create;
     Reg.RootKey:= HKEY_LOCAL_MACHINE;
     { открываем и создаём ключ }
     if not Reg.OpenKey('SOFTWARE\Policies\Microsoft\Windows\Personalization', True) then
        Result:=False
        else { записываем значение }
        begin
        Reg.WriteString('LockScreenImage',FileName);
        Reg.WriteInteger('NoChangingLockScreen',1);
        if Is64BitWindows then  // проверка на битность
           begin
           if not Reg.OpenKey('SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\Personalization', True) then
              Result:=False
              else { записываем значение }
              begin
              Reg.WriteString('LockScreenImage',FileName);
              Reg.WriteInteger('NoChangingLockScreen',1);
              end;
           end;
        end;
     finally
       Reg.Free;
       end;
  except
     Result:=False;
     end;
end;    {Function SetLockScreenWin8Sys(FileName:String):boolean;}
////////////////////////////////////////////////////////////////////////////////


ну и естественно удалить созданные ключи при деинсталяции ПО, иначе пользователям будет заблокирована возможность установки своего экрана блокировки

по идее на 10-ке тоже работает, но пока не проверил

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)