Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi AlphaBlend verstellen (https://www.delphipraxis.net/17141-alphablend-verstellen.html)

S2B 28. Feb 2004 19:02


AlphaBlend verstellen
 
Hallo alle zusammen!
Ich möchte bei allen geöffneten Fenstern AlphaBlend auf true setzen, den AlphaBlendValue verstellen und sie nach einer Weile minimieren. Das ganze soll eine art Effekt für einen Taskmanager werden. Wisst ihr, wie das gehen könnte? Ich hab nämlich keine Ahnung und kenn mich auch noch nicht so gut mit der API aus!
Bitte helft mir :spin:!
Ich bedanke mich schon mal für alle Antworten(falls ich es nachher vergessen sollte).
S2B

fkerber 28. Feb 2004 19:14

Re: AlphaBlend verstellen
 
HI!

Ich vermute mit alle Fenster, meinst du wohl alle Fenster. :)

Dann müsstest du dir erstmal das Handle der Fenster besorgen.
Siehe hier: Hier im Forum suchenEnumWindows

Wie du das dann mit dem Alpha-Blend genau machen kannst weiß ich nicht, aber vielleicht findest du was im MSDN.
Das minimieren geht glaube ich hiermit:

Delphi-Quellcode:
setwindowpos()
Ciao fkerber

S2B 28. Feb 2004 19:18

Re: AlphaBlend verstellen
 
Danke für die schnelle Antwort! Die Handles der Fenster hab ich schon aber das minimieren bringt mich schon ein ganzes Stück weiter! Ich probiere es nachher gleich aus.
S2B

fkerber 28. Feb 2004 19:24

Re: AlphaBlend verstellen
 
Hi!

Ich glaube, ich habe mich geirrt. :oops:
Sorry. Man kann mit

Delphi-Quellcode:
SetWindowPos();
das Fenster nicht minimieren. Aber es geht mit:

Delphi-Quellcode:
Showwindow();
Siehe hier: http://msdn.microsoft.com/library/de...showwindow.asp

Ciao fkerber

S2B 28. Feb 2004 19:29

Re: AlphaBlend verstellen
 
Dake für die Antwort. Der Link hat mir sehr weitergeholfen, da ich gerade versucht hab, mich auf MSDN zurechtzufinden und mit diesem Link ist man direkt drin :-D!
S2B

S2B 28. Feb 2004 21:35

Re: AlphaBlend verstellen
 
Jetzt hab ich nur noch ein Problem: Ich muss das mit dem AlphaBlend-Eintrag hinkriegen :gruebel:. Wenn irgendjemand Rat weiß, bitte schreibt es mir doch! Vielen Dank schon mal vorher und cu
S2B

Luckie 28. Feb 2004 21:43

Re: AlphaBlend verstellen
 
Hol dir das handle und dann:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Set WS_EX_LAYERED on this window
  SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);

  // Make this window 70% alpha
  SetLayeredWindowAttributes(Handle, 0, trunc((255 * 70) / 100), LWA_ALPHA);
end;
Dies macht das nur für das Fenster mit dem Button. Für Handle musst du eben das Handle des entsprechenden Fensters einsetzten.

S2B 28. Feb 2004 21:54

Re: AlphaBlend verstellen
 
@Luckie: Vielen Dank für den Code. Jetzt funktioniert es! Es ist echt cool!!!
Cu S2B

S2B 28. Feb 2004 23:32

Re: AlphaBlend verstellen
 
Hallo,
ich hab nur noch ein kleines Problem mit meinem gebastelten Code(ich weiß, er sieht schrecklich aus und man könnte es auch einfacher schreiben, aber so gut beherrsch ich das noch nicht :lol:):

Delphi-Quellcode:
var
  x: Integer;
  Handle2: DWORD;
 
//irgendwo davor:
  x:=100;

 try
  Repeat
    Handle2:=StrToInt(ListView1.Items.Item[1].Caption);
    SetWindowLong(Handle2, GWL_EXSTYLE, GetWindowLong(Handle2, GWL_EXSTYLE) or WS_EX_LAYERED);
     begin
      try
       repeat
         x:=x-1;
         SetLayeredWindowAttributes(Handle2, 0, trunc((255 * x) / 100), LWA_ALPHA);
       until
         x=0;
      finally
       {--da muss noch etwas rein, um das Fenster zu minimieren--} 
       SetLayeredWindowAttributes(Handle2, 0, trunc((255 * 100) / 100), LWA_ALPHA);
      end;
     end;
    ListView1.Items.Item[1].Delete;
  Until
    ListView1.Items.Count<4;
 finally
    Button3.Enabled:=false;
 end;
Ich habe alle laufenden Fenster in eine ListView geschrieben und lese sie daraus aus. Die Fenster werden dann von 100%Transparenz auf 0% Transparenz "ausgeblendet". Dann werden sie minimiert und die 100% Transparenz wieder eingestellt. Und jetzt kommt mein Problem:
Das zweite Fenster wird von 100% auf 0% "ausgeblendet" und dann wiederholt sich das ständig. Mit den anderen offenen Fenstern passiert gar nix!
Was muss ich ändern, damit das nicht passiert? Ich hoffe, dass mir jemand helfen kann. Es muss ja auch nicht so früh morgens sein :wink:!
Ich freue mich über jede Antwort
Man schreibt/liest sich
S2B


Alle Zeitangaben in WEZ +1. Es ist jetzt 16: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