Tipy a triky v Delphi, díl 104.

Jak zamknout pracovní stanici a jak zjistit kolik paměti zabírá náš proces, tak to je dnešní program.
Oba dnešní příklady jsou opět určeny pro generaci Windows na bázi NT a oba příklady budou uvedeny v jednom zdrojovém kódu. Nejprve tedy několik slov k prvnímu tipu, tedy k uzamčení pracovní stanice. Možná že znáte a používáte tuto funkci běžně. Pro ty z vás, kteří snad neví o co jde, jen krátké vysvětlení. Jednoduše řečeno, pokud potřebujete od počítače na chvilku odběhnout, nechcete ho kvůli tomu vypínat a přitom nechcete, aby vám někdo jiný koukal do monitoru nebo se vám dokonce přímo v počítači "hrabal", stačí vaší stanici zamknout. V systému NT a 2000 stačí stisknout obvyklou trojkombinaci CTRL+ALT+DEL a vybrat příslušnou funkci, v XP tuto záležitost vlastně nahrazuje volba "Přepnout uživatele". Opětovné odemknutí počítače pak provedete jednoduše přihlášením do systému, přičemž všechny aplikace budou ve stavu před zamknutím. V našem příkladu docílíme zamknutí stanice snadno využitím příslušné funkce z knihovny USER32.DLL a naše funkce pouze vrací logickou hodnotu pro kontrolu, zda se věc podařila či ne.

Náš druhý dnešní příklad bude z trochu jiného soudku. Jednoduchá funkce nám zjistí, kolik paměti zabírá naše aplikace (aktuální proces). K této funkci budeme potřebovat knihovnu psAPI. Nyní tedy společný zdrojový kód pro oba příklady:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, psAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function LockWS: Boolean;
type
  TLockWorkStation = function: Boolean;
var
  hUser32: HMODULE;
  LockWorkStation: TLockWorkStation;
begin
  result := False;
  hUser32 := GetModuleHandle(`USER32.DLL`);
  if hUser32 <> 0 then
  begin
    @LockWorkStation := GetProcAddress(hUser32, `LockWorkStation`);
    if @LockWorkStation <> nil then
    begin
      LockWorkStation;
      Result := True;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not LockWS then ShowMessage(`Chyba, funkci se nepodarilo spustit.`);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  pmc: PPROCESS_MEMORY_COUNTERS;
  cb: Integer;
begin
  try
    cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
    GetMem(pmc, cb);
    pmc^.cb := cb;
    if GetProcessMemoryInfo(GetCurrentProcess(), pmc, cb) then ShowMessage(IntToStr(pmc^.WorkingSetSize) + ` Bytes`)
    else ShowMessage(`Chyba, nelze zjistit pouziti pameti.`);
    FreeMem(pmc);
  except
  end;
end;

end.

Jak bylo řečeno v úvodu, dnešní příklady budou pracovat pouze pod NT systémy. Ve starších systémech však k žádné chybě nedojde, prostě se nic nestane.

Témata článku: Software, Windows, Programování, Díl, Trik

Určitě si přečtěte

Velká podzimní aktualizace Windows 10 je tady: Co přináší Fall Creators Update

Velká podzimní aktualizace Windows 10 je tady: Co přináší Fall Creators Update

** Po půl roce je tu další aktualizace Windows ** A opět přináší hlavně hromadu drobných kosmetických vylepšení ** Podívali jsme se na ty nejzajímavější

17.  10.  2017 | Jakub Čížek | 180

Budoucností Windows 10 je Fluent Design. Takto bude jednou vypadat celý systém

Budoucností Windows 10 je Fluent Design. Takto bude jednou vypadat celý systém

** Fluent Design je vzhled, do kterého postupně Microsoft převleče celý systém ** Staví na průhlednosti a velkých plochách ** Do Windows 10 se z části dostane už zítra při vydání podzimní aktualizace

16.  10.  2017 | Stanislav Janů | 154

Nejlepší optické iluze: Z toho vám půjde hlava kolem

Nejlepší optické iluze: Z toho vám půjde hlava kolem

** Mozek se nechá snadno ošálit, a to mnoha způsoby ** Podívejte se na několik nejlepších optických iluzí ** Iluze dokazují, že vnímání reality může být značně zkreslené

16.  10.  2017 | Vojtěch Malý


Aktuální číslo časopisu Computer

Nový seriál o programování elektroniky

Otestovali jsme 17 bezdrátových sluchátek

Jak na nákup vánočních dárků ze zahraničí

4 tankové tiskárny v přímém souboji