AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Erkennen ob Bildschirmsch. bzw. Bildschirmsperre aktiv ist
Thema durchsuchen
Ansicht
Themen-Optionen

Erkennen ob Bildschirmsch. bzw. Bildschirmsperre aktiv ist

Offene Frage von "himitsu"
Ein Thema von Kirchi · begonnen am 31. Mai 2007 · letzter Beitrag vom 6. Dez 2010
 
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#14

AW: Re: Erkennen ob Bildschirmsch. bzw. Bildschirmsperre aktiv i

  Alt 6. Dez 2010, 11:04
Ich weiß, dass das Aufwärmen alter Themen wenig Freude auslöst, ABER:

Ich habe ca. am 11. November 2010 ein älteres Update in mein TurboDelphi wegen einer kompletten Win-Neuinstallation hinzugefügt. Bis dahin lief folgender Code:
Delphi-Quellcode:
Function CreateFromScreen: TJPEGImage;

  Function SSaverActive: Boolean;
  Begin
    SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, @Result, 0);
  End;

Begin
  Result:=TJPEGImage.Create;
  Try
    If SSaverActive Then
    Begin
      // Bildschirmschoner beenden
    End;
    // hier wird etwas gemacht...
  Except
    Result.Free;//Bei Fehlern den Speicher freigeben
  End;
End;

Procedure TForm1.FormCreate(Sender: TObject);
Begin
  With CreateFromScreen Do
  Try
    SaveToFile('Wohinauchimmer.jpg');
  Finally
    Free;
  End;
End;
Seither bekomme ich eine Speicherzugriffsverletzung. Es funktioniert jetzt nur noch so:
Delphi-Quellcode:
  Function SSaverActive: Boolean;
  Begin
    SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, @Result, 0);
  End;

// ^-- Unterfunktion ausgegliedert.

Function CreateFromScreen: TJPEGImage;
Begin
  Result:=TJPEGImage.Create;
  Try
    If SSaverActive Then
    Begin
      // Bildschirmschoner beenden
    End;
    // hier wird etwas gemacht...
  Except
    Result.Free;//Bei Fehlern den Speicher freigeben
  End;
End;
Kann mir das bitte mal jemand erklären?
Ich habe 3 Tage daran gesessen, das in meinem mehrere tausend Zeilen umfassenden Projekt herauszufinden. Und es liegt definitiv an der Funktion SSaverActive , weil ich alles andere durchgetest habe. Ist das nur ein Phänomen von TurboDelphi oder schlimmer noch von meiner Installation? Komisch ist, dass es auf 2 Rechnern nicht mehr klappt.

Gruß, Alex
Alex Winzer
  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 07:37 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