Bildschirmschoner

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Bildschirmschoner

Beitrag von Macros »

Ich hab eigentlich schon vor meinem ersten Bildschirmschoner damit angefangen,
aber hatte dann keine Lust mehr weiterzumachen.
Jetzt hab ich mich nochmal 2 volle Tagen drangesetzt,
und ihn endlich fertiggemacht.
  • Der Bildschirmschoner unterstützt jetzt
    wirklich alle Funktionen eines Bildschirmschoners,
    sogar die Vorschau, auch wenn diese momentan
    nicht in dem vorgesehenen Fenster angezeigt wird.
  • Ein paar verschiedenfarbige Bälle flitzen (oder schleichen)
    auf dem Bildschirm rum
  • ogg oder wav Datein als Hintergrundmusik
    +Mp3 +wma +midi
  • 200 KB (ohne ogg Decoder wärens 86)
  • bei Absturtz genauer Fehlerbericht,
    der in die Zwischenablage kopiert wird
    Es wäre nett, wenn ihr ihn dann auch hier postet.
  • Wird auf eure Vorschläge hin erweitert
  • Kleine Info für euch: 700 Codezeilen 19000 Zeichen


Screenshot:
http://www.rshost.de/jgs_db_bilder/bild ... 6391-4.jpg

Download:
http://10a.rshost.de/load/files/balls.scr

Ich freue mich über Feedback
Euer Macros
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Hi,
hatte bis jetzt noch keine Zeit ihn ausprobieren, hört sich aber schon mal nicht schlecht an.

Wie macht man eigendlich einen Bildschirmschoner?
v6.00
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Der einfache Teil:
du erstellst eine Exe, die auf die Parameter reagiert
(welche findest du in der Boardsuche)
und nennst sie in .scr um


Der Schwierige Teil:
Das eigentliche Programm ^^
und erst recht die Vorschau
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

*Quelltext sehen will* :mrgreen:
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Bitte keine Diskusionen um den Stil,
falls er jemanden stört, ich kann damit sehr gut arbeiten.

Code: Alles auswählen

loadinfo()   ;Einstellungen laden
programmpara.s=ProgramParameter()
a$=LCase(Mid(ReplaceString(programmpara, "-", "/"), 2,1))
ParentWindow.l  =Val(StringField(programmpara,2,":")) | Val(ProgramParameter())

Select a$
  Case "s"
    run()
  Case ""
    config()
  Case "p"
    Preview(ParentWindow)
  Case "c"
    config()
  Case "i"
    run(1) ;Vorschau
EndSelect
End
Ab hier ists geklaut
Bis auf das RunProgram() :D

Code: Alles auswählen

Procedure Preview(preview)

  ; ------------------------
  ; preview image
  ; ------------------------
  UseGadgetList(preview)

  GetClientRect_(preview,@rc.rect)
  CreateImage(1,rc\right,rc\bottom)
  StartDrawing(ImageOutput(1))
  DrawText(5,5,"siehe Nebenfenster",RGB(0,255,0))
  StopDrawing()
  ImageGadget(1,0,0,0,0,ImageID(1))

  CloseGadgetList()


  ; ------------------------
  ; close previous previews
  ; ------------------------
  Shared WM_DestroyPreview
  WM_DestroyPreview=RegisterWindowMessage_(@"PREVIEW AUTO DESTRUCTION")
  SendMessage_(#HWND_BROADCAST,WM_DestroyPreview,0,0)

  ; ------------------------
  ; the empty child window will receive all messages
  ; wait end of preview...
  ; ------------------------
  SetParent_(OpenWindow(0,0,0,0,0,"CHILD WINDOW",#PB_Window_Invisible),preview)
  SetWindowCallback(@PreviewAutoDestruction(),0)

  RunProgram(GetExePath()+"balls.scr","/i","")
;Startet das Programm mit Parameter /i
;um die Vorschau zu starten, 
;da das dähmliche Windowsfenster sich aufhängt
;während mein Programm läuft,
;Außer in seltenen Ausnahmefällen, die
;ich aber nur von Hand und nicht vom Code her reproduzieren kann.
EndProcedure

Code: Alles auswählen

Procedure PreviewAutoDestruction(window, message, wParam, lParam)
  Shared WM_DestroyPreview 
;aha, danke, 
;da war ein Fehler, hab den wert der Konstante nicht im Programm :D
;mal schaun, ob man damit was anstellen kann ^^
  Result = #PB_ProcessPureBasicEvents
  Select message
    Case #WM_CLOSE
      DestroyWindow_(window)
      End
    Case WM_DestroyPreview
      End
  EndSelect
  ProcedureReturn Result
EndProcedure
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Eigentlich wollte ich den Quelltext nicht unbedingt sehen, hat mich nur mal interessiert.
v6.00
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Du nicht, Thomas. Aber Tafkadasom2k5
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Danke, das ist verständlich...

Interessantes gefrickel "nur für nen Bildschirmschoner" :o
Respekt, Makros :allright: (auch wenns 'nur geklaut' seins ollte, wie du selber so nett sagst)

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Antworten