Delphi (4.) - Zajímavé zdrojáky

Dnes se chci trochu věnovat zdrojákům pro Delphi. Konkrétně pak počítače a jeho vypínání, restart, usínání a mechaniky CD-ROM včetně ovládání jejích dvířek...

Vypnutí počítače:

var
  a: cardinal;
begin
  ExitWindowsEx(EWX_FORCE,a);    // potlačí hlášky systému
  ExitWindowsEx(EWX_SHUTDOWN,a); // vypnutí počítače
end;

Restartování počítače:

var
  a : cardinal;
begin
  ExitWindowsEx(EWX_Force,a);    // potlačí hlášky systému
  ExitWindowsEx(EWX_REBOOT,a);   // restart počítače
end;

Uspání windowsů:

Stačí pouze zavolat tuto proceduru:

SetSystemPowerState(true,true);

Otevření CD mechaniky:

uses
  MMSystem;
0begin
  mciSendString('Set cdaudio door open', nil, 0, hinstance);
end;

Zavření CD mechaniky:

uses
  MMSystem;
begin
  mciSendString('Set cdaudio door closed wait', nil, 0, handle);
end;

Je CD v mechanice? (1)

Do sekce private přidejte: procedure WMDeviceChange(var Msg:TMessage); message WM_DEVICECHANGE;

procedure TForm1.WMDeviceChange(var Msg:TMessage);
const
  CD_IN  = $8000;
  CD_OUT = $8004;
begin
  inherited;
  case Msg.wParam of
    CD_IN: ShowMessage('CD vloženo!');
    CD_OUT: ShowMessage('V mechanice není CD!');
  end;
end;

je CD v mechanice? (2)

function IsDriveCD(Drive: Char): boolean;
var
  DrivePath: string;
  DriveResult: integer;
begin
  DrivePath := Drive + ':\';
  DriveResult := GetDriveType(PChar(DrivePath));
  Result := DriveResult = DRIVE_CDROM;
end;

Která písnička se přehrává na CD?

Tato procedura napíše číslo aktuální sklatby a čas přehrávání. Vytvoř timer a tento kód napiš do události OnTimer:

uses
  MMSystem;

var
  Trk, Min, Sec: Word;
begin
  with MediaPlayer1 do
  begin
    Trk := MCI_TMSF_TRACK(Position);
    Min := MCI_TMSF_MINUTE(Position);
    Sec := MCI_TMSF_SECOND(Position);
    Label1.Caption := Format('%.2d',[Trk]);
    Label2.Caption := Format('%.2d:%.2d',[Min,Sec]);
  end;
end;
	
	

Vyšlo 26.08.2001, v blogu: 0 1 2 3 4 5 6 7 8

Děkuji, že jste se rozhodl(a) přečíst tento článek. Budu rád i za komentář. Pokud Vás tento článek zaujal a rádi byste jej doporučili ostatním, podpořte mně prosím tím, že věnujete minutku svého času a uděláte mi reklamu na linkuj.cz, vybrali.sme.sk či jagg.cz. Přeji příjemné čtení

Poslední články

Diskuse k blogu

Vypínání PC XP Visty ... 
BOOL MySystemShutdown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;

// Get a token for this process.

if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );

// Get the LUID for the shutdown privilege.

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);

tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

// Get the shutdown privilege for this process.

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);

if (GetLastError() != ERROR_SUCCESS)
return FALSE;

// Shut down the system and force all applications to close.
//
//ExitWindowsEx(EWX_FORCE|EWX_REBOOT,0)是重启。
//ExitWindowsEx(EWX_FORCE|EWX_LOGOFF,0);是注销
// EWX_FORCE参数是指强行关闭所有程序,不会弹出任何对话框。
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_POWEROFF, 0))
return FALSE;

return TRUE;
Vložil: Radka (11.08.2009 13:43:43)
Přidání příspěvku
©PC-guru.cz 2000-2008 | Optimalizováno pro 1024*768