Laden...

Forenbeiträge von PoWl Ingesamt 219 Beiträge

11.01.2016 - 21:53 Uhr

Windows 10 führt dieses Konzept fort, aber mit dem Dampfhammer. Farbverläufe wurden durch einfache Farben ersetzt. Ein plumpes 8-bit grau, wie man es von Windows 3.11 kennt. Buttons, die den Fokus haben bekommen einen 2-Pixel Rand, was dann schon aufdringlich dick ist (sieht man jetzt hier im Beispiel nicht). Inaktive Steuerelemente werden plump dunkelgrau, heftig. Die Umrandung des gerade aktiven Steuerelements ist fast schon knallblau, jedenfalls kontrastreicher als bei Windows 8. Von mir Erhält der verantwortliche Designer den Negativ-Award für die liebloseste Umsetzung einer grafischen Oberfläche, die ich mir je erahnt haben könnte.

Werden wir uns für den Rest der Zeit, in der Windows 10 am Markt sein wird (was ja laut MS quasi ewig sein soll) daran gewöhnen müssen, dass Programme ohne weitere Eingriffe ins Design eben wieder wie im vorletzten Jahrzehnt aussehen?

Wie seht ihr das? Findet ihr das hübsch, ist es nur Gewöhnungssache?
WPF-Anwendungen sehen auf Windows 10 übrigens erst mal genau so aus. Ich sag's noch mal. Gegen Flat-Design habe ich prinzipiell nichts, im Gegenteil. Aber diese Umsetzung? Ohje..

Tut mir leid, dass ich die Threadstruktur gleich mit den 3 Riesenbildern so verunstaltet habe. War aber mit der Forensoftware ohne weitere Hilfsmittel nicht besser zu lösen. Nächstes mal werde ich wohl extern hosten.

11.01.2016 - 21:52 Uhr

Jetzt Windows 8.

Windows 8 führt erstmals den Flat-Style ein. Ein leichter, dezenter Farbverlauf hebt die Steuerelemente noch vom kahlen Hintergrund ab. Die Farbe ist angenehm, Umrandungen sind relativ dezent. Mir gefällt das insgesamt sogar. Nichts wirkt aufdringlich. Ein minimalistisches aber legitimes Design.

11.01.2016 - 21:52 Uhr

Hi. Ich habe einen groll gegen Windows 10, denn unter diesem System sehen meine Windows Forms oder WPF Applikationen aufgrund der übertriebenen Umsetzung des Flat-Designs ggü. Win7 oder 8 meiner Ansicht nach sehr hässlich und plump aus. 😜

Ich habe es in einer VM laufen und zum Testen mal ein paar meiner Tools darauf angetestet. Der erste Eindruck erinnert direkt an Windows 3.11.

Buttons sind keine Buttons mehr sondern einfach nur noch einfarbig 8-bit-grau-gefüllte Rechtecke mit Pixelborder ohne erkennbare Farbänderung beim Klicken. Keine Farbverläufe, keine runden Ecken, kein Schatten, keine Hover-Effekte. Nichts. Keine Transparenzeffekte mehr. Kein Aero-Glass. Alles einfarbig und langweilig. Dieses Design ist nicht simpel, es ist plump. Meiner Meinung nach fallen wir damit wieder auf Windows 95 Niveau zurück.

Im Folgenden seht ihr ein Vergleich eines Windows Forms Programms unter Windows 7, 8 und 10.

Hier mal ein Beispiel unter Windows 7. Wie gewohnt, alles relativ hübsch ausgeschmückt. Kann einem gefallen, muss natürlich nicht. Auf jeden fall sind hier verschiedene Steuerelemente klar als solche erkennbar und egal in welchem Zustand sie sich befinden, sie sehen nicht aufdringlich aus. Hat alles einen relativ natürlichen Look.

17.12.2015 - 21:21 Uhr

Hi,

ich würde mir gerne ein Tool für mich selbst schreiben, welches verschiedene Dateien und Ordner überwacht. Bei bestimmten Ereignissen sollen Dateien und Ordner erstellt bzw. verschoben werden. Darüber soll mich das Tool informieren und mir möglichst einfach einen schnellen Zugang zu diesen Dateien verschaffen. Ein Bordmittel wäre jetzt, einfach ein Explorerfenster zum Pfad der sich dort befindlichen Dateien zu öffnen, wo ich diese dann als Datei- bzw. Ordnersymbole sehen und weiterverarbeiten kann.

Gibt es aber nicht auch eine Möglichkeit, diese Datei- und Ordnersymbole einfach in einem Form zu rendern, aber so, dass ich diese ganz normal handhaben kann, wie im Explorer. Ich möchte sie markieren können, einen Auswahlrahmen drum rum ziehen können, per rechtsklick soll das entsprechende Kontextmenü erscheinen und wenn ich sie per Drag'n'Drop aus der Form herausziehe sollen sie sich an die entsprechende Stelle kopieren lassen. Quasi so wie als wäre es ein Ausschnitt eines Explorer-Fensters.

In Listenform habe ich das bei diversen Tools schon gesehen. Geht so etwas auch mit Bordmitteln oder muss man da tiefer bzw. aufwändiger ins System einsteigen?

Danke!
mfg, Paul

13.12.2015 - 10:27 Uhr

Auch gar nicht übel 😉 Aber ich preferiere die Lösung mit dem Desktop. Das Tool ist übrigens nur für mich persönlich, für niemanden sonst. Ansonsten würde ich dir recht geben und eine solch unkonventionelle Lösung nicht aufs Publikum loslassen.

13.12.2015 - 00:50 Uhr

Ohje,

die Essenz aus diesen Beiträgen ist dann wohl, dass es schlichtweg keine saubere und mit vertretbarem Aufwand erreichbare Möglichkeit gibt, auf den Desktop zu zeichnen?

Schade.

Der Desktop wäre der ideale Ort für meine Daten, denn ich schaue immer mal wieder automatisch dort vorbei, d.h. die Daten werde ich automatisch irgendwann zu Gesicht kriegen. Es geht nicht darum, die Daten dauerhaft im Blick zu behalten sondern immer mal wieder beiläufig. Aber ohne dafür ständig ein Fenster aufrufen zu müssen, geschweigedenn einen ganzen Bildschirm dafür zu verbraten.

Auf CodeProject habe ich gerade ein Projekt gefunden, welches Schneeflocken auf den Desktop zeichnet. Die befinden sich zwar vor den Desktopicons aber bleiben schön brav auf Desktop-Ebene. Das wäre schon mal was!

04.12.2015 - 22:08 Uhr

Hi,

ich würde gerne bestimmte Daten direkt auf meinem Desktop visualisieren, so dass ich sie dort permanent im Blick habe. Die sollen frei designed werden können und in echtzeit, minimal sekündlich, aktualisiert werden können. Zunächst könnte es sich hierbei erst mal um simplen Text handeln. Die Visualisierung soll auf gleicher Ebene mit dem Desktophintergrundbild liegen und nicht anklickbar sein. Wichtig ist, dass sie vom Desktop aus immer zu sehen ist und niemals verschwindet. Auch nicht, wenn man die "Desktop-Anzeigen" Funktion von Windows nutzt.

Welche Möglichkeiten habe ich mit C# hier? Ich hatte in der Vergangenheit hierzu schon verschiedene Threads gelesen aber eine endgültige Lösung hat sich nie ergeben. Eventuell ergibt sich in einer neuen Diskussionsrunde hier etwas.

lg 🙂

09.10.2014 - 10:13 Uhr

Hi,

danke soweit für die Hilfe! Das muss aber irgendwie projektspezifisch sein. Wenn ich ein neues Projekt erstelle und dort eine ähnliche Situation hervorrufe werden die Exceptions behandelt und das Programm bricht ab. Ich kann mich auch nicht erinnern da je was umgestellt zu haben, zumal die VS2010 Installation noch recht jungfräulich ist 🙁

Habe grade den Code mal in ein neues Projekt übertragen, gleiches Verhalten, es muss also an Code/VS-Einstellungen liegen. Aber ich finde die Einstellung nirgendwo 🤔

08.10.2014 - 23:52 Uhr

Hi,

ich habe hier ein komisches Problem in meinem Projekt. Mir fiel auf, dass die Bearbeitung des Eventhandlers irgendwo zwischendrin offenbar einfach aufhörte. Mittlerweile ist mir auch klar, was dazu führt, nämlich eine nicht initialisierte Liste. Also habe ich mal alles unnötige aus dem Code entfernt und ihn aufs wesentliche reduziert um den Fehler besser nachzustellen.

  public partial class Form1 : Form
    {
        class DesktopCleanerDataset
        {
            public List<string> ignoredExtensions;
            public List<string> ignoredElements;

            // Initialisierung
            public DesktopCleanerDataset()
            {
                ignoredExtensions = new List<string>();
                //ignoredElements = new List<string>();
            }
        }

        DesktopCleanerDataset data;


        public Form1()
        {
            InitializeComponent();
            data = new DesktopCleanerDataset();
        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            Console.WriteLine("#1");
            data.ignoredExtensions.Clear();
            Console.WriteLine("#2");
            data.ignoredElements.Clear();
            Console.WriteLine("#3");
        }
    }

data.ignoredElements.Clear(); kann nicht funktionieren, da ich die Initialisierung oben auskommentiert habe.

Dennoch erzeugt das Programm im Debug-Modus von Visual C# Express 2010 keinen Laufzeitfehler oder sonstiges. In der Console erscheint nur

#1
#2

und das wars. Das Programm arbeitet ganz normal weiter aber die Bearbeitung des Eventhandlers hört ab dem Fehler einfach auf.

Hab ich da irgendetwas verstellt oder warum krieg ich hier keinen Laufzeitfehler ausgegeben?

09.09.2014 - 12:02 Uhr

Hi,

sicher gabs das Thema schon öfters aber so die gewünschte Antwort hab ich jetzt nicht gefunden.

Es geht darum, dass ich in diversen Tools, die ich mir selber schreibe, gerne Daten abspeichern und beim nächsten Aufruf wieder zur Verfügung hätte. Das können unterschiedlichste Datentypen/Objekte sein. Klar, das erste was einem dazu einfällt ist Serialisierung. Aber da gehen die Fragen los.

Wie strukturiere ich diese Daten?
Schreib ich mir einfach eine Lade- und eine Speichermethode in denen die entsprechenden Variablen dann alle zusammengesammelt und serialisiert/deserialisiert werden? Find ich nicht sehr geschickt denn jedes mal wenn neue zu speichernde Variablen hinzukommen muss ich beide Methoden anpassen.
Schreibe ich mir eine Struktur oder eine Klasse, die als Container für sämtliche zu speichernde Variablen dient? Dann muss ich sie nur noch ein mal instanziieren und dann das Objekt serialisieren und muss die Lade- und Speichermethode nicht jedes mal anpassen. Bei einer Klasse kann ich im Konstruktor sogar noch eine Initialisierung vornehmen, sollte das Objekt nicht deserialisiert werden können und neu erstellt werden müssen (z.B. beim ersten Programmstart).
Hat aber die Unschönheit an sich, dass ich alle zu speichernden Daten nur über den Objektnamen ansprechen kann.

Oder ist Serialisierung in eine Datei doch nicht das Optimum?

Wo sollte die Datei, in die man serialisiert überhaupt abgespeichert werden?
Ich hab mir jetzt mal Environment.SpecialFolder.LocalApplicationData ausgesucht.

Wie macht das der Profi?

12.02.2014 - 22:04 Uhr

Hi,

ich arbeite mit diverser Layouting-Software bei der es öfter mal etwas nachzuzeichnen oder Objekte anhand einer Schablone anzuordnen gibt. Leider unterstützen diese Programme es nicht, einfach mal ein Hintergrundbild als Schablone in die Arbeitsebene zu legen.

Daher habe ich mich gefragt, ob es unter Windows 7 / 8 irgendwie möglich ist, ein halbtransparentes Bild irgendwo auf dem Bildschirm zu platzieren. Und zwar so, dass es immer ontop ist aber für den Mauszeiger vollkommen unexistent erscheint. Es soll einfach nur angezeigt werden und sich ansonsten so verhalten als wäre es garnicht da. Steuern kann man es ja dann über eine kleine Toolbox.

Ist das überhaupt machbar?

lg PoWl

05.05.2013 - 20:09 Uhr

Danke für die Info! Aber die Frage war eher an den TO gerichtet, im Sinne von, ob er sein Projekt schon weitergeführt hat.

05.05.2013 - 11:16 Uhr

Finde das Thema auch im Bezug auf Home-Automation ziemlich interessant 😃
Gibts schon Neuigkeiten?

17.02.2013 - 02:47 Uhr

Hey, interessantes Thema, sowas suche ich auch! Möchte mir allerlei Infos auf dem Desktop anzeigen lassen, damit ich sie ständig im Überblick behalte während ich mit dem PC arbeite.

Hast du das Problem schon gelöst mittlerweile?

C# - Eine Form auf den Desktop kleben - BottomMost

Dieser Code funktioniert bei mir, allerdings nicht wenn das Fenster transparent ist! Eigentlich will ich mir einfach nur ein paar eng aneinanderliegende Buttons auf den Desktop legen um ihn mit ein bisschen Steuerungsfunktionalität zu versehen. Darf dann halt keine Icons drunter verschwinden lassen.

Jedoch sieht das doof aus wenn das Fenster dabei farbig ist, ich hätte gern, dass man den Desktophintergrund noch hindurchsieht.

08.07.2012 - 20:39 Uhr

Ehrlich gesagt habe ich zuerst in einem anderen Forum gepostet, und dann ist mir klar geworden, dass ich hier auch eine große Chance auf die Lösung habe, weshalb ich auch hier postete. Ja, den fast gleichen Text.

Ich hab im anderen Forum aber gleich daraufhin auch die Lösung geschildert 😃

08.07.2012 - 18:36 Uhr

Jepp, daran dachte ich auch. Allerdings habe ich mal vorhin einen Test in Visual Studio mit 2 übereinanderliegenden Labels gemacht. Da kann er sauber auseinanderhalten zu welchem Label der Doppelklick gehört.

In der Registry steht der Wert von DoubleClickWidth bzw. Height auf 50. Erscheint mir etwas arg hoch falls es sich dabei um Pixel handelt. Allerdings müsste das ja dann auch noch bis zum übernächsten bzw. vorletzten Listeneintrag reichen. Ich schau mir mal an wie da die Standardwerte sind! Danke für den Tipp schonmal!

//Edit: DANKE! Das wars. Der Standardwert für diese Einträge ist 4. Und ich würde meine Hand dafür ins Feuer legen, dass die Software meines Touchscreens diese Werte so hoch gesetzt hat, dass man mit einem Doppeltouch noch einen vernünftigen Doppelklick hinkriegt.

Ich hab gewusst, jemand durchschauert hier das Problem! :> In anderen Foren verstehen die den Sachverhalt garnicht richtig.

08.07.2012 - 14:43 Uhr

Hi,

das hier ist zwar eigentlich ein C# Forum aber ich glaube dieses Problem hier kann am besten von Programmierern gelöst werden, die sich in den Systeminterna doch ein wenig mehr auskennen, daher poste ich es hier:

seit kurzem ist das Mausklickverhalten von meinem Rechner in Listen.. Auflistungen sehr seltsam. Mit Listen meine ich z.B. die Liste im Gerätemanager, im foobar2000 mp3player, die Kontaktliste in Trillian, die Inbox-Liste in Thunderbird oder Outlook,.. es handelt sich ja offenbar immer um das gleiche Windows-Steuerelement.

Nun ist es normalerweise ja so: wenn ich ein Listenelement anklicke wird dieses angewählt. Wenn ich ein beliebiges noch unangewähltes Listenelement doppelklicke wird dieses angewählt und eine entsprechende Aktion ausgeführt, in meinem mp3player z.b. wird der Song abgespielt oder im Geräte-Manager werden die Geräteeigenschaften angezeigt.

Neuerdings aber, wenn ich ein Listenelement anklicke und kurz danach (genauer genommen innerhalb des in Windows eingestellten Doppelklickintervals, habe ich rausgefunden) das direkt darüber oder darunterliegende Listenelement einmal anklicke, dann wird dieses nicht angewählt sondern es wird gleich die Doppelklick-Aktion ausgeführt... und zwar OHNE dass dieses Element dann angewählt ist. Das geht normalerweise ja schonmal überhaupt nicht. Durch keine mir bekannte Mausaktion kann man ein Listenelement "doppelklicken" ohne es dabei zwangsläufig anzuwählen. Es wird also nur das reine doppelklick-Event gefeuert. Das tritt übrigens auch nur beim direkt darüber oder darunterliegenden Listenelement auf. Wenn ich das mit dem übernächsten oder vorletzen Element mache wird es ganz normal angewählt, wie es sein sollte. Irgendwie scheint er nicht mehr zu kapieren wenn sich die Maus seit dem letzten Klick über ein anderes Listenelement bewegt hat. Wenn ich dann noch einmal Klicke feuert er nicht das Klick- sondern gleich das Doppelklick-Event, was zum beschriebenen Verhalten führt.

Ich habe schon mehrere Mäuse getestet, am Maustreiber kann es also eher nicht liegen. Ich kann nicht genau sagen, wann das Problem das erste mal aufgetreten ist. Auf jeden Fall nervt es total. Ich hatte dummerweise bisher noch keinen Virenscanner, hab mir nun einen besorgt aber gefunden hat er nix. Systemwiederherstellung hat leider keinen Effekt gebracht und ich habe keine Wiederherstellungspunkte gehabt, die alt genug sind.

Hat jemand eine Idee was da passiert sein könnte und wie ich das ohne eine Neuinstallation des Systems wieder geregelt bekomme?

lg PoWl

07.07.2012 - 00:14 Uhr

Den Mousecursor abstellen? Wie was?
Also den Cursor nur unsichtbar zu machen bringt mir leider nichts, falls du das meinst.

Ich habe 2 Bildschirme, den Hauptbildschirm und den Touchscreen. Sobald ich auf den Touchscreen tippe springt der Mauscursor erstmal dort hin und mein Finger verhält sich wie die linke Maustaste. Sobald ich den Touchscreen berühre gibt es ein MouseDown und sobald ich den Finger wieder abhebe ein MouseUp.

Ich möchte aber, dass nach dem Touch die Maus wieder an der Stelle ist an der sie zuvor auf dem Hauptbildschirm auch schon war, bevor die Touchscreensoftware sie auf den Touchscreen gesetzt hat. Und das soll genau dann passieren sobald der MouseUp erfolgt während der Cursor auf dem Touchscreen ist.

Deswegen muss ich den MouseUp irgendwie global erkennen.

lg PoWl

06.07.2012 - 18:17 Uhr

Ich bin nur Hobbyprogrammierer, finde das Konzept von WPF eigentlich ziemlich super, die Oberfläche mit XAML zu beschreiben gefällt mir sehr gut. Mit WPF kann man richtig schicke Anwendungen kreiieren, was mit WinForms nur über Umwege oder einfach mal überhaupt nicht möglich ist. Was mich jedoch an der WPF stört ist, dass Microsoft viel zu wenige Steuerelemente standardmäßig bereitstellt. Sobald es nur ein wenig spezieller wird muss man sich sofort selber was zusammenbasteln oder was von Drittanbietern nehmen (was dann u.U. sogar noch kostenpflichtig ist). Meiner Meinung nach sollte es da ne immense Anzahl geben die erstmal alles abdeckt und wenn man dann noch was spezielles braucht kann mans sich auch aus den schon vorhandenen zusammenbasteln.

Ich wüsste auch gerne mal wies mit WPF wohl weitergehen wird oder ob man sich da lieber nach Alternativen umschauen sollte bevor man sich da mit ner aussterbenden Technologie beschäftigt und damit seine Zeit verschwendet.

06.07.2012 - 18:05 Uhr

Hi,

ich habe hier einen Touchscreen und möchte verhindern, dass beim Touchen der Mauszeiger auf dem Screen verbleibt sondern möchte mir ein Tool schreiben, das ihn dann an die vorherige Stelle zurücksetzt. Das klappt soweit auch schon, allerdings löse ich das derzeit noch relativ unelegant indem ich per Timer einfach ständig die Mausposition abfrage und den Zeiter nach einer kurzen Wartezeit sofort zurücksetze sobald er auf dem Touchscreen ist.

Ich würde ihn nun gerne aber erst dann zurücksetzen sobald ich den Finger tatsächlich vom Touchscreen runternehme, also wenn quasi ein MouseUp erfolgt.

Kann ich da irgendwie ne Windows Message oder sowas abfangen um festzustellen, wann die Maustaste losgelassen wurde?

lg PoWl

21.06.2012 - 01:46 Uhr

Hi,

wie ist es in der WPF am einfachsten eine mp3 auf einer bestimmten Soundkarte abzuspielen? Bin grade dabei mir ein Wecker-Tool zu schreiben aber möchte dafür die Soundkarte wählen.

Geht das irgendwie mit dem System.Windows.Media.MediaPlayer? Oder muss ich da schon zu sowas wie bass.NET greifen?

lg PoWl

17.05.2012 - 15:05 Uhr

Hi,

ist es in der WPF irgendwie möglich an einen Eventhandler auch Parameter zu übergeben?

Ich habe mehrere Buttons und würde gerne für alle einen gemeinsamen Eventhandler verwenden, welcher dann nur noch einen Parameter erwartet um zu wissen, wie er sich verhalten soll. Im XAML-Code würde ich diesen Parameter dann fest einspeichern.

<Button Click="Eventhandler(2)" /> So z.B., wobei die 2 den Parameter darstellt.

Gibts da was?
lg PoWl

12.05.2012 - 12:22 Uhr

Hi,

für ein simples Programm, in dem ich lediglich Termine eintrage, also Datum, Text, Priorität, noch ein paar Zahlen zeilenweise eintrage benötige ich eine Speicherfunktion um die Daten in einer Datei abzuspeichern.

Was ist die unkomplizierteste Methode die ich dafür verwenden kann? Einfach alles in ne txt-Datei speichern und mich um die Trennung der Variablen selbst kümmern? Oder kann ich da irgendwas anderes nehmen, das ich dann mit SQL oder noch einfacher abfrage?

lg PoWl

16.04.2012 - 13:52 Uhr

Ahh, die werden aber trotzdem ins Programm mit reinkompiliert? Wozu gibt es dann noch die Option, die Datei ins Ausgabeverzeichnis zu kopieren?

16.04.2012 - 13:01 Uhr

OK, d.h. es ist geschickter einfach die Bilder in die Projektmappe zu schmeißen und sie als Resource (bzw in meinem Fall lieber Eingebettete Resource) einzustellen. Aber wie weise ich dann über den C#-Code meinem Image-Control das andere Bild zu?

16.04.2012 - 09:50 Uhr

Hi,

ich bin mittlerweile völlig verwirrt wir in der WPF und in Visual Studio die Resourcen verwaltet werden.

Ich habe ein Image-Control, möchte da zunächst ein kleines Icon anzeigen, welches ich dann zu bestimmten Ereignissen mittels Code wechseln kann. Ich weiß aber nun nicht wirklich wie und wo ich die Bilder ins Projekt einfügen soll.

Wenn ich die Properties öffne, in den Reiter Resourcen gehe und meine vorhandenen zwei Bilder (sticky1.gif und sticky2.gif) da reinlade dann erscheint im Projektmappenexplorer ein Ordner Resources indem ich diese beiden Dateien finde. In den Properties heißen sie dann sticky1 und sticky2. In den Eigenschaften der Dateien sind diese aber bei der Einstellung "Buildvorgang" nicht als Resource gekennzeichnet. Warum nicht? Find ich völlig unlogisch, das hab ich mal umgestellt. Im XAML-Code kann ich leider nirgendwo eine Definition dieser Resourcen finden. Auch wenn ich in die Eigenschaften des Image-Controls gehe und das Bild aus den Resourcen wählen will bekomm ich hier nichts angezeigt. Geschweigedenn, dass ich das Bild über sticky.Source = (ImageSource)FindResource("sticky2"); ändern könnte (sticky ist der Name des Image-Controls).

Wenn ich ein Bild stattdessen über das Image-Control ins Projekt lade erscheint es im Projektmappenexplorer nicht in einem Resources sondern in einem Image-Ordner. Im Image-Conrol XAML-Code erscheint dann Source="/ToDoToday2.0;component/Images/sticky1.gif". Was ist das denn jetzt?? ("ToDoToday2.0" ist der Projektname)

Auch wo die Resource-Dateien im Projektmappenexplorer überhaupt nicht mehr vorhanden sind so stehen sie in den Properties immernoch drin. Das scheint völlig zusammenhanglos zu sein.

Kann mich da mal jemand aufklären warum es scheinbar 834 verschiedene Wege gibt, ein Bild ins Projekt einzubinden und welcher davon der eine Weg ist, der richtig funktioniert?

lg PoWl

03.01.2012 - 13:19 Uhr

Hi,

gibt es irgendeine zuverlässige Methode wie man erreichen kann, dass ein Programmfenster immer auf dem Desktop angezeigt wird? Selbst wenn man den "Desktop Anzeigen"-Button von Windows klickt sollte es noch im Vordergrund bleiben. Es soll unter keinen Umständen möglich sein, das Programmfenster irgendwie versehentlich in den Hintergrund zu befördern, ebenso darf sich kein anderes Programmfenster hintendran drängeln.

Geplant ist so eine art Desktop-Minianwendung, die ich aber in C# schreiben möchte. Im Einfachsten Fall steht da nur ein bisschen Statusinformationen und ein paar Buttons. Das Programm soll rahmenlos und transparent sein.

Gibt es da eine zuverlässige Methode?
lg PoWl

02.01.2012 - 17:33 Uhr

Hi,

da hätte ich aus gegebenem anlass auch eine Frage zu. Wenn man nun seine Arbeitsfläche komplett mit Elementen in einem Canvas aufbaut. Wie verschiebt man dann den Bildausschnitt der angezeigten Arbeitsfläche? Dann müsste man doch alle bestehenden Elemente auf einmal verschieben. Ist das so optimal?

lg PoWl

03.08.2011 - 10:27 Uhr

Hi,

ich möchte mir ein Programm schreiben, das einfache Statusmeldungen oder einfach nur irgendwelche Sprüche mit beliebiger Schriftart, vielleicht noch mit einem kleinen halbtransparenten Bildchen auf den Desktop zeichnet. Das ganze soll allerdings auch wirklich auf dem Desktop sein, d.h. keine Spielchen von wegen, dass die Zeichnung gelegentlich verschwindet, über den Icons oder noch schlimmer über anderen Fenstern liegt. Sie soll fest mit dem Desktop, direkt vor dem Desktophintergrund aber hinter Icons, Fenstern und sonstigem Erscheinen.

Wie wäre soetwas machbar?

lg PoWl

07.06.2011 - 15:26 Uhr

minimaler Resourcenverbrauch.. da bin ich mal gespannt. Nachdem ich schon erfahren hab, dass ein Netbook unter Benutzung der Windows Miniprogramme quasi nicht mehr benutzbar ist obwohl diese eigentlich eine dermaßen geringe CPU-Belastung darstellen sollte.

07.06.2011 - 09:58 Uhr

Ribbons, Tiles, Webzentrierung, ... ich bin zwar erst 29 aber ich komme mit der Umstellung schon nicht mehr klar. Viel zu sehr bin ich an alte Menüleisten und spartanisches aber funktionales Design gewöhnt.
[...]

Ich bin erst 22 und du sprichst mir aus der Seele!!

22.05.2011 - 18:45 Uhr

Jein,
solange kein Stecker am Netbook angeschlossen ist gibt dieses den Sound der internen Karte auf den Lautsprechern aus und das ist in dem Fall unerwünscht. Auch würde ich mir gerne das Gefuddel ersparen, jedesmal nen Dummy-Stecker reinstecken zu müssen nur um die Soundausgabe zu verhindern.

lg PoWl
Übrigens: Meinen Respekt für dein Digijay-Projekt! 😃

22.05.2011 - 18:35 Uhr

Latenzen von 100-200ms sind nicht schlimm. Für Filme schauen und Musik abspielen reicht es, ohne dass man irgendwie merkt, dass der Sound nicht sofort der Bedienung folgt. Richtig, wichtig ist nur die Synchronität.

Die neue Soundkarte wäre durchaus in der Lage über ASIO angesteuert zu werden, aber ich muss ja erstmal den Stereomix recorden.

Da ich die gute Soundkarte als externes USB-Gerät anschließe und ich weiterhin noch eine Interne habe, kann ich ja diese einfach zum Abspielen benutzen und dort den Stereomix abgreifen. Geht das eigentlich auch bei heruntergeschaltener Systemlautstärke? Das wäre dann quasi nicht der Stereomix sondern nur der Wave-Kanal, sofern es bei Win7 sowas noch gibt.

22.05.2011 - 08:49 Uhr

Einen Soundstream auf beliebigen Kanälen der Soundkarte auszugeben dürfte kein Problem sein herbi. Was eigentlich meine Frage war, ob es möglich ist den Stereomix von Windows abzufangen und ohne große Latenzen umgerechnet auf einer externen Soundkarte auszugeben.

21.05.2011 - 10:21 Uhr

Oh herbivore ich glaube da hast du mich falsch verstanden bzw. ich mich ungeschickt ausgedrückt. Ich meine damit nicht die "Systemsounds", also die Klänge die bei bestimmten Ereignissen ertönen soundern den Systemsound, also der Sound der auf dem Mischkanal des Windows-Mixers landet und letztendlich aus der Soundkarte ausgegeben wird.

Eine 5.1-wave? Ich muss gestehen ich weiß nichtmal wie man überhaupt Sound ausgibt und was es da für Dateiformatstandards gibts, ob eine wav-Datei beliebige Kanäle beinhalten kann oder ob diese nur für Mono oder Stereo ausgelegt ist. Und wenn doch, ob diese Kanäle dann nicht manchmal aufgrund fehlender Standardisierug auf den völlig falschen kanälen landen.

20.05.2011 - 13:14 Uhr

Ich kann da nicht jede xbeliebige Soundkarte nehmen da die Qualität hier doch relativ stark schwankt, und das hört man auch.

Außerdem denke ich, dass es keine Soundkarte gibt, die:

  • Verteilung des Systemsoundkanäle L und R auf einen X-beliebigen Soundkartenausgang
  • Anwendung von DSPeffekten wie:
    • Tiefpassfilter
    • Hochpassfilter
    • Parametrischer Equalizer
    • Zeitliche Verzögerung

zulässt. Wenn doch nehme ich natürlich gerne soetwas, denn das wäre die Lösung meines Problems!

20.05.2011 - 11:52 Uhr

davon kann ich bei den geforderten kriterien leider nicht ausgehen 😦

20.05.2011 - 11:46 Uhr

Hi,

für ein Car-Hifi Projekt ist es nötig, dass ich den Stereo-Sound des Computers irgendwie auf 5 Kanäle aufteile und noch diverse DSP-Effekte darauf lege (Hochpassfilter, Tiefpassfilter, Laufzeitkorrektur, Parametrischer Equalizer...)

Hierfür wollte ich auf einer Mehrkanal-Soundkarte die einzelnen Kanäle ausgeben. Aus dem MP3-Player heraus geht das ja ganz gut, allerdings kann dann kein anderes Programm irgendwie Sound ausgeben und das ist eher suboptimal.

Ist es irgendwie (für normalsterbliche aber ehrgeizige Hobbyprogrammierer) möglich den Systemsound abzufangen, umzurechnen und dann erst auf der Soundkarte auszugeben?

Zielsystem soll Windows7 werden.

lg PoWl

12.05.2011 - 09:29 Uhr

Hi,

ich möchte mir im Zuge meines Car-Hifi-Projekts eine eigene Software für meinen Car-PC entwickeln (ich rede mal bewusst von "entwickeln" 😉 ). Die soll natürlich ein sehr individuelles Bedienungskonzept beinhalten und vollkommen durchgestyled sein.

Konkret heißt das, dass sämtliche Schaltflächen grafisch schön gestaltet sind, beim Drücken (mit dem Finger auf den Touchscreen natürlich) z.B. kurz schön animiert aufleuchten. Beim Wechsel eines Screens sollen sämtliche Elemente auf elegante Art und weise ein- und ausfliegen, kombiniert mit Überblendeffekten. Der Hintergrund der einzelnen Screens soll nicht nur einfach eine Grafik sein sondern wenn Möglich noch sowas schönes wie einen blass transparenten Spectrum-Analyzer oder einen Oszillografen anzeigen (wenn die Musik läuft). Wenn man an die Oberflächen von iPhone und Android Smartphones denkt kann man sich ungefär vorstellen, worauf ich hinaus will.

Nun meine zentrale Frage: Wie krieg ich das gescheit und perfomant hin (kein Geruckel! Alles Butterflüssig!)

Geht das mit WPF? Oder ist das ganze schon so anspruchsvoll, dass ich mich dafür besser in XNA, Managed Direct X oder so einlese?

lg PoWl

05.04.2011 - 11:36 Uhr

Danke soweit schonmal. Im Moment geht es nur darum ob es überhaupt machbar ist für jeden Kanal eigene DSP-Effekte zuzuweisen (und ggf. selbst zu implementieren) und alle Kanäle gleichzeitig rauszuhauen. ASIO-Unterstützung hat die angepeilte Soundkarte. Wenn es kein Problem ist BASS.Net damit zu verheiraten, gerne.

Umgeht man mit ASIO eigentlich auch den Windowsmixxer und alles, was mir da noch so reinpfuscht?

01.04.2011 - 09:06 Uhr

Hi,

um diverse DSP-Effekte über meinen Car-PC zu realisieren und um jeden Lautsprecher einzeln ansteuern zu können (es sind 5 Stück) wollte ich die Bass.NET Bibliothek und eine entsprechende Soundkarte mit mehreren Ausgängen nutzen.

Meine Frage ist nun:
Es es mit Bass.NET problemlos möglich das quasi gleiche Signal vorher durch verschiedene DSPs zu schicken (Equalizer, Bandpassfilter, Laufzeitverzögerungen) und dann auf den verschiedenen Kanälen absolut synchron auszugeben, d.h. ohne, dass zwischen verschiedenen Kanälen bei gleichen Signalen irgendwelche Zeitversätze bestehen.

lg PoWl

28.03.2011 - 22:29 Uhr

Hi,

ist das richtig, dass ein C# Programm, welches für beliebige OS erstellt wurde nicht automatisch unter 32- und 64Bit Systemen lauffähig ist? Wird es unter 64Bit nur emuliert wenn es für 32Bit erstellt wurde und ist es unter 32Bit nicht lauffähig wenn es für 64Bit erstellt wurde?

Warum spielt da der JIT-Compiler keine Rolle mehr, der doch eigentlich genau dafür da ist, das Programm auf dem System just in time so zu kompilieren, dass es optimal lauffähig ist?

lg PoWl

22.03.2011 - 14:51 Uhr

Bingo. Danke!

Ein .Replace("\0", "") hinter jeder Zuweisung der Strings hat geholfen. Warum machen 0-Bytes solche Probleme, dass dadurch Text verschluckt wird?

Wie werden Strings bei .NET eigentlich im Speicher abgelegt? Sind es auch einfach Nullterminierte Byteketten wie in C?

lg PoWl

22.03.2011 - 11:05 Uhr

Hi,

ich habe das ganze nun folgendermaßen umgebaut:

            int i = 0;
            foreach (string filepath in mp3s)
            {
                i++;
                if (i > 10) { break; }

                StringBuilder addString = new StringBuilder();

                addString.AppendLine(Path.GetFileName(filepath));

                // ID3V1-Tag auslesen
                string Title = "";
                string Artist = "";
                string Album = "";
                string Year = "";

                FileStream fStream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                BinaryReader binReader = new BinaryReader(fStream);

                // Der ID3v1 Tag befindet sich in den letzten 128 Bytes der Datei
                fStream.Seek(-128 + 3, SeekOrigin.End);

                Title = Encoding.ASCII.GetString(binReader.ReadBytes(30));
                Artist = Encoding.ASCII.GetString(binReader.ReadBytes(30));
                Album = Encoding.ASCII.GetString(binReader.ReadBytes(30));
                Year = Encoding.ASCII.GetString(binReader.ReadBytes(4));

                binReader.Close();
                fStream.Close();

                addString.AppendLine("Title: " + Title + "Test1");
                addString.AppendLine("Artist: " + Artist + "Test2");
                addString.AppendLine("Album: " + Album + "Test3");
                addString.AppendLine("Year: " + Year + "Test4" + Environment.NewLine);

                textBox1.Text += addString;
}

bei textBox1.Text += addString; habe ich einen Haltepunkt gesetzt und mir mittels Debugger den Inhalt von addString anzeigen lassen:

?addString
{50 Cent - In Da Club [Album Version (Explicit)].mp3
Title: In Da Club [Album Version (ExpTest1
Artist: 50 Cent}
    Capacity: 204
    Length: 203
    MaxCapacity: 2147483647

Das ist sogar noch weniger als bei der ersten Version. Insgesamt sieht die Ausgabe nun folgendermaßen aus und stimmt somit hinten und vorne nicht mehr:

50 Cent - In Da Club [Album Version (Explicit)].mp3
Title: In Da Club [Album Version (ExpTest1
Artist: 50 CentAaron Mayk, Dani Toro, Karlos Wilk - Hero (Original Mix).mp3
Title: Hero (Original Mix)Aaron Mayk, David Pareja, Jo Cappa - Fantasy Girl 2010.mp3
Title: Fantasy Girl 2010Abigail Bailex, Tom  Jerry - Touch Me (Extended Mix).mp3
Title: Touch Me (Extended Mix)Afrojack - Replica (Original Mix) [Original Mix].mp3
Title: Replica (Original Mix) [OriginTest1
Artist: AfrojackAitor Galan, Eqalize Group, Roberto Sansixto - La Musica (Aitor Galan  Eqalize Group Remix).mp3
Title: La Musica (Aitor Galan & EqaliTest1
Artist: Aitor Galan, Eqalize Group, RoTest2
Album: House SelectionAkcent - Love Stoned (Eric Chase Remix) [Eric Chase Remix].mp3
Title: Love Stoned (Eric Chase Remix)Test1
Artist: AkcentAkon - Bananza (Belly Dancer) [Explicit].mp3
Title: Bananza (Belly Dancer) [ExplicTest1
Artist: AkonAlesha Dixon ft. Wiley - Radio (Klaas Remix Edit) [Klaas Remix Edit].mp3
Title: Radio (Klaas Remix Edit) [KlaaTest1
Artist: Alesha Dixon ft. WileyAlex Kenji, Federico Scavo - Gimme Five (Original Mix) [Original Mix].mp3
Title: Gimme Five (Original Mix) [OriTest1
Artist: Alex Kenji, Federico Scavo
22.03.2011 - 10:22 Uhr

Hi,

ich habe hier ein Programm das u.A. die ID3-Tags von mp3s auslesen soll. Komischerweise kommt es hierbei dazu, dass bei der Ausgabe in der Textbox unregelmäßig der Zeilenumbruch zwischen Artist und Album oder zwischen Album und Year fehlt. Zum Testen habe ich überall noch ein + "Testx" + eingefügt und dabei festgestellt, das dieses dann gleich auch verschluckt wird. Da ich mir das mit meinen bisherigen Programmierkenntnissen nicht erklären kann wollte ich mal fragen, woran das liegen kann.

            int i = 0;
            foreach (string filepath in mp3s)
            {
                i++;
                if (i > 10) { break; }

                textBox1.Text += Path.GetFileName(filepath) + Environment.NewLine;

                // ID3V1-Tag auslesen
                string Title = "";
                string Artist = "";
                string Album = "";
                string Year = "";

                FileStream fStream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                BinaryReader binReader = new BinaryReader(fStream);

                // Der ID3v1 Tag befindet sich in den letzten 128 Bytes der Datei
                fStream.Seek(-128 + 3, SeekOrigin.End);

                textBox1.Text += "Title: " + Title + "Test1" + Environment.NewLine;
                textBox1.Text += "Artist: " + Artist + "Test2" + Environment.NewLine;
                textBox1.Text += "Album: " + Album + "Test3" + Environment.NewLine;
                textBox1.Text += "Year: " + Year + "Test4" + Environment.NewLine + Environment.NewLine;

                binReader.Close();
                fStream.Close();

                textBox1.Text += "Title: " + Title + "Test1" + Environment.NewLine;
                textBox1.Text += "Artist: " + Artist + "Test2" + Environment.NewLine;
                textBox1.Text += "Album: " + Album + "Test3" + Environment.NewLine;
                textBox1.Text += "Year: " + Year + "Test4" + Environment.NewLine;
            }

Erzeugt je nachdem welche mp3-Dateipfade sich im filepath-Array befinden folgende Ausgabe in der Textbox:

50 Cent - In Da Club [Album Version (Explicit)].mp3
Title: In Da Club [Album Version (ExpTest1
Artist: 50 CentAlbum: Hip Hop 2 - The CollectionYear: 2007Test4

Aaron Mayk, Dani Toro, Karlos Wilk - Hero (Original Mix).mp3
Title: Hero (Original Mix)Artist: Aaron Mayk, Dani Toro, Karlos Test2
Album: House SelectionYear: 2010Test4

Aaron Mayk, David Pareja, Jo Cappa - Fantasy Girl 2010.mp3
Title: Fantasy Girl 2010Artist: Aaron Mayk, David Pareja, Jo CTest2
Album: House SelectionYear: 2010Test4

Abigail Bailex, Tom  Jerry - Touch Me (Extended Mix).mp3
Title: Touch Me (Extended Mix)Artist: Abigail Bailex, Tom & JerryAlbum: House SelectionYear: 2010Test4

Afrojack - Replica (Original Mix) [Original Mix].mp3
Title: Replica (Original Mix) [OriginTest1
Artist: AfrojackAlbum: Kontor Top Of The Clubs 2011.0Test3
Year: 2011Test4

Aitor Galan, Eqalize Group, Roberto Sansixto - La Musica (Aitor Galan  Eqalize Group Remix).mp3
Title: La Musica (Aitor Galan & EqaliTest1
Artist: Aitor Galan, Eqalize Group, RoTest2
Album: House SelectionYear: 2010Test4

Akcent - Love Stoned (Eric Chase Remix) [Eric Chase Remix].mp3
Title: Love Stoned (Eric Chase Remix)Test1
Artist: AkcentAlbum: Kontor Top Of The Clubs 2011.0Test3
Year: 2011Test4

Akon - Bananza (Belly Dancer) [Explicit].mp3
Title: Bananza (Belly Dancer) [ExplicTest1
Artist: AkonAlbum: Bananza (Belly Dancer) [GermanTest3
Year: 2005Test4

Alesha Dixon ft. Wiley - Radio (Klaas Remix Edit) [Klaas Remix Edit].mp3
Title: Radio (Klaas Remix Edit) [KlaaTest1
Artist: Alesha Dixon ft. WileyAlbum: Kontor Top Of The Clubs 2011.0Test3
Year: 2011Test4

Alex Kenji, Federico Scavo - Gimme Five (Original Mix) [Original Mix].mp3
Title: Gimme Five (Original Mix) [OriTest1
Artist: Alex Kenji, Federico ScavoAlbum: Kontor Top Of The Clubs 2011.0Test3
Year: 2011Test4
13.02.2011 - 22:59 Uhr

Ah, mit SetLength beschneide ich also die Datei am Ende.
Danke, das war wohl das, was ich gesucht habe. Ich melde mich hier ggf. nochmal wenn mir das Suchen des Offsets Probleme bereitet.

13.02.2011 - 19:10 Uhr

Hi,

ich habe für mein Programm eine einfache Textdateidatenbank.
Ein Eintrag pro Zeile, am Ende einer jeden Zeile befindet sich ein '\n'-Zeichen für den Zeilenumbruch.

Es ist eigentlich eine triviale Frage aber welches ist in C# die geschickteste Methode um eine bestimmte Anzahl an Zeilen am Ende der Datei zu entfernen ohne, dass ich alles erst in ein Array einlese, das Array dann beschneide und eine neue Datei schreibe oder ohne dabei eine temporäre Datei verwenden zu müssen. Das ganze soll möglichst Speicherarm ablaufen. Ich möchte also nur die vorhandene Datei direkt verändern. Im Internet finde ich jedoch nur Snippets die das eben nicht so machen. Kann doch nicht sein, dass so einfache Dinge mit dem mächtigen C# nicht möglich sind? 🤔

lg PoWl

08.02.2011 - 12:52 Uhr

OK so weit bin ich noch nicht. Aber prinzipiell ist es also möglich, das ist schonmal gut zu wissen.
Damit wär das Thema auch erstmal abgeschlossen, danke!

08.02.2011 - 11:57 Uhr

Also das was ich da programmiere hat am Ende nicht mehr die Funktion eines normalen Windows Forms. Es ist eine Liste an Einträgen, die man auf doppelklick editieren können soll. Wenn man gerade einen Eintrag nicht editiert soll dieser allerdings ncith unbedingt grau erscheinen.

Wenn ich den Background setze nachdem die textBox deaktiviert wurde hat das leider keine Wirkung.

08.02.2011 - 11:42 Uhr

Hi,

ich möchte mein ToDo-Programm nun gerne in WPF umsetzen (bin gerade dabei mich darin einzuarbeiten) und da bieten sich textBoxen eigentlich gerade zu an, da sie mehrzeilig sind und ihre höhe automatisch dem Text, den sie beinhalten anpassen.

Jedoch soll man die dinger auch per drag&drop vertikal neu anordnen können und dazu ist es nötig, dass sie sich, wenn man nicht gerade dabei ist den Text in ihnen zu editieren wie starre labels verhalten.

Nun haben textBoxen ja normalerweise einen Rand und werden grau, wenn man isEnabled = false; setzt. Kann man sich dieser Eigenschaften irgendwie entledigen oder müsste man dazu ein komplett neues Steuerelement erstellen?

lg PoWl