Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   SnowScreenSaver (https://www.delphipraxis.net/82972-snowscreensaver.html)

Hador 23. Dez 2006 13:44


SnowScreenSaver
 
Liste der Anhänge anzeigen (Anzahl: 3)
Mir kam grad spontan der Einfall, das man dem Wetter draußen doch entgegenwirken und ein wenig Schneefall am Rechner simulieren könnte.
Deshalb habe ich mich mal kurz drangesetzt und einen kleinen Bildschirmschoner programmiert.

Er ist zwar relativ einfach gestrikt (keine Vorschau/Einstellungen) aber evtl. findet der eine oder andere ja doch gefallen an ihm.

EDIT:
Rechtschreibfehler -_-''

EDIT2:
Quellcode angehängt

EDIT3:
Ich habe doch noch 'n bissl weiter gebastelt: SnowScreenSaverTxt

xZise 23. Dez 2006 14:48

Re: SnowScreenSaver
 
Vorschläge:
- Eigenes "Schneefallbild"
- Mögliche Rotation des Bildes (optional)
- Dichte
- Schnelligkeit

Ratte 23. Dez 2006 16:08

Re: SnowScreenSaver
 
weitere Idee: Bild in unterschiedlichen größen /mehrere Bilder

Florian H 23. Dez 2006 17:48

Re: SnowScreenSaver
 
Arg störend ist für mich die zufällige Links-rechts-Bewegung der Flocken .. ein Frame nach links.. im nächstne nach rechts.. usw .. ich fänds schon wenn du für jede Flocke ne eher geschwungene Bewegung machst.. also so ein langsames hin- und herschweben anstatt einem 1px-links/rechts-Zuckeln ...

grüßli
flo

trifid 23. Dez 2006 18:02

Re: SnowScreenSaver
 
>Mir kam grad spontan der Einfall,
http://www.codeproject.com/gdi/FallingSnow.asp

Hador 23. Dez 2006 18:34

Re: SnowScreenSaver
 
@trifid: kannte ich noch nicht.

Da das eigentlich nur 'n kleines Tool für zwischendurch sein sollte um mich von meinem Problem mit den Indys/ICS' abzulenken möchte ich das Tool eigentlich nicht großartig weiterentwickeln. Ich hänge den Quellcode mal an, so das jeder das Programm nach belieben erweitern kann.

Quellcode

xZise 23. Dez 2006 20:38

Re: SnowScreenSaver
 
Hej danke ;)

Ich habe jetzt schon einiges umgesetzt (eigene Geschwindigkeit, nicht mehr als 255 Objekte, verschiedene Größen), aber irgendwie wird das nicht so richtig was ;) Obwohl es eigentlich fast dein Code ist ^^ Ich muss mal gucken ;) Was ich da falsch gemacht habe :(

[edit]Ah ;) Ein fall von Copy&Waste :D [/edit]

DP-Maintenance 23. Dez 2006 22:18

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Freeware" nach "Open-Source" verschoben.
Mittlerweile Open-Source. :)

Hador 25. Dez 2006 18:07

Re: SnowScreenSaver
 
Liste der Anhänge anzeigen (Anzahl: 2)
So ich habe doch noch ein wenig weitergebastelt.
Statt Bildern habe ich jetzt Text genommen (Standardmäßig: *) und nicht mehr für jede Flocke ein TImage.
Das erhöht die Performance um ein vielfaches.
Ferner habe ich auch ein kleines Konfigurationsmenü eingebaut.

Auch will ich noch auf diesen Thread aufmerksam machen, in dem xZise an dem Projekt weiterarbeitet.

himitsu 20. Jan 2008 06:21

Re: SnowScreenSaver
 
wenn du schon auf Try-Finaly verzichtest, dann doch bitte "richtig".


Delphi-Quellcode:
RegOpenKeyEx(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\'
             + 'Explorer\Shell Folders', 0, KEY_READ, hk);
RegQueryValueEx(hk, 'AppData', nil, @RegType, nil, @BufSize);
GetMem(Buf, BufSize);
RegQueryValueEx(hk, 'AppData', nil, @RegType, Buf, @BufSize);
RegCloseKey(hk); // man könnte ja auch ml versuchen den Key
                  // zu schließen, den man auch geöffnet hat ;)
if (RegType = REG_SZ) and (BufSize > 1) then
begin
  SetLength(Txt, BufSize);
  CopyMemory(@Txt[1], Buf, BufSize);
  //FreeMem(Buf); << hier hast du es
  PC := PAnsiChar(Txt);
  Result := PC + '\';
end;
FreeMem(Buf); // << hier wär's besser
sonst wird der Speicher nicht freigegeben, wenn der Eintrag nicht existiert.

ach ja, hat sich Delphi eigentlich nicht wegen des Results gemeldet?
(des kann undefiniert sein)

PS: REG_EXPAND_SZ wäre auch möglich


Delphi-Quellcode:
function TSnowScreen.GetAppData: string;
var
  hk: HKEY;
  RegType: DWord;
  BufSize: Cardinal;
  Buf: PAnsiChar;
begin
  Result := '';
  if RegOpenKeyEx(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\'
    + 'CurrentVersion\Explorer\Shell Folders', 0, KEY_READ, hk) then
  begin
    RegQueryValueEx(hk, 'AppData', nil, @RegType, nil, @BufSize);
    if BufSize > 0 then
    begin
      GetMem(Buf, BufSize);
      RegQueryValueEx(hk, 'AppData', nil, @RegType, Buf, @BufSize);
      if RegType = REG_SZ then Result := IncludeTrailingBackslash(Buf);
      FreeMem(Buf);
    end;
  end;
  RegCloseKey(hk);
end;
aber statt der Registry leg ich dir mal ein MSDN-Library durchsuchenExpandEnvironmentStrings ans Herz.
(wer weiß ob MS den Reg-Pfad nicht irgendwann ändert)
Delphi-Quellcode:
var Buf: array[0..MAX_PATH] of Char;
begin
  ExpandEnvironmentStrings('%AppData%\SnowScreenSaver.cfg', @Buf, MAX_PATH);
  Result := PChar(@Buf);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz