Laden...

Forenbeiträge von trib Ingesamt 708 Beiträge

24.02.2016 - 09:16 Uhr

Dieses Internetz spuckt mit immer nur die Version Word Viewer 1 aus.
Die gibt es seit 2000.

Wikipedia aber sagt:

The last version made was compatible with Word 2007

Das wäre die Version v11 von 2007

Alternativen werden dort auch vorgeschlagen. So verkehrt lag ich nicht 😉

Development of the product is stopped ever since. In the meantime, Microsoft has made other ways of reading Office documents available: Word Web App (a freeware version of Microsoft Word) as well as WordPad (a native component of Windows) in Windows 7 and later can create, view or edit Office Open XML documents (.docx). WordPad also supports Rich Text Format (.rtf) and text files (.txt).[5][6]

No versions for any other operating system besides Windows were ever released.

Quelle: Microsoft Word Viewer

Mittlerweile gibt es aber auch gratis Versionen von Word, Excel und Powerpoint. Es wird wohl Werbung eingeblendet und ein paar Features fehlen (z.B. Inhaltsverzeichnisse erstellen). Finde aber gerade nicht wie sich die Version nennt...

23.02.2016 - 17:09 Uhr

Der Word oder Office Viewer wurde doch seit 2007(??) nicht mehr supportet und weiterentwickelt, wenn mich nicht alles täuscht.
Der war auch ziemlich buggy, weshalb ich den nicht weiter verfolgt habe.

Man kann aber in einerm WebControl per OneDrive Dokumente anzeigen.
Oder in Sharepoint mit WebApps.

23.02.2016 - 12:34 Uhr

Der Vollständigkeit halber:

Leider läuft meine Applikation auch mit dem CompactFramework, wo es MinimumSize nicht gibt.
Daher musste ich doch den unschönen Weg gehen, die Controls zu manipulieren.

    public static class AutoScroll
    {
        public static void SetForm(Form form)
        {
            SetControls(form.Controls);
            form.AutoScroll = true;
        }

        public static void SetControls(Control.ControlCollection controls)
        {
            foreach (Control control in controls)
            {
                if ((control.Anchor & AnchorStyles.Bottom) == AnchorStyles.Bottom && (control.Anchor & AnchorStyles.Top) != AnchorStyles.Top)
                    control.Anchor = AnchorStyles.Top;
                if (control.Controls.Count > 0)
                    SetControls(control.Controls);
            }
        }
    }

Die Änderung sollte vor dem setzen von AutoScroll durchgeführt werden.
Aufgerufen wird die Funktion, wenn ein gewisser Toleranzwert mit der Höhe der Form unterschritten wird.
Bei TabControls müsste man noch eine Ausnahme machen, da man i.d.R. innerhalb des Tabs die Scrollbar haben möchte und nicht außerhalb.

11.02.2016 - 10:11 Uhr

Hallo zusammen,

da musste ich doch gleich mal die Kompatibilität zu meinem heimischen Arbeitsplatz prüfen...
Docking Stationen sind nur mit einem Gerät kompatibel und unverschämt teuer. Daher habe ich mir eine USB3.0 Station von Targus gekauft, mit der ich bisher sehr zufrieden bin.

Scheint als könnte ich meinen Arbeitslaptop, das private Notebook und ein Surface damit betreiben 😃
Obwohl das Surface 4 es mir schon angetan hat 😄

03.02.2016 - 11:49 Uhr

Hallo Tam0r,

ich wüsste nicht dass das geht. Denn genau wie Du beschreibst, wird das Webservice-Objekt immer aus dem Referenznamen gebildet.
Nur so wäre es auch möglich zweimal den selben Webservice einzubinden.
In diesem Fall, würde die Klasse aber nicht erneut gebildet, da diese in der ersten Referenz schon vorhanden ist.

Dass "irgendwo" in einer anderen Projektmappe dieses Klasse ebenfalls schon vorhanden ist, kann VS, bzw. die svcutil nicht erkennen.

Alternativ kannst Du natürlich Deine Klasse selbst serialisieren und den WebRequest manuell versenden. Also komplett ohne Referenz/Dienstverweis arbeiten.

02.02.2016 - 14:46 Uhr

Hallo zusammen,

ich habe eine klassische Form mit ein paar Controls (Top, Left).
Darunter befindet sich eine multiline Textbox (Stretch, Stretch), welche sich den Platz nehmen soll, der vorhanden ist.
Wiederum darunter gibt es ein paar Menü-Button (Bottom, Left/Right).

Bisher war der Bildschirm nur minimal kleiner als die von mir vorgesehene Größe, oder größer. Beides kein Problem!

Nun habe ich den ersten Fall, dass diese Form auf einer Anzeige im Querformat dargestellt werden soll. Also so niedrig, dass einige Controls abgeschnitten werden.

Meine Quick & Dirty Lösung war ab einem gewissen Schwellenwert eine Scrollbar einzublenden.
Dann funktioniert aber weder Stretch, noch Bottom als Ausrichtung. Die Controls überlappen sich mit den Top-Controls, bzw. werden auf ein Minimum verkleinert.

Natürlich würde ich ungern für diesen einen Fall auf den "Luxus" verzichten, bei größeren Anzeigen auch mehr Text lesen zu können.
Auch alle Controls in einer Schleife auf Top & Left zu setzen finde ich nicht so elegant.

Wie könnte da ein einigermaßen eleganter Workaround aussehen?

25.01.2016 - 17:13 Uhr

Hallo NeoMephisto,

bitte verwende für den Code in Zukunft die Code-Tags

Die Klasse "Reifen" sieht schonmal ganz brauchbar aus. Sie verfügt über einen Konstruktor public Reifen(int groesse) welches beim Initialisieren (mit new ) die Möglichkeit bietet, die Größe direkt mitzugeben.
Möchte man später nochmal auf die Größe zugreifen, steht dazu das öffentliche Property Groesse bereit.

class Auto hingegen verfügt weder über einen Konstruktor, noch ist das Reifen-Objekt darin zugreifbar.

Du solltest versuchen zu verstehen, weshalb man innerhalb von "Auto" auf "Reifen" zugreifen kann, aber aus "Verwaltung" nicht auf "Auto" 😃

19.01.2016 - 16:46 Uhr

Das denke ich nicht. In Windows Embedded ist es zwar möglich mit einem Touchscreen zu arbeiten, jedoch werden Touchgesten überhaupt nicht unterstützt. Bedeute, sie werden wir eine Mauseingabe verarbeiten.
Genau wie der TE das beschreibt.

Das kommt aber darauf an um welches Embedded es sich handelt. Für XP gab es ja auch eine spezielle Touch-Version, die sich ggf. auch in der Embedded Version installieren ließe.
Dann darf das Embedded-System keinesfallls mit dem Zusatz "Compact" versehen sein. Dann handelt es sich nämlich um den Windows CE Nachfolger mit dem Compact Framework.
Die "Mobile" Version, die nun vollständig durch WindowsPhone abgelöst wurde, hat Touchgesten zwar unterstützt, aber imho auch nur die Mausgesten interpretiert und nicht zwischen Maus und Finger unterschieden.

Standard und Professional sind prinzipiell das vollständige Betriebssystem, wo alle nicht zwingend notwendigen Komponenten, Dienste und Treiber weggelassen wurden. Also nur Kernel, GUI und ein bisschen Netzerk-Treiber.

06.01.2016 - 08:22 Uhr

Der Pfad kann praktisch nur (ohne Palladin007´s Vorschlag einen Settings-Provider zu berücksichtigen) zwischen Anwendung und Benutzer gewechselt werden.
"Anwendung" erstellt die Datei in dem von Dir genannten Ordner, "Benutzer" im entsprechenden Users\Benutzername\Local\Roaming\usw.-Verzeichnis.
Macht Sinn wenn eine Applikation per RDP von mehreren Benutzern parallel ausgeführt wird.

Mittlerweile habe ich auch für so gut wie jedes Programm einen eigenen serializer. Wenn der einmal läuft, muss man da auch i.d.R. nie wieder ran 😃

Gruß
trib

06.01.2016 - 08:04 Uhr

Hi,

mit den Informationen wohlmöglich nicht.
Was ist denn ein "nicht nennenswertes Ergebnis"? Das selbe, wie bei dem original PDF?
Was hast Du denn versucht mit iTextSharp zu modifizieren?

Generell glaube ich, dass man herausfinden müsste weshalb sich das original PDF nicht versenden lässt und dann gezielt darauf reagieren.

Gruß
trib

08.12.2015 - 09:17 Uhr

Versuch es nicht unbedingt nur bei Google, sondern besser direkt bei z.B. CodePlex.
Da gibt es nicht nur alles was Du suchst, sondern auch die Erklärungen dazu.

Aber wie immer kommt es auf die Stichwörter an, die man eingibt.
Für die Markierung & Hervorhebung von bestimmten Wörtern im Text kommst Du wohlmöglich damit weiter:
Syntax Highlighting

09.11.2015 - 16:43 Uhr

Per EWS kann ich in beiden Fällen auf die entsprechenden Informationen zugreifen.
Allerdings spreche ich dann aus Outlook heraus direkt über https mit dem Exchange.
Ist sicherlich auch nicht optimal.

So komme ich aber an alle Elemente inklusive freigegebener Kontakte und Kalender.
Die EWS Adresse bekommt man über AutoDiscover heraus oder leitet die vom OWA ab.

06.10.2015 - 14:36 Uhr

Sonderlich elegant ist das aber nicht.
Sollte dennoch, wieder erwartend keine Antwort von dem Gerät kommen, friert das Programm ein und nichts geht mehr.
Daher sollte man besser auf das Event des Com-Ports setzen, wann neue Daten eingehen.
Alles hier nachzulesen:
Template Serial Port

29.09.2015 - 13:20 Uhr

Was spricht denn dagegen den Wert seriell zu übertragen, wie es das Arduino-Beispiel auch gezeigt hat?
Also die Werte nicht als Zeitinterval, sondern als Text übertragen. Macht imho mehr Sinn und erlaubt Dir auch später noch mehr damit anzustellen.

Beispiele für den Serial Port gibt es hier im Forum massenweise. Für den RasPi funktioniert das auch einfach aus Python (z.B. so).

02.09.2015 - 09:37 Uhr

Hallo inflames2k,

das ist ja exakt was ich schreibe. Erstmal eine "klassische" Form erstellen ohne den ganzen Symbol-Kram.
Dann kann man A) einen Dienst auf dem MDE starten, der den Barcode-Scanner aktiviert und die Daten an das Programm weiterreicht (Ähnlich wie z.B. bei ACD, wo der Scanner als Tastatureingabe fungiert)
Oder B) die von mir genannte DLL verwenden und implementieren. Dazu ist es nicht nötig von dieser Form abzuleiten oder diesen "SystemMonitor" aus dem Tutorial zu verwenden.

Wenn AxelA die von uns vorgeschlagenen Wege testet, kann ich auch gerne etwas Beispielcode bereitstellen. Habe den auf etwa 200 Motorola-Geräten von CE 5.0 bis Embedded 7 Compact laufen. Bis auf diese Symbol.Barcode.Reader-Klasse verwende ich reines CF ohne externe Komponenten.

Btw.: Die DLL ist von 2012, läuft ab CF2.0 und ich verwende die selbe für alle Geräte und CE Versionen. Habe also keinerlei Probleme mit der Kompatibilität. CF 1.0 ist imho eh unbrauchbar 😃

01.09.2015 - 16:58 Uhr

Hallo AxelA,

ich würde auch erstmal so vorgehen wie MrSparkle es beschreibt.
Eine neue Anwendung für Win CE erstellen und auf dem Gerät bereitstellen. Ohne irgendwelche Symbol Libraries o.ä.

Die benötigst Du ohnehin eigentlich nur, wenn Du selbst manuell den Barcode Scanner ansprechen möchtest. Dazu reicht es aber einfach die "Symbol.Barcode.Design.dll" zu referenzieren und zu verwenden.

Keine Ahnung was alles passiert, wenn Du von der Symbol-Form ableitest und was diese alles versucht zu manipulieren. In meinen Anwendungen habe ich auch nie Probleme mit dem AutoScaleMode gehabt.

14.08.2015 - 11:38 Uhr

Tja, das klingt ja alles sehr Logisch und ich denke so weit war ich mit meinem Code auch nicht davon entfernt... Aber es funktioniert genau so!!!
Vielen Dank 😃

Die BringToFront()´s scheinen alle überflüssig zu sein.
Es liegt wohl wirklich am Hide -> SplashScreen starten -> Show -> Activate(). (Activate brauche ich damit das 1. Control fokussiert wird.)

Nun kann ich auch auf die ganzen TopMost, BringToFront & Focus verzichten.
Meine Theorie: Mainform startet, kommt durch den Splashscreen in den Hintergrund. Splash wird geschlossen und die Mainform bleibt in 2. Reihe.
Durch das Show, ändert sich das Verhalten und die Form wird vor den Splashscreen gelegt.

14.08.2015 - 09:13 Uhr

Hallo trib,

  
MainForm.BringToFront();  
  

nachdem dein Splashscreen durchgelaufen ist. Beachte bei Bedarf invoke

Hallo Daniel,
danke für Deine Antwort. Leider erziehle ich auch damit nicht den gewünschten Effekt. Das Fenster ist optisch zwar im Vordergrund, jedoch nicht fokussiert und es blinkt in der Taskleiste.

Kurze Anmerkung

            while (!_splashForm.Loaded)  
            {  
                Thread.Sleep(10);  
            }  

Thread.Sleep ist meiner Meinung nach ein Workaround für Problem die man nicht sauber lösen kann. Verwende einen Custom EventHandler oder ein Delegate, diesen/dieses rufst du auf wenn der Ladevorgang abgeschlossen ist, dadruch sollte die schleife unnötig sein.

Hallo Crone.
Ja, das ist korrekt. Das war ein Workaround um auch unter Windows CE im Compact Framework zu laufen. Habe aber gerade gesehen, dass ich keine nachgelagerte Funktion mehr dahinter habe. Also kann das ohnehin raus 😃

13.08.2015 - 14:46 Uhr

Hallo zusammen,

ich verwende in einer Forms Anwendung einen Splash-Screen.
Dieser startet vor der MainForm in der Program.cs Main():

SplashScreen.Splash.StartSplash();
Application.Run(new StartupForm());

Darin wird die Form in einem separaten Thread aufgerufen:

public static void StartSplash()
        {
            // Create a new thread from which to start the splash screen form
            var splashThread = new Thread(StartSplashForm) {IsBackground = true, Priority = ThreadPriority.Highest};
            splashThread.Start();            

            while (!_splashForm.Loaded)
            {
                Thread.Sleep(10);
            }
        }

Nun wird in der StartupForm, am ende des Load-Events, das Schließen des Spash-Fensters aufgerufen:

 private void StartupForm_Load(object sender, EventArgs e)
        {
            TopMost = true;
            SplashScreen.Splash.CloseSplash();
            TopMost = false;
            Activate();
            Focus();
        }

Das klappt soweit auch, allerdings:
Die Form erscheint auch über z.B. dem Explorer, erhält aber keinen Fokus.
Per Alt-Tab sieht man, dass die Form ganz am Ende der Fenster-Kette steht.

Rufe ich während dem Startvorgang ein Modales Fenster auf (weil eine Einrichtung fehlt) so landet dies komplett im Hintergrund.

Es ist irrelevant, ob ich den Thread des Splash-Fensters auf IsBackground true oder false setze.
Wie kann ich trotz des SplashScreens dafür sorgen, dass die Haupt-Form nun nach dem Start in den Vordergrund rückt?

13.08.2015 - 13:10 Uhr

Was mir jedoch auffiel: Obwohl sätmliche Datenschutzeinstellungen so angepasst sind, dass alles inaktiv ist, scheint das Notebook irgendwo hin zu telefonieren. Es gibt einen minimalen Upload (um die 80 KBit / s) und Download um die 190 Kbit / s) die permanent anliegen. Den Grund konnte ich bisher noch nicht ausmachen.

Jeder, der Win10 runtergeladen hat, stellt es den anderen als Upload automatisch zur Verfügung. Das könnte der Grund sein.
Obwohl ich die MSN Tile nicht ausschließen würde. Weshalb ist denn bitte allein die News App über 1GB groß?!?

13.08.2015 - 13:03 Uhr

Hallo Amigo53,

Du kommst um 2 Projektmappen nicht herum. Die eine mit dem CF und die andere mit dem vollständigen.
In meinen Projekten hatte ich immer das "kleinere" also CF führend. Die weitere Projektmappe habe ich dann in dem selben Verzeichnis abgelegt und die Objekte aus dem 1. Projekt wie folgt hinzugefügt:

Projekt -> Hinzufügen -> Vorhandenens Element -> Bei "Hinzufügen" auf den Pfeil klicken -> "Als Link hinzufügen"

Nun ist die Klasse verfügbar, liegt aber noch im CF Projekt. Sobald in einem eine Änderung vorgenommen wird, ändert sie sich auch in dem anderen.

Unterschiede kann man dann mit zwei Herangehensweisen umsetzen:

_isWindowsClient = Environment.OSVersion.Platform != PlatformID.WinCE;

oder

#if WindowsCE
public void MyCfOnlyMethod()
#endif

Gruß,
trib

13.08.2015 - 09:58 Uhr

Hallo zusammen,

in den Szenenews wurde Win10 bereits angekündigt, bzw. schon ein paar Bugfixe vorgestellt.
Hier würde ich gerne ein paar Eindrücke schildern, Lob oder Kritik aussprechen.

Vorab konnte ich die Preview Versionen in der Firma schon testen und sie gefiel mir sehr gut. Auf Servern waren die Kacheln einfach extrem überflüssig, da kam Win10 gerade recht.
Jedoch fehlten bis zur Final auch noch ein paar Funktionen oder waren noch nicht gänzlich fertig. Cortana, Startmenü, Edge, usw.

Nun habe ich meine private Maschine upgedated (Convertible Notebook). Zwar war ich aufgrund des Touchscreens schon ziemlich zufrieden mit 8.1, aber besser geht immer 😃
Die Installation verlief problemlos und augenscheinlich wurden die allermeisten Konfigurationen und alle Programme & Apps übernommen. Löblich, so soll es sein!
Was ging nicht:*Einige Email-Konten, diese mussten manuell angepasst, bzw. eins sogar entfernt und neu erstellt werden. *Die Kacheln wurden nicht übernommen. Man muss alles wieder selbst hinzufügen und anordnen.

Wo wir gerade bei der Mail-App sind, die finde ich mit dem Transparenten Hintergrund nicht so gelungen. Auch ist der Wechsel zwischen den Konten nun etwas versteckter.

Klappe ich nun mein Display um, so wird auf den Tablet-Modus umgeschaltet. man erhält wieder das Kachelmenü und jede App oder jedes Programm wird in Vollbild gestartet.
Wo vorher ein Wisch ausgereicht hat um von einer Anwendung zur nächsten zu gelangen, erscheint jetzt die Übersicht aller offenen Programme. Wieder ein Wisch mehr als vorher.
Die Kacheln werden nun vertikal angeordnet und nicht mehr horizontal. Da muss man sich nicht nur extrem umgewöhnen, ich finde es von der Aufteilung auch einfach falsch. Das Gruppieren verliert dabei irgendwie teilweise seinen Sinn.
Wechselt man nun zurück zum regulären Modus, bleiben alle Anwendungen im Vollbild. Das ist nicht perfekt, aber sie behalten zumindest ihre letzte Position, wenn man sie wieder verkleinert.

Das Startmenü mit den Kacheln als Vorschau ist okay. Man kann den Kachel-Bereich etwas breiter ziehen um mehr Apps zu sehen. Unter Win8 habe ich mich darauf eingelassen, so gut wie alle Programme nur als Kachel und nicht als Desktop-Verknüpfung zu verwenden. Ein Tipp auf die Win-Taste, ein Klick, fertig! Das erfordert nun mehr Scroll-Arbeit.
Wer die "zuletzt verwendeten Apps" ausgeblendet hat (Welche ich noch nie angeklickt habe. Wo kommen die her?) hat nun ein schwarzes, ungenutztes Feld. Das war in der Preview besser.

Die Updates installieren sich nun selbstständig. Das ist in Ordnung so. Leider erfährt man nun aber nicht mehr ob man den Rechner einfach herunterfahren kann, oder noch ein "Update wird angewendet XX%" Bildschirm erscheint.
Bisher hatte ich schon 2x, dass sich der PC nicht ausgeschaltet, bzw. beim runterfahren aufgehangen hat. Daher muss ich dann warten um nochmal am Lüfter zu horchen 😕

Grundsätzlich finde ich das Design gut, die Performance ist toll, aber ein paar Dinge die bei Win8, bzw. 8.1 gut gelöst waren und an die man sich gewöhnt hat, wurden leider verschlimmbessert.

06.08.2015 - 13:06 Uhr

Wenn die Filterung des Spams nur in Form einer Verschiebung in einen entsprechenden Ordner des Profilfachs (klassische Junk-Mail) oder durch ein Tagging (Prefix im Betreff) markiert wird, aber dem Mitarbeiter nicht vorenthalten wird, dann ist das völlig legitim.

Nein, das ist wiederum auch nicht so richtig.
Es geht darum, dass sie maschinell, inhaltlich ausgelesen wird, um anhand von Blacklisten/Keywords erst als SPAM erkannt zu werden. Und das verstößt schon gegen das Fernmeldegeheimnis.
Ob die nun verschoben oder gekennzeichnet wird, ist dabei zweitrangig.

Denke wir sind uns beide einig, dass die NSA gegen das Postgeheimnis verstößt, auch wenn sie "nur" maschinell den weltweiten Emailverkehr auswertet 😃

Die Betriebsvereinbarung habe ich ja auch extra aus dem Wiki-Artikel hervorgehoben. Offensichtlich habe ich mich aber falsch ausgedrückt: Der private Mail-Verkehr muss unterbunden oder eine vertragliche Vereinbarung mit dem MA getroffen werden.

05.08.2015 - 13:11 Uhr

Bei Deiner Argumentation hinkt auch, dass Du explizit Exchange erwähnst.
In der Theorie wäre das mit allen Systemen möglich; wenn eben kein besonderer Usercase bei der Implementierung bedacht wurde.

Gut, dann bleiben wir beim SPAM-Filter. Sobald dieser im Einsatz ist, stünde man vor selbigem Problem. Vollkommen irrelevant ob dieser automatisiert, bzw. maschinell die Mails durchforstet. Jede Firma mit einem SPAM-Filter muss den Mitarbeitern private Emails untersagen, sonst macht sie sich strafbar.

Und der SPAM-Filter hat sicherlich auch ein Administratoren-Account, damit er die eingehenden Mails prüfen kann. Daher halte ich es für relativ unwahrscheinlich, dass es viele Firmen gibt, die diese Möglichkeit von vornherein ausschließen. Also keinen Master-Admin haben und keinen SPAM-Filter.

Nochmal zum Thema der Rechmäßigkeit:
(Auch auf die Gefahr hin, das der Wahrheitsgehalt von Wikipedia nicht immer unumstößlich ist)

E-Mails gehören per Definition zu der Kategorie „Brief“ und unterliegen diesem Grundrecht. Daher kann eine automatisierte E-Mail-Sicherungsmaßnahme in einem Unternehmen nur durch eine vertragliche Vereinbarung mit den Mitarbeitern oder mit der Zustimmung eines vertretungsberechtigten Betriebsrates erlaubt werden. Eine andere Möglichkeit ist die Durchsetzung eines allgemeinen Verbots privater E-Mail-Kommunikation von Seiten der Geschäftsleitung.

Quelle: E-Mail-Archivierung

05.08.2015 - 09:16 Uhr

Dies geht für mich in eine Ecke - welche auch sehr gut für Viren & Co eingesetzt werden kann um User auszuspähen!

Hast Du schonmal ein Outlook AddIn einrichten/aktivieren müssen? Das geht alles andere als automatisiert und nur lokal auf der Maschine im Benutzerkontext. Da müsste man dem zu infizierenden noch eine dreiseitige Anleitung farbig ausdrucken 😃

Jede Firma die Exchange im Einsatz hat, "überwacht" die Mitarbeiter. Selbst ein Spam-Filter ist ein Eingriff in die Privatsphäre. Daher sind private Mails von unserem Account auch "untersagt":

20.07.2015 - 09:23 Uhr

Hallo Alphagen,

in der Vergangenheit habe ich relativ viel mit dem Arduino und LED´s gemacht.
Da gab es etliche Lösungen, die imho alle auf "hart" programmierten Buchstaben basiert haben. Also Arrays, die in einem definierten Raster die an- und ausgeschalteten LED´s beinhaltet haben.
Um Platz zu sparen, basieren manche Lösungen auch auf Hex-Werten, die letztendlich nichts anderes repräsentieren.
Problematisch wird es hierbei nur, wenn man beginnt, die Schriftgröße variieren zu wollen. Man kann defakto auf einer Matrix eine Schrift nicht nur 1px größer machen. Auch bei der 1,5 Fachen Größe hat man das Problem, welche Pixel "verdoppelt" werden, und welche hintenüber fallen.

Zwar gibt es dafür auch manche Herangehensweisen, die allermeisten Lösungen, die ich kenne verfügen aber nur über eine auf die Matrix festgelegte Schriftgröße.

Hier kannst Du das Prinzip sehr gut einsehen:
LED- Matrix Scrolling Text

Habe auch noch irgendwo ein Programm, mit dem man eine Matrix in unbestimmter Größe testen kann. Funktioniert, bis auf eben Text, auch sehr gut. Könnte ich bei Interesse nochmal raus suchen.

06.07.2015 - 16:53 Uhr

Hallo DerPete,

wie schon in dem 2. Post angesprochen, kann ich nur den folgenden Link empfehlen:
Template SerialPort
Denn dort wird kein Timer verwendet, sondern ein Event des ComPorts. Das bedeutet, Du fragst nicht sinnlos jede Sekunde an, ob Daten vorhanden sind, sondern der Port meldet sich quasi von selbst, wenn es was zu lesen gibt.
Das hat neben dem Verhindern von sog. polling auch den Vorteil, dass Du bei korrekter Implementierung* jedes mal den gesamten Wert des RTF überschreiben kannst. Also auf Append verzichten kannst.

*Der ComPort kann u.u. auch die Daten aufsplitten, daher ist man erst mit einem fest definierten Endzeichen auf der ganz sicheren Seite. Sollte bei kleineren Datenpaketen aber erstmal irrelevant sein.

01.07.2015 - 10:18 Uhr

Hi zusammen,

ich habe schon vor einigen Jahren auf einem Live-Hacking Event gesehen, wie ein USB-Stick sich als Tastatur selbstständig gemacht hat. Das war schon sehr interessant und eigentlich auch ganz simpel. Die vermeintliche Tastatur hat einfach in wenigen Milisekunden die Konsole geöffnet, eine URL eingetippt und somit eine Schadsoftware heruntergeladen.
Dazu braucht es nichtmal SCSI-Kenntnisse, o.ä.

Die Firmware-Manipulation nimmt aber schon ganz neue Dimensionen an!
Mittlerweile gibt es Trojaner, die sich in die FW von Festplatten einbrennen. Da hilft auch keine Formatierung mehr, da reicht nur noch der große Hammer.
Auch die HDD´s oder SSD´s haben nur wenige, unterschiedliche Chipsätze. Das macht es natürlich relativ einfach.
Relativ ist aber ein sehr dehnbarer Begriff. Die Codeteile, die (ich meine) Kapersky herausgefiltert hatte, ließen Rückschlüsse auf ein Multimillionen Dollar Projekt zu.

Wie bei allem, wird es trotzdem in wenigen Jahren auch den "Consumer Market" erreichen und jeder kann sich die notwendige Technik in fadenscheinigen Onlineversandhäusern bestellen.

30.06.2015 - 09:21 Uhr

Bitte richtig lesen.

2008 EXPRESS kann kein Compact Framework.

Sorry, Schande über mein Haupt 😃
Bin zu verwöhnt mit den Lizenzen auf der Arbeit.

Aber wenn es mit SharpDevelop funktioniert, gibt es ja eine Lösung. Die IDE fand ich damals auch garnicht so schlecht.

Kann allerdings die Politik hinter dem Ganzen nicht so recht verstehen. Wenn das CF aussterben soll, warum bring MS weiterhin laufend CE / Compact Versionen an den Markt?
Bei Windows Embedded Compact 7 kann ich VS2008 auch nicht mehr richtig verwenden. (Auf Gerät kompillieren oder Debuggen ist nicht mehr möglich)

29.06.2015 - 15:58 Uhr

Die Express Edition gibt es noch hier zu finden:

>>

weil damit kein CF möglich ist 😃 - ich habe ja 2010 Pro, damit geht es dummerweise auch nicht mehr - nur noch mit 2008

Deshalb ist in dem Link ja auch 2008 und nicht 2010 enthalten 😃

Spricht ja nichts dagegen mehrere VS Versionen parallel zu installieren. Habe momentan auch 2008 (CF), 2010 (Install Shield) & 2012 laufen.

08.06.2015 - 12:00 Uhr

Hallo E-Techniker,

man kann im Gerätemanager von Windows nachschauen, welchen Com-Port der Bluetooth-Dongle bekommen hat. Diesen muss man dann natürlich entsprechend hinterlegen.
Dieser kann sich aber nach einem Rechner Neustart wieder ändern, wenn das Bluetooth Modul nicht fest integriert ist.
Dein Code selbst ist ja äußerst rudimentär. Hier im Forum gibt es schon sehr gute Implementierungen, die Dir das Leben erleichtern.
Schau dazu mal im Snippet-Bereich vorbei:
Template SerialPort

02.04.2015 - 14:43 Uhr

Aber ansonsten habe ich schon etwas länger eine MIO Fuse, ich hasse nämlich Brustgurte, und die Fuse ist die einzige von den neuen die per ANT+ mit meine Acro S reden will.

Die Fuse funktioniert auch mit der Garmin, habe ich vorhin gelesen.

Heise.de hat vor einiger Zeit diesbezüglich mal einen gründlichen Labortest für Fitness-Uhren unternommen. Dabei stellte sich raus das kein einziges Produkt mehr funktioniert wenn man seine persönlichen Daten nicht an den Hersteller schickt.

Da muss ich Dir absolut Recht geben. Meine "alte" Laufuhr konnte noch lokal verwendet werden. Die neuen schicken alles direkt an ein online-Portal.
Da ich dort aber nicht mit meinem vollständigen Namen registriert bin und auch sonst keine sensiblen Daten dort angegeben habe, habe ich mich darauf eingelassen.
Trotzdem kann ich Deine Kritik daran vollkommen nachvollziehen!

@pinki: Dann scheinen die beiden Uhren nicht sonderlich weit voneinander entfernt zu sein. Mich stört die Vibration allerdings kaum.

@Roland_K: Deshalb meine Entscheidung, beides zu verbinden. Fitness und etwas "Business" (also eingehende Notifications)

01.04.2015 - 09:25 Uhr

Aktuell sprießen Uhren aus dem Boden, die sich Smartwatch, Fitnesstracker oder generell Wearables nennen.
Diese wiederum unterscheiden sind durch mehr oder minder sparsame eInk, Retina, LED, AMOLED oder sogar überhaupt keine Displays.

Auch die Betriebssysteme schießen aus dem Boden, wie junger Spargel.

In dem schier undurchschaubaren Markt, stellt sich natürlich die Frage:
**Braucht man so etwas überhaupt?***Wenn ja: Welches Modell interessiert Euch und weshalb? (Oder habt ihr schon eine?) *Wenn nein: Was fehlt Euch an Funktionen, die euch zum Kauf bewegen würden?

Persönlich finde ich es ganz nett, nicht für jede Nachricht das Telefon aus der Tasche zu holen. Oder auf der Arbeit aus der Docking-Station. Bestimmt auch in Meetings sehr praktisch!
Apps sind für mich eher uninteressant, da ich nicht ein paar Handgriffe auf dem Telefon, durch komplizierte, Mäusekino-Artige Eingaben ersetzen werde.

Meine Entscheidung:
Da ich seit einigen Jahren zur Gattung der Läufer zähle und auch schon längere Zeit meine Strecken aufzeichne, bin ich hellhörig geworden, als Garmin eine neue Uhr vorstellte.
Diese beinhaltet alle Funktionen eines Lauf-/Rad-/Schwimm-/Golf-Computers. Das war für mich schonmal obligatorisch. Zusätzlich handelt es sich um einen Fitnesstracker, wie diese ganzen Armbänder, die Schritte und Bewegungen ganztägig zählen.
Zu guter Letzt kommen die rudimentären Smartwatch-Funktionen hinzu. Wetter, Musikplayer-Bedienung, Notifications-Anzeige, Kalendereinträge.
Die Uhr verfügt über einen Vibrationsalarm und ein Tageslicht-Farbdisplay (Welches sich aber zusätzlich beleuchten lässt).

Also habe ich mir diese gestern zugelegt und bin bisher ganz zufrieden. In der Realität ist sie nicht ganz so schick wie auf den Bildern. Sonst erfüllt sie komplett meine Erwartungen.
Wen es interessiert, es ist eine Garmin Vivoactive.

Meine erste App, bzw. mein erstes "WatchFace" (Uhrenoberfläche) habe ich schon entwickelt. Geht einigermaßen gut. Mir fehlt nur ein vernünftiges Intellisense 😉

05.03.2015 - 15:03 Uhr

Hallo zusammen,

ich versuche gerade per Exchange Web Services auf einen Kontaktordner zuzugreifen.
Die Herausforderung ist jedoch, dass der Ordner von jemand anderem verwaltet wird.

Person A legt einen Ordner in seinen Kontakten an:
Rechte Maustaste -> Freigeben -> Ordnerberechtigungen -> Reiter Berechtigungen -> Person B bekommt die Freigabe & Rolle "Besitzer"

Nun nochmal per rechter Maustaste:
Freigeben -> Kontakte freigeben -> Email öffnet sich, Haken setzen bei "Empfänger können Elemente im Ordner Typ 'Kontaktordner' hinzufügen, bearbeiten und löschen".

Person B sieht den Ordner nun unter:

  • Freigegebene Kontakte
    • Person A - Ordnername

Nun kommt EWS mit ins Spiel.
Zuerst habe ich versucht unter WellKnownFolderName.Contacts alle Ordner auszugeben. Dort ist er aber nicht enthalten. Gesucht und folgendes Beispiel gefunden:
https://social.msdn.microsoft.com/Forums/exchange/en-US/bbff797d-21df-4bf9-8796-e7b81d818f93/cews-retrieve-all-shared-contacts-available-from-user?forum=exchangesvrdevelopment

Gebe ich dort nun Person B (also mich) als MailboxNamen an, so findet er den Ordner "Common Views" und anschließend 0 Einträge mit dem Suchfilter "Shared Contacts".
Gebe ich Person A dort ein, findet er nicht mal den Ordner "Common View".

Hat jemand sowas schonmal versucht? Mein Outlook zeigt mir die Kontakte an, auch kann ich dort welche hinzufügen oder ändern.
Die Code-Fragmente schauen alle ähnlich bis gleich aus, die man im Internet so findet.
Auch war es mir bisher nicht möglich auf die Freigegebenen Kalender zuzugreifen 😦

Bin über jeden Tipp dankbar!

04.03.2015 - 17:15 Uhr

Ich bekomme auch alle Ordner Namen aber die Textdateien will er bei meinem aktuellen Code einfach nicht auslesen.

Deinen aktuellen Code können wir von hier aber nicht einsehen 😃

Auch

[...]eine Meldung das der Befehl falsch ist

hilft uns nicht sonderlich viel weiter, ohne die genaue Meldung zu kennen.

Bitte poste nochmal Deine entsprechende Code-Stelle und schreibe dazu was genau nicht funktioniert, bzw. wie die Fehlermeldung lautet.

Gruß
trib

PS: Abt war schneller. Den Link solltest Du Dir in jedem Fall ansehen! Wohl möglich erledigt sich Dein Problem dann von selbst.

04.03.2015 - 16:08 Uhr

Von mir auch noch ein paar lobende Worte:
Dein fachliches Wissen und die Art und Weise dies zu vermitteln, stehen außer Frage!

Mich hat aber insbesondere Deine Objektivität beeindruckt. Egal wie verrannt ein Thema gerade war, wie hitzig die Debatte, Du bis immer vollkommen sachlich geblieben.
Wo andere Leute längst eine Partei ergriffen haben und (scheinbar) unbelehrbar ihren Standpunkt vertreten, warst Du immer extrem Ergebnis-offen.

Vielen Dank für alles, was ich in den letzten Jahren hier lernen durfte 😃

27.02.2015 - 13:26 Uhr

Gibt es irgendwelche Veränderungen an dem Hauptprogramm?
Also z.B. die Verlagerung in einen Background-Prozess zwecks eines Splash-Screens?

Das einfachste wird sein, wenn Du eine leere Applikation erstellst und dann peut á peut den Code um die MessageBox drumherum baust, bis es nicht mehr funktioniert.

Oder gibt es vielleicht ein Return als Tastatureingabe? CE reagiert da etwas anders. Wenn ich Text eingeben und die Applikation läd, sammelt CE die Eingaben und sendet die brav an die Applikation, wenn diese fertig geladen hat. Das hat manchmal unschöne Auswirkungen.
(Ich drücke Return, die Applikation reagiert augenscheinlich nicht, weil sie eine 2. Form initialisiert. Also drücke ich nochmal Return und die 2. Form öffnet und schließt sich sofort aufgrund der Eingabe)

27.02.2015 - 12:11 Uhr

Hallo pikachu,

ich arbeite auch viel mit CE und mir ist das Verhalte weder bekannt, noch kann ich es nachstellen.

if (MessageBox.Show(Language.GetCaption("strClosingConfirmation"), Language.GetCaption("strClosingTitle"), MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No)
                    e.Cancel = true;

Das klappt hervorragend. Bis auf die Icons, die werden nicht unterstützt. Trotzdem muss man sie mitgeben 🤔

06.02.2015 - 15:21 Uhr

Jetzt brauche ich nur noch ähs. ^^ 😉

Nichts leichter als das:
Edmund Stoiber - Transrapid

Anschließend müsste die Tonspur nur noch etwa 15 Sekunden umfassen 😁

05.02.2015 - 11:14 Uhr

Die Lösung des Ganzen ist noch etwas einfacher als ich gedacht habe:


        private void OpenFileDialog(string initialDirectory)
        {
            var dlg = new Microsoft.Win32.OpenFileDialog();
            dlg.RestoreDirectory = true;            
            [...]
        }

Schön ist die Verwendung in WPF natürlich nicht, aber für den einen Dialog in der Anwendung finde ich mich damit ab.

Danke für den "Tritt" in die richtige Richtung!

05.02.2015 - 10:43 Uhr

Ist auch das korrekte Verhalten. Sollte auch in der Beschreibung stehen.
Die Shell und Co verwendet und setzt diesen Wert bei jeder direkten API-Funktion, bei der es um Ordnerselektion geht.
Deswegen sollte man auch in .NET eher davon Abstand nehmen. Wieso interessiert oder stoert dich das denn in deiner Anwendung?

Hallo Abt,

danke für die Info! Dann muss ich das ggf. nach Beendigung des Dialogs wieder überschreiben. Sonst sehe ich da wenig Möglichkeiten für meinen Fall.

Die Applikation kümmert sich um die Konfig-Datei eines Dienstes. Somit liegt sie immer neben der Konfigurationsdatei. Wähle ich nun den Speicherort einer LOG-Datei aus, wird die Konfiguration auf einmal dort abgelegt und der Dienst findet sie nicht wieder. Daher stört es doch massiv 😉

Beim Beenden wird per relativer Pfadangabe eine Konfigurationsdatei gespeichert.

Und nicht mehr im Programmverzeichnis.
Sowas macht man sowieso nicht, haben wir hier aber nur ca 10.000 mal erklärt.

Und vorallem gibt es deswegen extra ( seit FW 1.0 ) das Property RestoreDirectory im OFD.

Vielen Dank für die Belehrung, das hat nur leider überhaupt nichts mit dem Problem zu tun.
So erkläre ich mir auch die 10.000 Vorkommnisse 😄

PS: Auch von mir nicht böse nehmen 😃

05.02.2015 - 10:06 Uhr

Hallo zusammen,

ich habe eine Sache bemerkt, die ich mir überhaupt nicht erklären kann.

In WPF habe ich ein Control (Button) gebaut, welches einen Microsoft.Win32.OpenFileDialog() verwendet. Das Control habe ich an einer Textbox gebunden, diese dann den selektierten Pfad anzeigt.
Soweit, so gut!

Nun wähle ich damit eine Datei aus und beende das Programm. Beim Beenden wird per relativer Pfadangabe eine Konfigurationsdatei gespeichert.
Diese landet nun in dem Pfad, den ich vorher selektiert habe!!! Und nicht mehr im Programmverzeichnis.
Ändere ich den Dateipfad "manuell" über die Textbox, wird dieser korrekt übernommen und landet nach der Beendigung im Verzeichnis, wo auch die Anwendung liegt.

Meine Vermutung war, dass es mit InitalDirectory zusammenhängt. Habe ich auskommentiert -> Gleiches Verhalten.

private void OpenFileDialog(string initialDirectory)
        {
            // Create OpenFileDialog
            var dlg = new Microsoft.Win32.OpenFileDialog();

            // Set filter for file extension and default file extension
            var extension = new List<string>();
            extension.AddRange(_fileFilter.Split('|'));

            dlg.Title = DialogDescription;

            dlg.DefaultExt = extension.Count > 0 ? extension[extension.Count - 1] : ".*";

            dlg.Filter = _fileFilter;

            if (!string.IsNullOrEmpty(initialDirectory))
                dlg.InitialDirectory = initialDirectory;

            // Display OpenFileDialog by calling ShowDialog method
            var result = dlg.ShowDialog();


            // Get the selected file name
            if (result == true)
            {
                var filename = dlg.FileName;
                Text = filename;
            }
        }

Wenn ich nun Directory.GetCurrentDirectory() aufrufe, ist diese vor der Verwendung
..\bin\Debug\
nachher
C:\Temp\ (Dort liegt meine ausgewählte Datei)

Kann sich jemand das erklären?

03.02.2015 - 09:18 Uhr

Ich habe einen Raspberry Version B hier im Einsatz als Mediaplayer mit xbmc.
[...]
Wenn sich das Teil nun mit Visual Studio programmieren lässt umso besser.

Da kann ich mich uneingeschränkt anschließen 😃
Bisher habe ich XBMC Gotham als OpenElec am TV angeschlossen und bin sehr zufrieden.
Ein paar andere OS habe ich schon ausprobiert, aber wirklich effektiv nutzbar waren die imho nicht (Rein aus Performance-Gründen).

Da ich auch viel mit Home-Automation, Arduino, usw. zu tun hatte, sehe ich dort die Möglichkeit nochmal richtig durchzustarten! Bisher konnte ich, kommend aus der .Net Welt nie so richtig in die PI-Programmierung reinfuchsen.

Meine Bestellung geht gleich raus 😃

02.02.2015 - 14:43 Uhr

Hallo zusammen,

dann möchte ich meinen Senf auch noch dazu abgeben 😃

Die imho einfachste Variante wäre es, dem BarcodeScanner ein Start- und Endzeichen zu hinterlegen. In der Regel liegen der Anleitung ein paar Konfigurations-Barcodes bei. Einmal anscannen, schon schickt der Scanner z.B. ein STX & ETX mit.
Natürlich muss man nun alle Eingaben verarbeiten und auf die Zeichen prüfen. Das geht aber relativ zentral über die OnKeyDown-Events oder ProcessCmdKey.

Gruß
trib

05.01.2015 - 09:09 Uhr

Frohes neues Jahr Debiii,

versuch es doch mal wie folgt:

QuickIOFileCopyJob job = new QuickIOFileCopyJob (@"C:\Users\****\Desktop\Neuer Ordner\file.mp3", @"C:\Users\****\Desktop\Ordner\file.mp3", observer);

Sonst versuchst Du eine Datei in einen Ordnernamen zu kopieren.

Gruß
trib

19.12.2014 - 13:25 Uhr

Hallo manullino,

das ganze wird natürlich über eine Schleife gelöst.
Man iteriert durch alle Properties und prüft deren Typen oder direkt das geparste object:


public static bool IsArray(Type t)
        {
            return t.IsArray;
        }
public static bool IsIList(Object o)
        {
            return o is IList;
        }

Wenn es sich um eine Array oder eine Liste handelt, ruft man erneut eine Schleife auf, die wiederum alle Properties dessen Typs durchläuft. Optimaler Weise macht man das nun Rekursiv, so dass Du die selbe Funktion wiederverwenden kannst.

Am besten schaust Du Dir mal an wie ein Serializer das macht. Dort findest Du massenweise Lösungen.
z.B. Simple JSON
Die Funktion GetFieldOrPropertyValue wäre dort von Interesse.

Gruß,
trib

17.11.2014 - 17:28 Uhr

Hallo eddieromm,

das kann ich bestätigen. Sofern die Form in irgendeiner Art und Weise läd/sperrt,
scheint das Gerät die Eingaben vorzuhalten.
Das betrifft nicht nur das Drücken eines Button, sondern auch die Eingaben per Tastatur oder Barcode-Scanner.
Bisher habe ich allerdings noch keinen Grund gesehen, weshalb das stört.
I.d.R. kennen die Anwender ja nach einer gewissen Zeit die Applikation und drücken instinktiv die korrekte Abfolge der Knöpfe.
Was aber hilft, ist eine vernünftige Rückmeldung an den Benutzer , damit dieser sieht, dass die Applikation arbeitet und er nicht nochmal den Knopf drückt. Sei es auch ein WaitCursor.

05.11.2014 - 11:36 Uhr

Hallo inek,

wo genau vermutest Du denn ein Problem?
Du kannst mit Bordmitteln (Webverweis hinzufügen) einen Webservice abonnieren, unabhängig ob es sich um eine Forms, WPF oder eben Konsolen-Anwendung handelt.

Wenn Dein Apache oder IIS steht, kannst Du aus der wsdl alle notwendigen Klassen in C# erzeugen lassen. Entweder manuell oder eben per "Webverweis hinzufügen" per Rechtsklick auf dem Projekt.

Diese Klasse wird dann Deine Funktion "GetValue" beinhalten und du kannst sie ansprechen. Den Rest erledigt dann das Framework für Dich (Bis auf das Abfangen von Fehlern).

Gruß,
trib

24.09.2014 - 16:24 Uhr

Danke! Das klingt interessant, probier ich direkt mal aus. Wirklich einsetzen werde ich das aber auf die Schnelle nicht oder nie können, da wir unsere Übersetzungen zentral auf einer Datenbank einpflegen und beim Programmstart laden.

Hallo Bugrick,

es stellt überhaupt kein Problem da, wenn man die Übersetzungen beim Programmstart zieht und der Form vor der Darstellung übergibt. Da scheint eher noch ein architektonisches Problem zu bestehen.

Wenn Du jedes Mal die gesamte Übersetzung in einem Rutsch lädst, verwende doch einen SplashScreen. Hast Du die Übersetzungen beisammen, übergibst Du diese der Haupt-Form und rufst anschließend Show() auf.

Der Vorteil eines SplashScreens ist, dass dieser i.d.R. in einem anderen Thread läuft und somit die Ladeanimation unabhängig Deiner Datenbankanfrage aktualisieren kann.

Gibt es weitere Forms, so muss man natürlich selbst entscheiden, ob man dessen Übersetzungen schonmal präventiv in einem anderen Thread bezieht, oder beim Initialisieren der entsprechenden Form.
Das kommt dann darauf an wie schnell die Abfrage an die Datenbank von Statten geht.

17.09.2014 - 13:33 Uhr

In dem Projekt-Ordner findet man pro Report auch eine ReportName.rdl.data-Datei.
Diese muss man ggf. händisch löschen.
Normaler Weise sollte aber ein Klick auf die grünen Aktualisierungs-Pfeile in der Vorschau ausreichen. Klappt jedoch nicht immer...

Sicher dass Du nicht vielleicht doch eine andere Datenquelle verwendest, als Du erwartest?
Passiert schon mal 😃