На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> А как выключить комьютер?
    Есть функция для этого?
      смотри в хелпе функцию ExitWindowsEx
        Обалденно работает с флагом операции EWX_LOGOFF - все умирают, а приложение остаётся. За окном ввода пароля. Под НТ не проверял.
          А НТ и не будет пахать!
          В НТ вот так:
          function GrantShutdownAccess: boolean;
          var
          hToken: THandle;
          lpVersionInformation: TOSVersionInfo;
          tkp: TTokenPrivileges;
          RetLen: DWORD;
          PreviousState: TTokenPrivileges;
          begin
          lpVersionInformation.dwOSVersionInfoSize := SizeOf(lpVersionInformation);
          Result := GetVersionEx(lpVersionInformation);
          // Get a token for this process.
          if (lpVersionInformation.dwPlatformId = VER_PLATFORM_WIN32_NT) then begin
          // Running on NT so need to change privileges
          // function OpenProcessToken(ProcessHandle: THandle; DesiredAccess: DWORD;
          // var TokenHandle: THandle): BOOL; stdcall;
          if not OpenProcessToken(GetCurrentProcess(),
          TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin
          Result := False; exit;
          end;
          // Get the LUID for shutdown privilege
          //function LookupPrivilegeValue(lpSystemName, lpName: PChar;
          // var lpLuid: TLargeInteger): BOOL; stdcall;
          Result := LookupPrivilegeValue( Nil, 'SeShutdownPrivilege',
          tkp.Privileges[0].Luid);
          if not Result then Exit;
          PreviousState := tkp;
          tkp.PrivilegeCount := 1; // one privilege to set
          tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
          // Get shutdown privilege for this process.
          //function AdjustTokenPrivileges(TokenHandle: THandle;
          // DisableAllPrivileges: BOOL;
          // const NewState: TTokenPrivileges; BufferLength: DWORD;
          // var PreviousState: TTokenPrivileges; var ReturnLength: DWORD): BOOL; stdcall;
          if not(AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(PreviousState), PreviousState, RetLen)) then begin
          Result := False;
          Exit;
          end;
          end;
          Result := True;
          end;
          procedure RebootWindows;
          begin
          if GrantShutdownAccess then begin
          ExitWindowsEx(EWX_REBOOT, 0);
          end;
          end;
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0182 ]   [ 16 queries used ]   [ Generated: 3.05.24, 05:06 GMT ]