[ThomsonMedia] Alpha v0.01

strammermax

Neuer User
Mitglied seit
6 Nov 2007
Beiträge
72
Punkte für Reaktionen
0
Punkte
0
Hi Leute,
ich hab ein riesen Problem mit der GDI von WindowsCE. Hab es jetzt nach langem hin und her endlich mal geschafft, 2 Striche für die Uhr VOR dem Hintergrundbild und nicht dahinter zu malen. *yeah*

Leider pinselt er nun jede Sekunde zuerst grau in das Rechteck, dann das Uhren-BG und dann die Zeiger neu. Sieht voll kacke aus. Bei Borland oder aus VS C++ konnte man das durch UserPaint und DoubleBuffered unterdrücken, geht hier aber nicht...

Laut MS sollte es auch Control.SetStyle() geben für WindowsCE, allerdings nicht bei mir. Kann mir da jemand weiterhelfen?

Ich habe mal (natürlich auch für alle anderen) die letzte, meistens stabile Exe hochgeladen. Dafür muss aber zwingend der TCPMP installiert sein, und zwar in das vom SOT verwendete Verzeichnis.

Hier die Liste, was funktioniert :
  • Maxdome
  • Wetter
  • flackernde Uhr
  • News lesen (Hier wird automatisch die Zielseite nach WMVs durchsucht, welche über die Tasten 0 bis 7 aufgerufen werden können, aktuell ist grad der PC-RSS-Feed von Gametrailers drin)

Und alles ziemlich buggy, also mit Vorsicht genießen... Aber ich nehm mir ein Beispiel an Microsoft und benutze euch einfach mal als Betatester.

http://www.maexle.com/share/ThomsonMedia_v0.1.rar

Schreibt mir, was ihr davon haltet!!!

Grüße
 
Beta-Test läuft !

Erster Zwischenbericht :

Habe Deine Dateien in einen Ordner "ThomsonMedia" direkt auf die CF gepackt
(oder muß der an einen bestimmten Ort auf der CF ?

1.) EXE läuft 1A
2.) Wetter wird angezeigt und der Button funktioniert auch
3.) Uhr läuft und flasht so wie Du gesagt hast (Uhrzeit stimmt auf die Sekunde)

Folgendes Festgestellt :

1.) kein Maxdom, oder nicht gefunden
2.) Bild zu groß für Desktop (wie halt alles bei der IP1101 ohne Randpatch)
3.) Auswahl per Mause möglich jedoch der Start per Doppelklick geht nicht (nur per <OK> der FB
4.) Alle Bilder (gehen nur jpg?) Fehlermeldung : Out of Memory Exception (aber nur bei gr. Bildern. Kl. gehen super)
4.) Menu Optionen geht auf aber alles schwarz bis auf einen kl. roten und grünen Kasten.


Ich hoffe ich konnte Dir helfen. Für meinen Teil kann ich nur sagen eine Super Erweiterung für die Box
 
Zuletzt bearbeitet:
Der kleine und grüne Kasten ist ein Spiel (Snake), du kannst mit den Pfeiltasten lenken...
Ich denke, dass die Optionen erst bei einer späteren Version folgen werden und das ein kleines Easteregg ist...
Naja ist auch nur eine Vermutung.

Ich habe auch noch 2 Fragen:
1.Wird es möglich sein seine Stadt irgendwo einstellen zu können,
dass man vielleicht einfach nur seine PLZ eingibt oder das man selbst den entsprechenden Link angibt?
2. Ist es möglich standartmäßig im SOT alle Streams mit dem TCMP zu öffnen, sowie es bei dir passiert, weil bei mir startet im SOT selbst immer der WMP?

Ansonsten ist dir das Design echt gelungen und die Diashow sieht auch sehr schön aus!
Ein fettes Lob an dich!
 
@mistermagenta

1.) nicht meine Baustelle
2.) Ja und zwar so :
Code:
Name(6)=Radio
Action(6)=1007
Option1(6)=1
Option2(6)=.\Hard Disk\Internet-Radio\
Passwort(6)=
Image(6)=
Dann muß du nur einen Ordner anlegen in dem alle Streams liegen oder Version 2 :
Code:
Name(7)=Die 80er
Action(7)=1017
Option1(7)=\programme\TCPMP\player_ce2.exe
Option2(7)=\Hard Disk\Internet-Radio\die 80er.pls
Passwort(7)=
Image(7)=
Da muß Du mit dem Winamp eine Datei.pls erzeugen und diese kannst Du mit vor und zurück die enthaltenen Streams steuern.

oder was meinst Du mit deiner Frage ?

3.) welche Diashow ? habe ich da was übersehen. Bei mir kommt nur die Fehlermeldung bei Bildern ?
 
Guten Tag!

@gismotro :
Maxdome kann man über den roten Button starten, der ist in dem Design noch garnicht vorhanden, danke für den Tipp gg
Ich hab bei mir den Ränderpatch installiert, werde ihn aber wieder rausnehmen und das Programm für ohne-ränderpatch-weiterentwickeln. Grund : Wenn ich auf meiner 16:9 Glotze was im 16:9 Format anschaue, dann hab ich mit dem Ränderpatch rechts und links ca. 1cm schwarz, oben und unten kommt dann auch wieder schwarz, voll schwachsinnig!
An der Diashow arbeite ich gerade. Aspect Ratio, die Diashow ansich und eine einfachere Steuerung kommen dann im nächsten Release.

@Dateien :
eigentlich scheiß egal, wo die liegen. Hauptsache, das "images" Verzeichnis liegt im selben Ordner, wo die EXE liegt.

@mistermagenta :
gg, mit "Snake" habe ich die D3D Schnittstelle prüfen wollen, klappt soweit ja auch ganz gut. Zum. bei mir ruckelt das grüne Viereck jetzt nicht mehr so dolle wie am Anfang. Kollisionsabfrage ist in Arbeit!!!
Klar kann man da mal sein eigenes Wetter angeben, gerade isses das von Stuttgart City. PLZ wird schwierig, eher den GMXX Code, der allgemein gültig ist und den man beispielsweise bei wetter.com, weather.com oder yahooWeather rauskriegt.
Den WMP kann man leider nicht per Fernbedienung steuern, deshalb hab ich den TCPMP genommen, der ja sowieso viel cooler ist.
Das automatische öffnen mit dem Player geht glaub nicht, gibt da irgendwelche Probleme mit der FileAssociation, wie ich hier im Forum mal gelesen habe. Ich starte den halt mit der WMV als Übergabeparameter.
 
Ich glaube, mistermagenta meinte einfach die Fileassoziation. Wenn man im SOT Webbrowser z.B. auf einen Stream klickt, dann wird der mit dem WMP geöffnet und nicht mit dem TCPMP wie bei meinem Programm.
 
Du hast mich richtig verstanden strammermax
Hab dir jetzt ne PM geschrieben Strammermax, damit der Thread nciht vollgemüllt wird...
Aber deine Variante probiere ich auch erstmal aus gismotro.
Danke!
 
Ebenfalls getestet, exe lief auch bir mir problemlos:

- alle von gismotro beschriebenen effekte treten bei mir auch auf
- lustig ist, wenn ich das ganze über VNC anschaue, flackert die Uhr nicht
- ein Absturz lässt sich provozieren: Über Bilder zum Netzwerk und dort auf eine
Freigabe, da die Box nach manuellem Beenden des SOT-Clients bei mir auch
die Authentifikation für bestehende Netzwerkverbindungen verliert, kommt hier
die Aufforderungen zur Eingabe von Nutzernamen und Passwort - Abbrechen
gedrückt (ist so'n Reflex bei mir) - Exception. Leider zu schnell weg, als daß
man etwas erkennen könnte.

Ansonsten bin ich begeistert, sieht sehr hübsch aus :dance:.
 
Na dann werde ich meine Box schon mal öffnen gehen.
 
Sorry gismotro, musst nochmal zu schrauben. Ich ess erstmal was, und ich wollte eigentlich gleich noch die neue Version von Snake (was echt übelst spaß macht) mit einbauen... Verstehst du doch sicher, oder?

Ich dachte nämlich eigentlich, dass die schon funktionieren würde, tut sie aber nicht...
 
OK, ich habe Zeit !
Werde das ganze dann Morgen testen. Es sei denn Du brauchst noch mehr Zeit.

MfG Gismotro

PS.: Maxdome per Roten Knopf geht !
 
P.S.: Ich hab ne Methode gefunden, mit der man den Maxdome Client wieder killen kann!!!!
 
Da Bin ich ja mal Gespannt ! Und wie ?
 
Erste Möglichkeit : Multithreading, wird von der Box höchstwahrscheinlich nicht unterstützt. Aufm PC gehts, die Box reagiert kein Stück.

Zweite Möglichkeit (sitz ich grad dran). Der Maxdome Client wird zwar gestartet, ist aber nicht die "Top-Most" Applikation, das ist eine andere. Per WindowMessage (WindowsCE benutzt dasselbe Protokoll wie das herkömmliche Windows, um mit anderen Prozessen/Fenstern zu kommunizieren) leite ich alle Fernbedienungskommandos auf den Maxdome Client um, AUSSER den 111er (Power Knopf). Ausschalten kann man die Box sowieso nicht, also kann ich den wohl oder übel benutzen, um den Prozess "Maxdome" zu killen...

easy, oder?
 
Ich verstehe leider nichts vom Programmieren (leider), aber ich habe volles Vertrauen in deine Künste.
 
Multithreading, wird von der Box höchstwahrscheinlich nicht unterstützt.
'tschuldigung die Verbesserung: CE ist ein Multitasking-System, somit ist dem System Multithreading immanent. Diese Variante ist auch die viel einfachere: Du startest Maxdome mittels CreateProcess oder CreateProcessAsUser, beide Fkt. geben dir ein Instanzenhandle, womit du entweder KillProcess aufrufst. Da schießt du den Prozess zwar ab. aber das ist ja eh wurscht bei CE.

Bei der zweiten variante:
Per WindowMessage (WindowsCE benutzt dasselbe Protokoll wie das herkömmliche Windows, um mit anderen Prozessen/Fenstern zu kommunizieren)
hast du das notwendige Fenster-Handle nicht. Zu dem ist es wg. Multitasking in einem eigenen Process und somit nicht so einfach erfassbar. Die Möglichkeit hier wäre, wie oben beschrieben, Maxdome als Child-Process mit CreateProcess zu starten. Dann ermittelst du mittels EnumWindows (ruft 'ne Callback auf) alle Fenster im System. Für jedes holst du mit GetThreadId das jeweilige zum fenster gehörende Instanzen-Handle und vergleichst das mit dem von CreateProcess. Bei übereinstimmung schickste an alle(!!!!) gefundenen Fenster-Handle ein WM_CLOSE. Du mußt an alle hwnd eines Prozesses schicken, da das erste gefundene hwnd nicht unbedingt das fenster der Applikation ist und du ggf. nur ein childfenster des Prozesses (IE)
schließt. wenn du app erwischst, ohne vorher alle seine Childfenster mit wm_close zu beglücken, stört das nicht, denn Messages, deren Zielfensterhandle nicht mehr existiert, beseitigt Windows automatisch aus der Messagequeue.

Nur das mit C# zu basteln, wird ggf. auch umständlich. Wie kommst du darauf, das CE kein Multithreading unterstützt. Kannst du System.Threading nicht benutzen?
 
Nee komischerweise nicht. Das geht mir öfters so. Sobald ich im Visual Studio ein Projekt für WindowsCE erstelle, fehlt mir ziemlich viel. Deshalb dachte ich auch, das es das nicht gibt für WinCE.

Vor dem Problem, das du oben so gut beschrieben hast, gibts noch ein anderes, wovor ich gerade stehe und zwar wie ich es hinkriege, dass die Fernbedienungs-Events nicht an den Prozess von Maxdome gehen, sondern an einen anderen. Das wird wohl nur über einen Child-Process gehen, dem ich das weiterleite, oder?
 
Morgen ;-) Weiß da Neelix nicht eher Rat, er musste daß doch mit'm SOT auch bewerkstelligen. Da die FB ja offensichtlich nur KeyCodes erzeugt, denke ich, es handelt sich um ein normales Tastaturhandling. Dort gibt es auch theoretisch 2 Möglichkeiten: entweder ein systemweites Hook setzen, das bei einem Keybordevent eine von dir angegebene Prozedur anhopst, in der du dann die Tastatureingaben auswertest und je nach erfordernis zum system durchreichst oder nur für eigene Zwecke auswertest. Ist aber übel zu programmieren.

Wenn ich's richtig verstehe, betreibst du maxdome aber schon als child-prozess, da ist es etwas einfacher, da du das Fenster-Handle ja wie beschrieben ermitteln kannst: wenn du es hast Setzt du mit SetWindowLong() eine neue Fensterprozedur ( die originale bekommst als return zurück, die mußt du speichern), wertest die tastenereignisse (WM_KEYDOWN, WM_KEYPRESS, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYPRESS, WM_SYSKEYUP) aus und leitest die dann gf. mit CallWindowProc() an die originale Fensterprozedur weiter, alle anderen Messages mußt du eh weiterleiten. Am ende mußt du dem maxdome-fenster die originale fensterprozedur wieder zuweisen, ansonsten kommt die app ev. mit seinem Herunterfahren durcheinander.

Da gibts auch ganz viel im Netz: die erste Technik heißt Hooking, die zweite SubClassing, gerade VB'ler lieben zweiteres...

Menno, ihr schreibt hier ein Programm nach dem anderen und ich komm mit C# nicht weiter: gibts irgendwo eine vernünftige Seite, wo das Objektmodell von .NET erklärt ist, ohne daß ich gleich nochmal programmieren lernen muß?!
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.