AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TPoerbutton ereigniss wird permanent ausgeführt:
Thema durchsuchen
Ansicht
Themen-Optionen

TPoerbutton ereigniss wird permanent ausgeführt:

Ein Thema von CTV · begonnen am 2. Feb 2004 · letzter Beitrag vom 5. Feb 2004
 
Benutzerbild von CTV
CTV

Registriert seit: 20. Jan 2004
Ort: Zug CH
83 Beiträge
 
Delphi 7 Professional
 
#1

TPoerbutton ereigniss wird permanent ausgeführt:

  Alt 2. Feb 2004, 15:54
Ich hab mal ein Tool gemacht um das Powerbutton peress Ereigniss abzufangen nun wollte ich daraus eine komponente machen: Die funktioniert soweit de pc fährt nicht runter wenn ich die Eigenschaft PowerbuttenEnable auf false stelle .. jedoch wird das ereignis onPowerbottenpress kontinuierlich ausgeführt weiss jemand wieso ?

componenten Ssource:

Delphi-Quellcode:
unit PowerButton;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Menus, ShellApi, ExtCtrls,dialogs;

  

type
  TPowerButton = class(TComponent)
  private
    FHooked: Boolean;
    FOnPowerbuttonPress : TNotifyEvent;
    PPowerOffEnable:Boolean;
    function MessageHook(var Msg: TMessage): Boolean;
  protected
    procedure DoPowerbuttonPress; dynamic;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    {events}
    property OnPowerbuttonPress: TNotifyEvent read FOnPowerbuttonPress write FOnPowerbuttonPress;
    {properties}
    property PowerOffEnable : boolean read PPowerOffEnable write PPowerOffEnable;

  end;

procedure Register;

implementation

const
  PBT_APMQUERYSUSPEND = 0; {Request for permission to suspend.}

procedure Register;
begin
  RegisterComponents('Zusätzlich', [TPowerButton]);
end;

constructor TPowerButton.create(AOwner : TComponent);
begin
  inherited Create(AOwner);
  FHooked := False;
  if not (csDesigning in ComponentState) then
  begin
    Application.HookMainWindow(MessageHook);
    FHooked := True;
  end;
end;

Procedure TPowerButton.DoPowerbuttonPress;
begin
  if Assigned(FOnPowerbuttonPress) then FOnPowerbuttonPress(Self);

end;

function TPowerButton.MessageHook(var Msg: TMessage): Boolean;
begin
  case msg.WParam of
    PWR_SUSPENDREQUEST: //win2000,XP
    begin
      if PPowerOffEnable = false then
      begin
        msg.Result := PWR_FAIL;
      end;
      DoPowerbuttonPress;
    end;

    PBT_APMQUERYSUSPEND: //win95,98
    begin
      if PPowerOffEnable = false then
      begin
        msg.Result := BROADCAST_QUERY_DENY;
      end;
      DoPowerbuttonPress;
    end;
  end;
end;

destructor TPowerButton.Destroy;
begin
  if FHooked then Application.UnhookMainWindow(MessageHook);
  inherited Destroy;
end;
Diese Proceure: DoPowerbuttonPress sollte eingelich nur dann ausgeführt werden wenn der PB wirklich gedückt wird jedoch wird sie die ganze zeit ausgeführt weis jemand wieso ?

Greetz Cyrus
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz