|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"D4>スクリーンセーバーを起動させない"
スクリーンセーバーを起動させないコンポーネント(改)です。
でもたまに、起動しちゃうみたいです・・・・・何故だろう?
-----------------------------------------------------------------------------
unit NoScreenServer;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TNoScreenServer = class(TComponent)
private
WHandle : THandle;
FOldWndProc : Pointer;
FNewWndProc : Pointer;
protected
procedure WndProc(var Message: TMessage);virtual;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy;override;
published
end;
procedure Register;
implementation
constructor TNoScreenServer.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
if Not(csDesigning in ComponentState) then
begin
with TCustomForm(Owner) do
begin
WHandle:=Handle;
FNewWndProc :=MakeObjectInstance(WndProc);
FOldWndProc :=Pointer(GetWindowLong(WHandle, GWL_WNDPROC));
SetWindowLong(WHandle, GWL_WNDPROC, Integer(FNewWndProc));
end;
end;
end;
destructor TNoScreenServer.Destroy;
begin
if Not(csDesigning in ComponentState) then
begin
SetWindowLong(WHandle, GWL_WNDPROC,Longint(FOldWndProc));
FreeObjectInstance(FNewWndProc);
end;
inherited Destroy;
end;
procedure TNoScreenServer.WndProc(var Message: TMessage);
begin
try
with Message do
begin
if Msg = WM_SYSCOMMAND then
begin
with TWMSysCommand(message) do
begin
if (CmdType and $FFF0) = SC_SCREENSAVE
then Result := 0
else Result := CallWindowProc(FOldWndProc, WHandle, Msg, WParam,
LParam);
end;
end
else
begin
Result := CallWindowProc(FOldWndProc, WHandle, Msg, WParam,
LParam);
end;
end;
except
begin
Application.HandleException(Self);
end;
end;
end;
procedure Register;
begin
RegisterComponents('Samples', [TNoScreenServer]);
end;
end.
-----------------------------------------------------------------------------
KHE00221 t.matsui
Original document by t.matsui 氏 ID:(KHE00221)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|