Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Robertico
Thema: Kommunikation zwischen Browser und Server belauschen
Am im Forum: Netzwerktechnologien

Obwohl es in Wireshark nur so plätschert kommt in der Console nichts an.

Wiresharkm zeigt auch die IPv6 Adresse an. Siehe Anhang

Bzw. es kommen schon welche an, aber nicht von dem Server, den ich möchte

Thema: Kommunikation zwischen Browser und Server belauschen
Am im Forum: Netzwerktechnologien

Danke bSharp,

wenn ich jetzt nicht weiterkomme, bin ich selbst schuld.

Paket rein alles vom Header raus

Gruß Robert

Thema: Kommunikation zwischen Browser und Server belauschen
Am im Forum: Netzwerktechnologien

Ist ja nicht nur das.

Da wird auch noch anderes drüber geschickt. Außerdem will ich das paralell zum
Spiel machen und dazu muss er on sein.

Will eigendlich nur wissen, wie bekomme ich die IP-Pakete in eine Variable.

Gruß Robert

Thema: Kommunikation zwischen Browser und Server belauschen
Am im Forum: Netzwerktechnologien

Da kommt z.B so etwas an. Das hätte ich gerne zum verarbeiten

HTTP/1.1 200 OK

Content-Type: text/xml;charset=UTF-8

Content-Length: 329

Server: Jetty(7.0.2-SNAPSHOT)



<body xmlns='http://jabber.org/protocol/httpbind'><message xmlns="jabber:client" to="[email protected]/xiff-bosh" type="groupchat" id="m_70" from="[email protected]/rastalix"><body>ui dann beser nicht.... danke vishant ^^</body><bbmsg xmlns="bbmsg" playerid="141023" playername="Rastalix"/></message></body>

Thema: Kommunikation zwischen Browser und Server belauschen
Am im Forum: Netzwerktechnologien

Was ich jetzt dazu bräuchte ist eine Richtung, wie ich das in C# realisiere. Einen zweiten Listener kann ich ja nicht installieren.

Außerdem ist dann eine Funktion in Wireshark: Follow TCP-Straem. in der sind die Daten, die ich bräuchte

Gruß Robert

Thema: Kommunikation zwischen Browser und Server belauschen
Am im Forum: Netzwerktechnologien

Danke Witte,

den hab ich. Und bei http://www.codeplanet.eu/tutorials/development/technic/22-was-ist-tcp-ip?.html

kann man auch noch etwas übers Grundsätzliche lesen. Später auch über C#

Gruß Robert

Thema: Kommunikation zwischen Browser und Server belauschen
Am im Forum: Netzwerktechnologien

Danke,
hat mich schon weiter gebracht.

Mit Freund Google habe ich ein Tool gefunden mit dem ich jetzt erst mal sehen kann, was dort passiert.http://www.ethereal.com/

Gruß Robert

Thema: Kommunikation zwischen Browser und Server belauschen
Am im Forum: Netzwerktechnologien

Hallo alle,

möchte wärend eines Spiels die Unterhaltung zwischen dem Server und meinem Browser abhören.

Habe einen Listener versucht, aber da geht nur einer.

Hat jemand eine Idee wie ich vorgehen könnte?


Gruß Robert

Thema: Sound am PC aufnehmen und mischen
Am im Forum: Smalltalk

Danke
sth_Weird und herbivore,

zu anderen Zeiten würde mich das schon reizen etwas dazu zu progammieren. Nur jetzt kommt mir etwas fertiges sehr gelegen. Vielen dank

Robert

Thema: Sound am PC aufnehmen und mischen
Am im Forum: Smalltalk

Hallo alle,

meine Tochter möchte mit Ihrer Klasse einen Rap über ihre Lehrer machen.
Und da ich etwas mehr als nur an einem PC gerochen habe, möchte sie, dass ich das aufnehme und nachher mit der Musik mische.

Ein Mikrifon habe ich mir bei "du bist doch nicht blöd" gekauft. Nun brauche ich etwas, mit dem ich den Kindern helfen kann.

Jemand eine Idee?

Gruß Robert

Thema: Serienkopierer für Sticks
Am im Forum: Projekte

Habe leider Windows 7 Ultimate 64bit nicht sonst würde ich es probieren.
Eine e-Mail könnte da richten [email protected] (bekommst du das projekt zum testen, verbessern)

Gruß Robert

Thema: Brauche höhendaten von Deutschland
Am im Forum: Smalltalk

Vielen Dank itstata und Stipo,

in Wikipedia ist ein Link, mit dem man an die angekündigten Daten kommt.http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/

Dann habe ich noch etwas gefunden, dass ich noch näher untersuchen möchte:
http://interactiveearth.blogspot.com/2008/01/create-your-own-google-earth.html

Gruß Robert

Thema: Brauche höhendaten von Deutschland
Am im Forum: Smalltalk

Hallo alle,

kann mir jemand sagen, wie ich an Höhendaten von Deutschland (oder ein Stück in meiner Nähe,Aachen) komme?
Suche mir schon seit Tagen einen Wolf daran.

Gruß Robert

Thema: Form wird automatisch geschlossen ?
Am im Forum: GUI: Windows-Forms

Hallo,

schau mal im Designer, ob der den nicht setzt. Habe bei Properties schon desöfteren ungewolltes setzten gehabt.

Gruß Robert

Thema: Terminplanung erstellen
Am im Forum: GUI: Windows-Forms

Hallo MrSparkle,

natürlich hast du Recht damit. Aber ich kann mich noch genau erinnern an meine Anfangszeit. Man fühlt sich hilflos und weiss nicht, wie es in diesem Forum zugeht.

Der Hinweis war sicher nötig, aber bei jemandem der 1 Beitrag hat kann man davon ausgehen, dass er noch lernen muss.

Ich hätte es etwas freundlicher formuliert.

Gruß Robert

Thema: Textbox beschreibbaren bereich einschränken
Am im Forum: GUI: Windows-Forms

Zitat von Khalid
Warum nimmst du nicht ein UserControl und legst die TextBox und den Button nebeneinander an. Ist zwar optisch nicht der Knaller, erzielt aber den selben Effekt.

Genau.
Oder, du machts bei Erscheinen des Buttons die Textbox um die Breite des Buttons kleiner. Und natürlich wieder größer wenn er verschwindet.
Dies wäre am besten auch in einem UserControl zu machen. Wo mans braucht einfügen und fertig.

Gruß Robert

Thema: Terminplanung erstellen
Am im Forum: GUI: Windows-Forms

http://www.componentsource.com/products/mindfusion-planner-net/index-de-eur.html

Thema: Scrollbar vorhanden? Wie überprüfen?
Am im Forum: GUI: Windows-Forms

Hallo alle,

weis nicht ob veraltet, aber habe mir das einmal angesehen.
Dabei habe ich festgestellt, dass bei Erscheinen und Verschwinden einer Scrollbar die Message WM_SIZE kommt.

Nun könnte man aufgrund der dann in LParam liegenden Größe genaue Schlüsse ziehen ob und welche Scrollbar sichtbar ist.

Die Funktion aus obigem Beitrag liefert aber noch mehr Werte mit denen ich auf das ScrollValue schließen konnte.

Dabei ist das entstanden:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.ComponentModel;

namespace ListViewTest
{
    class ScrollEventArgs : EventArgs
    {
        public ScrollEventArgs(bool _isVisible)
        {
            this.isVisible = _isVisible;
        }
        public bool IsVisible
        {
            get
            {
                return (isVisible);
            }
        }
        bool isVisible;
    }
    class ScrollListView : ListView
    {
        public delegate void EventHandler(Object sender, ScrollEventArgs e);
        public event EventHandler VScrollBarVisibleChanged;
        public event EventHandler HScrollBarVisibleChanged;
        public enum WindowsMessages : int
        {
            WM_SIZE = 0x0005,
        }

        public short LOWORD(int l)
        { return ((short)(l & 0xffff)); }

        public short HIWORD(int l)
        { return ((short)(l >> 16)); }

        void SetScollBarVisibility(OBJID which, bool isVisible)
        {
            switch (which)
            {
                case OBJID.HSCROLL:
                    if (isHScrollBarVisible != isVisible)
                    {
                        isHScrollBarVisible = isVisible;
                        if (HScrollBarVisibleChanged != null)
                        {
                            HScrollBarVisibleChanged(this, new ScrollEventArgs(isVisible));
                        }
                    }
                    break;
                case OBJID.VSCROLL:
                    if (isVScrollBarVisible != isVisible)
                    {
                        isVScrollBarVisible = isVisible;
                        if (VScrollBarVisibleChanged != null)
                        {
                            VScrollBarVisibleChanged(this, new ScrollEventArgs(isVisible));
                        }
                    }
                    break;
            }
        }


        bool isVScrollBarVisible = false;
        public bool IsVScrollBarVisible
        {
            get { return isVScrollBarVisible; }
        }

        bool isHScrollBarVisible = false;
        public bool IsHScrollBarVisible
        {
            get { return isHScrollBarVisible; }
        }    

        protected override void DefWndProc(ref Message m)
        {
            base.DefWndProc(ref m);
            switch (m.Msg)
            {
                case (int)WindowsMessages.WM_SIZE:
                    SetScollBarVisibility(OBJID.HSCROLL, IsScrollBarVisible(OBJID.HSCROLL));
                    SetScollBarVisibility(OBJID.VSCROLL, IsScrollBarVisible(OBJID.VSCROLL));
                    break;
                default:
                    break;
            }
        }

        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // ScrollListView
            // 
            this.ResumeLayout(false);

        }

        [DllImport("user32.dll", SetLastError = true, EntryPoint = "GetScrollBarInfo")]
        private static extern int GetScrollBarInfo(IntPtr hWnd,
        OBJID idObject, ref SCROLLBARINFO sbi);

        [StructLayout(LayoutKind.Sequential)]
        public struct SCROLLBARINFO
        {
            public int cbSize;
            public RECT rcScrollBar;
            public int dxyLineButton;
            public int xyThumbTop;
            public int xyThumbBottom;
            public int reserved;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
            public int[] rgstate;
        }

        public struct RECT
        {
            public int Left;
            public int Top;
            public int Right;
            public int Bottom;
        }

        enum OBJID : uint
        {
            /// <summary>Die horizontale ScrollBar.</summary>
            HSCROLL = 0xFFFFFFFA,
            /// <summary>Die vertikale Scrollbar.</summary>
            VSCROLL = 0xFFFFFFFB
        }

        private bool IsScrollBarVisible(OBJID scrollBar)
        {
            SCROLLBARINFO sbi = GetSbi(scrollBar);
            return sbi.rgstate[0] == 0;
        }
        SCROLLBARINFO GetSbi(OBJID scrollBar)
        {
            SCROLLBARINFO sbi = new SCROLLBARINFO();
            sbi.cbSize = Marshal.SizeOf(sbi);
            int result = GetScrollBarInfo(Handle, scrollBar, ref sbi);
            if (result == 0) throw new Win32Exception();
            return sbi;
        }
        public float HScrollValue
        {
            get
            {
                SCROLLBARINFO sbi = GetSbi(OBJID.HSCROLL);
                if (sbi.rgstate[0] != 0)
                {
                    return float.NaN;
                }
                int thumbLen = sbi.xyThumbBottom - sbi.xyThumbTop;
                int rest = sbi.rcScrollBar.Right - sbi.rcScrollBar.Left - 2 * sbi.dxyLineButton - thumbLen;
                return (float)(sbi.xyThumbTop - sbi.dxyLineButton) * 100f / (float)rest;
            }
        }
        public float VScrollValue
        {
            get
            {
                SCROLLBARINFO sbi = GetSbi(OBJID.VSCROLL);
                if (sbi.rgstate[0] != 0)
                {
                    return float.NaN;
                }
                int thumbLen = sbi.xyThumbBottom - sbi.xyThumbTop;
                int rest = sbi.rcScrollBar.Bottom - sbi.rcScrollBar.Top - 2 * sbi.dxyLineButton - thumbLen;
                return (float)(sbi.xyThumbTop - sbi.dxyLineButton) * 100f / (float)rest;
            }
        }
    }
}

Gruß Robert

Thema: Serienkopierer für Sticks
Am im Forum: Projekte

Hallo alle,

war in einem Lehrgang, bei dem die Lehrer desöfteren irgendwelche Dateien auf die Sticks der Besucher kopieren mussten.
Bei 20 Personen ist das natürlich ein Aufwand.

Stick rein, Dateien suchen, rüber schieben, Stick abmelden (Für manche war letzeres wichtig), Stick raus und der nächste.

Habe mir gedacht, das geht doch einfacher. Warum haben wir einen PC?

Nun daraus ist das angehängte Programm entstanden.

Voraussetzung ist, dass bei Start der Aktion kein Stick eingesteckt ist.
Nun müssen sie nur noch:
Dateien auswählen. Aktion starten.
Anschließend nur Stick rein, warten auf Fertigmeldung. Stick raus. Nächster.
Wenn gewünscht (Default) meldet das Programm den Stick ab.

Alles einstellbar. Eine Kurzanleitung ist auch dabei.

Gruß Robert

PS: Die Kurzanleitung wird bei Start des Programms ins Verzeichnis geschrieben und beim Beenden wieder gelöscht. Wenn sie jemand haben möchte, dann während das Programm läuft kopieren.


€dit: Noch eins, meine beiden letzten Snippets sind dort eingebaut u.a. eigene, überschriebene MessageBox. Wäre lieb, wenn jemand irgendwelche Irrungen mitteilt.

Und habe festgestellt, dass es auch sehr praktisch sein kann, wenn man auch nur eine Kopie aus mehreren Verzeichnissen erstellen möchte.

Und natürlich können auch komplette Verzeichnisse kopiert werden.
Bei "C:\\" wird es wohl lange dauern und der Stick wird zu kein sein.
Dies sagt das Programm aber.

Thema: MessageBox-Kopie aber zum beeinflussen
Am im Forum: .NET-Komponenten und C#-Snippets

MessageBoxIcon erweitern

Möchte man den alten Mülleimer dazu haben:

    enum MessageBoxIcon
    {
        None = 0,
        Error = 16,
        Hand = 16,
        Stop = 16,
        Question = 32,
        Exclamation = 48,
        Warning = 48,
        Information = 64,
        Asterisk = 64,
// dies dranhängen
        Mülleimer,
    }

und

        internal void SetIcon(MessageBoxIcon icon)
        {
            switch (icon)
            {
                case MessageBoxIcon.None:
                    tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 0);
                    break;
                case MessageBoxIcon.Error:
                    tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F);
                    pictureBox1.Image = new Bitmap(Statics.StopIcon.ToBitmap(), 38, 38);
                    break;
                case MessageBoxIcon.Question:
                    tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F);
                    pictureBox1.Image = new Bitmap(Statics.QuestionIcon.ToBitmap(), 38, 38);
                    break;
                case MessageBoxIcon.Exclamation:
                    tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F);
                    pictureBox1.Image = new Bitmap(Statics.ExclamationIcon.ToBitmap(), 38, 38);
                    break;
                case MessageBoxIcon.Information:
                    tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F);
                    pictureBox1.Image = new Bitmap(Statics.InformationIcon.ToBitmap(), 38, 38);
                    break;
// dies dranhängen
case MessageBoxIcon.Mülleimer:
tableLayoutPanel2.ColumnStyles[1] = new ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F);
pictureBox1.Image = new Bitmap(Statics.GetLargeIcon(101).ToBitmap(), 38, 38);
break;
            }

Thema: MessageBox-Kopie aber zum beeinflussen
Am im Forum: .NET-Komponenten und C#-Snippets

Beschreibung:

Mit ging wieder etwas auf die Nerven.
Hatte eine Anwendung, bei der zusätzlich ein Explorer benutzt wird.
Kommt ein Fehler vor, so starte ich eine MessageBox. Wie Windows es will, liegt die dann hinter dem Explorer und der Anwender sieht nur, dass sich nichts tut.
Mehr als die Messagebox wollte ich aber nicht. Nur deren Position bestimmen.
Habe ich nicht geschafft und daher habe ich dies gemacht. (War mehr oder weniger nur Fleißarbeit)

Es sind 6 Dateien, die man auch in eine packen könnte. Der Übersicht halber habe ich das aber gelassen.

  • InterneForm.cs (mit Anhang)
  • MessageBox.cs
  • MessageBoxProperties.cs
  • MessageBoxStatics.cs
  • Statics.cs


Wenn man den Dateien den namespace seines Programms verpasst, so wird System.Windows.Forms.MessageBox überschrieben (o.ä)

Nachteil der ganzen Geschichte, man müsste sie in jeden namespace packen, in dem man sie braucht. Ansonsten ist es in den anderen namespaces nicht so komfortabel. Man müsste immer den namespace voranstellen in dem sie liegt.

Es ist erstmal nur eine Kopie der gewohnten MessageBox nur kann man hier z.B die Location bestimmen.

Teile, in denen man Sachen braucht mit denen ich noch nicht gearbeitet habe bzw. nicht arbeiten werde habe ich nicht gemacht. Da wird einfach das Original gestartet.

(Ab DefaultButton aufwärts) Obwohl ich den auch noch hinbekäme.

Ist natürlich jeder eingeladen dies zu ändern.

An den MessageboxButtons habe ich nichts geändert.

Die MessageboxIcons habe ich auch überschrieben.
Z.Zt noch ohne Wirkung, aber wenn jemand möchte kann er sich ein paar dazubauen.


    enum MessageBoxIcon
    {
        None = 0,
        Error = 16,
        Hand = 16,
        Stop = 16,
        Question = 32,
        Exclamation = 48,
        Warning = 48,
        Information = 64,
        Asterisk = 64,
        //Habe ich gemacht, damit man nach Wunsch andere anhängen kann
    }


In der Form dazu ist ein Beispiel.

Für Anregungen, Kritik, Erweiterungen und Hilfe bin ich dankbar.

Gruß Robert

PS: Dazu hatte ich die Icons gebraucht aus dem vorhergehenden Snippet.

Thema: Icons aus Shell32.dll und jetzt auch anderen DLLs
Am im Forum: .NET-Komponenten und C#-Snippets

Danke für eure Anregungen.

In der Imageres.dll liegen 185 Icons.
Denke mir, dass hier die Nummern einfacher sind als 100te Namen.

Habe jetzt die Klasse umgebaut, sodass man sich beliebige DLLs auslesen kann.
€dit: habe gerade festgestellt, dass man auch aus einer .exe lesen kann.

Änderungen:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Runtime.InteropServices;

namespace Programmierhilfe
{
    class ShellIconHelper 
    {
        private IntPtr[] largeIcon;
        private IntPtr[] smallIcon;

        [DllImport("Shell32.dll")]
        public extern static int ExtractIconEx(string libName, int iconIndex, IntPtr[] largeIcon, IntPtr[] smallIcon, int nIcons);

        /// <summary>
        /// AnzahlIcons Property
        /// </summary>
        private int anzahlIcons = 0;
        public int AnzahlIcons
        {
            get { return anzahlIcons; }
        }    

        public ShellIconHelper(string dllName) 
        {
            anzahlIcons = ExtractIconEx(dllName, -1, largeIcon, smallIcon, int.MaxValue);
            largeIcon = new IntPtr[anzahlIcons];
            smallIcon = new IntPtr[anzahlIcons];
            ExtractIconEx(dllName, 0, largeIcon, smallIcon, anzahlIcons);
        }
        public Icon GetLargeIcon(int number)
        {
            if (number > anzahlIcons - 1)
            {
                return null;
            }
            return Icon.FromHandle(largeIcon[number]);
        }
        public Icon GetSmallIcon(int number)
        {
            if (number > anzahlIcons - 1)
            {
                return null;
            }
            return Icon.FromHandle(smallIcon[number]);
        }
    }
}
und.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Programmierhilfe
{
    public partial class Form1 : Form
    {
        ShellIconHelper Imagesdll;
        public Form1()
        {
            InitializeComponent();
            // Hier Name der dll
            Imagesdll = new ShellIconHelper("Imageres.dll");
            boxes = new PictBox[Imagesdll.AnzahlIcons];
        }
        PictBox[] boxes;
        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < Imagesdll.AnzahlIcons; i++)
            {
                boxes[i] = new PictBox(i);
                boxes[i].Set(i,Imagesdll.GetLargeIcon(i),Imagesdll.GetSmallIcon(i));

                splitContainer1.Panel2.Controls.Add(boxes[i]);
            }
            Size = new Size(1125, 919);
        }
        private void splitContainer1_Panel2_Resize(object sender, EventArgs e)
        {
            if (boxes == null || boxes[0] == null)
            {
                return;
            }
            int breite = splitContainer1.Panel2.Width;
            int höhe = splitContainer1.Panel2.Height;
            int anzHor = breite / boxes[0].Width;
            int anzVert = boxes.Length / anzHor;
            int zeile = 0;
            int spalte = 0;
            for (int i = 0; i < boxes.Length; i++)
            {
                zeile = i / anzHor;
                spalte = i - zeile * anzHor;
                boxes[i].Location = new Point(spalte * boxes[i].Width, zeile * boxes[i].Height);
            }
        }
    }
}


Gruß Robert

PS: geht natürlich komfortabler, aber für jemanden der programmiert dürfte das ja kein Problem sein

Anhang: alle dlls(nicht unbedingt auf jedem PC), in denen Icons sind aus dem Verzeichnis System 32.

Name \t Anzahl \t Path

Thema: Icons aus Shell32.dll und jetzt auch anderen DLLs
Am im Forum: .NET-Komponenten und C#-Snippets

Das Projekt dazu

Thema: Icons aus Shell32.dll und jetzt auch anderen DLLs
Am im Forum: .NET-Komponenten und C#-Snippets

Icons aus Shell32.dll :

Wollte mir mal diese Icons zum "anfassen" machen. Habe getestet und es sind 278 Icons in der dll.
Dies habe ich hart verdratet


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Runtime.InteropServices;

namespace Programmierhilfe
{
    static class Statics
    {
        static private IntPtr[] largeIcon;
        static private IntPtr[] smallIcon;

        [DllImport("Shell32.dll")]
        public extern static int ExtractIconEx(string libName, int iconIndex, IntPtr[] largeIcon, IntPtr[] smallIcon, int nIcons);

        public static void Init() 
        {
            largeIcon = new IntPtr[278];
            smallIcon = new IntPtr[278];
            ExtractIconEx("shell32.dll", 0, largeIcon, smallIcon, 278);
        }
        public static Icon GetLargeIcon(int number)
        {
            if (largeIcon == null)
            {
                Init();
            }
            if (number > largeIcon.Length - 1)
            {
                return null;
            }
            return Icon.FromHandle(largeIcon[number]);
        }
        public static Icon GetSmallIcon(int number)
        {
            if (smallIcon == null)
            {
                Init();
            }
            if (number > smallIcon.Length-1)
            {
                return null;
            }
            return Icon.FromHandle(smallIcon[number]);
        }
    }
}


Will man eins haben, so wird die Init() ausgeführt und alle sind da.(zumindest die Handles)

Man holt sich ein Icon mit der Nummer:

            Icon myIcon = Statics.GetLargeIcon(nummer); // oder small
            Image bild = new Bitmap(myIcon.ToBitmap(), myIcon.Width, myIcon.Height);
Im angehängten Bild sind nicht alle sichtbar, aber im Projekt, das auch angehängt ist.

Gruß Robert

Thema: Erkennen, wann Stick herausgezogen wird.
Am im Forum: Rund um die Programmierung

Habs jetzt einfach mal gemacht. Mein PC läuft noch tadellos.

Wenns jemand braucht:

        bool DisableAutoplay = false;
        public Form1()
        {
            InitializeComponent();
            RegistryKey mk;
            if (GetRegKeyByFullName(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers", out mk, true))
            {
                object value = mk.GetValue("DisableAutoplay");
                if (value == null)
                {
                    mk.SetValue("DisableAutoplay", 1);
                    DisableAutoplay = true;
                }
            }

...
...
...
        }


// müsste noch erweitert werden. Wenn man an einen Key gerät, an den man nicht dran darf ist es nützlich.
        bool GetRegKeyByFullName(string name, out RegistryKey retValue, bool auchSchreiben)
        {
            retValue = null;
            int pos1 = name.IndexOf("\\");
            string region = name.Substring(0, pos1);
            name = name.Substring(pos1 + 1);
            switch (region)
            {
                case "HKEY_LOCAL_MACHINE":
                    try
                    {
                        retValue = Registry.LocalMachine.OpenSubKey(name,auchSchreiben);
                        return true;
                    }
                    catch (Exception)
                    {
                        return false;
                    }
                case "HKEY_CURRENT_USER":
                    try
                    {
                        retValue = Registry.CurrentUser.OpenSubKey(name, auchSchreiben);
                        return true;
                    }
                    catch (Exception)
                    {
                        return false;
                    }
                default:
                    break;
            }
            return false;
        }



        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (DisableAutoplay)
            {
                RegistryKey mk;
                if(GetRegKeyByFullName(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers", out mk, true))
                    mk.DeleteValue("DisableAutoplay");               
            }
        }

Gruß Robert

Thema: Erkennen, wann Stick herausgezogen wird.
Am im Forum: Rund um die Programmierung

Hallo herbivore,

zunächst, habe regmon geladen, ausgeführt und Vista sagt:

"Regmon has been replaced by ..."

Heißt jetzt Procmon und wird in einer ProcessMonitor.zip geliefert.(Der Suchworte wegen)


Dann sieht man aber den Wald vor lauter Bäumen nicht.
Ein wenig eingearbeitet und die richtigen Filter gesetzt, gings dann doch.

Habs noch nicht probiert, aber unter:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers

erscheint beim Disablen eine Value mit Namen DisableAutoplay diese hat dann den Wert 1.

Enable ich es wieder wird nicht der Wert auf 0 gesetzt, sondern das ganze Value weggenommen.

Nun, das sieht mir ungefährlich aus, wenn ich das vom Programm aus mache.

Was meinst du?

Gruß Robert

Thema: Erkennen, wann Stick herausgezogen wird.
Am im Forum: Rund um die Programmierung

Hallo Sekkiy,

danke, dass soll aber mein Programm machen.
Sobald es startet ausschalten, und wenn es beendet wird wieder auf den vorherigen Stand.

Gruß Robert

Thema: Erkennen, wann Stick herausgezogen wird.
Am im Forum: Rund um die Programmierung

Hallo tom-essen!

wenn man einfach nur den Stick herauszieht, dann kommt DBT_DEVICEREMOVECOMPLETE.

Wenn ich aber vor dem Herausziehen die Hardware sicher entferne, dann kommt DBT_DEVICEREMOVECOMPLETE sofort nach dem entfernen. Nicht mehr nach Herausziehen.

Ziehe ich dann den Stick heraus, dann kommt nicht brauchbares mehr.
(ausser besagter 7, die andauernd irgendwann kommt)

Windows merkt es aber, da nach abgemeldetem Stick und anschließendem Herausziehen ein Beep kommt.


Gruß Robert

€dit:
Nachdem beim Hardware sicher entfernen das DBT_DEVICEREMOVECOMPLETE gekommen ist, so kommt noch drei mal die 7.

Ziehe ich dann den Stick heraus, so kommt die 7 noch zwei mal.

Das ist regelmäßig und vorerst habe ich das auch genommen.

Befriedigend ist das aber nicht. X(


Weiss niemand, wie ich die Automatische Wiedergabe kurzzeitig ausschalten kann?

Thema: Erkennen, wann Stick herausgezogen wird.
Am im Forum: Rund um die Programmierung

Hallo alle,

möchte wissen, wann ein Stick entfernt wird.

Dazu habe ich schon gefunden:


        protected override void WndProc(ref Message m)
        {
            if (m.Msg == Native.WM_DEVICECHANGE)
            {
                if(aktiv)
                switch (m.WParam.ToInt32())
                {
                    //
                    // New device has just arrived
                    //
                    case Native.DBT_DEVICEARRIVAL:
                        label1.Text = "USB entdeckt";
                        progressBar1.Value = 0;
                        Application.DoEvents();
                        LoadItems();
                        break;
                    //
                    // Device is about to be removed
                    // Any application can cancel the removal
                    //
                    case Native.DBT_DEVICEQUERYREMOVE:
                        break;
                    //
                    // Device has been removed
                    //
                    case Native.DBT_DEVICEREMOVECOMPLETE:
                        label1.Text = "Stick kann entnommen werden.";
                        Application.DoEvents();
                        LoadItems();
                        break;
					case 7: // kommt öfter hat scheinbar keine genaue Bedeutung
                    default:
                        break;
                }
            }
            base.WndProc(ref m);
        }

Damit habe ich dann ein Programm geschrieben, dass sobald ein Stick eingesteckt wird, einige Dateien kopiert und dann die Hardware abmeldet.

Dann kommt DBT_DEVICEREMOVECOMPLETE

Nun möchte ich aber noch wissen, wann der Stick tatsächlich ausgezogen wird.

Außerdem finde ich nicht, wo man das Fenster für die Automatische Wiedergabe ausschaltet, das ja jedesmal beim einstecken eines Sticks erscheint.
Das soll aber nur ausgeschaltet sein, solange mein Programm läuft.

Gruß Robert

Thema: [gelöst] PreviewKeyDown für alle Steuerelemente!
Am im Forum: GUI: Windows-Forms

Hallo alle,

da ich dies brauchte und es wunderbar funktioniert, habe ich es noch etwas erweitert.

Und zwar habe ich zunächst das gleiche auch für KeyUp gemacht.

        public void initialize()
        {
            this.PreviewKeyDown += new PreviewKeyDownEventHandler(ctrl_PreviewKeyDown);
            this.KeyUp += new KeyEventHandler(Form1_KeyUp);
            initializeChildren(this.Controls);
        }

        private void initializeChildren(Control.ControlCollection ctrls)
        {
            foreach (Control ctrl in ctrls)
            {
                ctrl.PreviewKeyDown += new PreviewKeyDownEventHandler(ctrl_PreviewKeyDown);
                ctrl.KeyUp += new KeyEventHandler(Form1_KeyUp);
                initializeChildren(ctrl.Controls);
            }
        }
        private void ctrl_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            zeichnung1.KeyDownVonForm(sender, e);
        }
        void Form1_KeyUp(object sender, KeyEventArgs e)
        {
            zeichnung1.KeyUpVonForm(sender, e);
        }

Dann in dem Control, in dem ich es haben wollte zwei Funktionen gemacht.

        public void KeyDownVonForm(object sender, PreviewKeyDownEventArgs e)
        {
            myKeys[e.KeyCode] = true;
        }
        public void KeyUpVonForm(object sender, KeyEventArgs e)
        {
            myKeys[e.KeyCode] = false;
        }
Vorher musste ich mir ein Dictionary anlegen und es im Konstuktor des Controls füllen.

        Dictionary<Keys, bool> myKeys = new Dictionary<Keys, bool>();
        public Zeichnung()
        {
            foreach (Keys e in Enum.GetValues(typeof(Keys)))
            {
                myKeys[e] = false;
            }
         }

Jetzt habe ich überall im Control die gerade gedrückten Tasten vorliegen.

Test mit:

                string labelText = "";
                foreach (KeyValuePair<Keys, bool> item in myKeys)
                {
                    if (item.Value)
                    {
                        labelText += "  "+item.Key.ToString();
                    }
                    
                } 
                label1.Text = labelText;

Gruß Robert