AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Laufschrift auf dem Desktop

Ein Thema von nsamaster · begonnen am 22. Okt 2008 · letzter Beitrag vom 22. Okt 2008
Antwort Antwort
nsamaster

Registriert seit: 12. Jun 2002
Ort: BRD umd die ecke links und dann immer gerade aus
31 Beiträge
 
#1

Laufschrift auf dem Desktop

  Alt 22. Okt 2008, 09:55
Hallo Gemeinde!

Ich möchte ein Programm realisieren, bei welchem eine Laufschrift (nach möglichkeit Transparent) über der Taskleiste von rechts nach links verläuft - Als Beispiel fällt mir da die Laufschrift von NTV ein . Meine Suchen im Internet haben mir für dergleichen Situation nicht wirklich viele verwehrtbare Information erbracht, sodass ich mich hoffnungsvoll an euch wende. Meine Suche geht über vorschläge und evtl. Beispiele. Also, wer diese liefer kann, ist sich meines Dankes sicher!
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Laufschrift auf dem Desktop

  Alt 22. Okt 2008, 10:01
MitGetDC(Getdesktopweindow()) Bekommst du ein HDC (Handle auf Device Context) des Desktops. Das ist zwar unsauber, aber damit geht sowas.

Besser isses, wenn du ein neues Fenster erstellst, dass in der Taskleiste drinsitzt. (= SetParent() )
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#3

Re: Laufschrift auf dem Desktop

  Alt 22. Okt 2008, 10:11
Hier der Code zur Laufschrift:

Laufschrift a la Winamp
Versch Varianten


musst du halt nur noch auf deinen Code anpassen.

Für Die Taskleiste könntest du nen Deskband nehmen.

Sonst kannst du mit folgendem Code auch direkt auf dem Desktop schreiben:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 DCanvas: TCanvas;
 DHandle: HWND;
begin
 DHandle:=GetDC(0);
 if DHandle<>0 then
 begin
   try
     DCanvas:=TCanvas.Create;
     try
       DCanvas.Handle:=DHandle;
       DCanvas.Font.Color:=clRed;
       DCanvas.Font.Size:=24;
       DCanvas.Brush.Style:=bsClear;
       DCanvas.TextOut(100, 100, 'Ich will ein Spiel spielen!!!');
     finally
       DCanvas.Free;
     end;
    finally
      if ReleaseDc(0, DHandle)<>1 then
    end;
 end;
end;
EDIT: Der Code ist aber nicht gerade der feinste es kann da ab und zu zu anzeigefehlern kommen!
  Mit Zitat antworten Zitat
nsamaster

Registriert seit: 12. Jun 2002
Ort: BRD umd die ecke links und dann immer gerade aus
31 Beiträge
 
#4

Re: Laufschrift auf dem Desktop

  Alt 22. Okt 2008, 10:13
Zitat:
Besser isses, wenn du ein neues Fenster erstellst, dass in der Taskleiste drinsitzt. (= SetParent() )
Mhh... Die Laufschrift soll nicht in der Taskleiste sein, sondern darüber. Da fällt mir noch ein, das man den Bereich der "Taskleiste", für andere Programm so ausdenen müsste, das meine Schrift nicht überdeckt wird. Geht das irgendwie?

Was bedeutet "unsauber"? Ich gehe richtig davon aus, das ich dann mit hilfe eines Canvas zeichnen kann?

Vielen Dank BullsEye für die schnelle Antwort und hilfreichen Links!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#5

Re: Laufschrift auf dem Desktop

  Alt 22. Okt 2008, 10:18
Zitat:
Da fällt mir noch ein, das man den Bereich der "Taskleiste", für andere Programm so ausdenen müsste, das meine Schrift nicht überdeckt wird. Geht das irgendwie?
Scheint mir zwar mit Kanonen auf Spatzen geschossen, aber schau Dir mal SystemParametersInfo mit SPI_SETWORKAREA an.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#6

Re: Laufschrift auf dem Desktop

  Alt 22. Okt 2008, 10:23
Zitat von nsamaster:
Mhh... Die Laufschrift soll nicht in der Taskleiste sein, sondern darüber. Da fällt mir noch ein, das man den Bereich der "Taskleiste", für andere Programm so ausdenen müsste, das meine Schrift nicht überdeckt wird. Geht das irgendwie?

Hiermit kannst du die Taskbarposition ermitteln. Nunja, das mit dem "dadrüber" ist sone Sache. Ich z.B. habe meine oben sprich da passt nichts drüber. Also ne kleine Abfrage basteln wo du guckst ob die oben oder unten sitzt und du passt da dann halt deine Position dran an

Delphi-Quellcode:
var
  H: HWnd;
  Rect: TRect;
begin
  H:= FindWindow('Shell_TrayWnd', nil);
  if H<>0 then
  begin
    GetWindowRect(H, Rect);
 
    Label1.Caption:= 'Left: ' + IntToStr(Rect.Left);
    Label2.Caption:= 'Right: ' + IntToStr(Rect.Right);
    Label3.Caption:= 'Top: ' + IntToStr(Rect.Top);
    Label4.Caption:= 'Bottom: ' + IntToStr(Rect.Bottom);
  end;
Zum Thema unsauber: Gut, ist nun nicht transparent, aber das solltest du denke ich auch einfach hinbekommen. Aber optisch sieht das ab und zu nicht sehr fein aus. Und manchmal verzerrt die Schrift wenn nen Fenster dahinter ist.
Vllt mal mit "Doublebuffered" arbeiten
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#7

Re: Laufschrift auf dem Desktop

  Alt 22. Okt 2008, 10:25
Da kann man doch eine eigene Symbolleiste definieren. So wie die Schnellstartleiste, oder den Desktop Manager etc. Dann bekommt diese Leiste ihren vom Benutzer oder Dir definierbaren Platz und gut ist. Das nur als Anregung, denn wie man das macht...weiss ich leider nicht

Sherlock
Oliver
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#8

Re: Laufschrift auf dem Desktop

  Alt 22. Okt 2008, 10:28
Zitat von Sherlock:
Da kann man doch eine eigene Symbolleiste definieren. So wie die Schnellstartleiste, oder den Desktop Manager etc. Dann bekommt diese Leiste ihren vom Benutzer oder Dir definierbaren Platz und gut ist. Das nur als Anregung, denn wie man das macht...weiss ich leider nicht

Sherlock
Deswegen ja das mit dem Deskband.
Ich bin mir gerade nicht sicher aber vllt geht das auch mit dem Hier im Forum suchenCoolTrayIcon sonst irgendein Anderes TrayIcon
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:02 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