Laden...

Forenbeiträge von FrankenDerStein Ingesamt 72 Beiträge

07.04.2016 - 16:28 Uhr

hallo Abt, ich habe das was du mir geraten hast getan.

Ich habe herausgefunden, das es mit den Datentypen meiner Struktur zutun hat, warum mir keine gescheiten werte zurückkommen.

Ich habe mich an Anfang, wen es um Datentypen ging, recht streng an die angaben von Microsoft gehalten, aber es scheint mir das einige Datentypen falsch sind.

Ein Beispiel ist ULONG ulMediaState(Microsoft Angabe) ,in c# existirt uLong ebenso, opennetcf benutz (was ich falsch fand, und doch funktioniert) uint, kann mir jemand sagen warum das so ist ?

07.04.2016 - 13:48 Uhr

Gute Frage, die Antwort lautet: Wenn ich es versuche haut er über 111 Fehler raus. 😕

Keine Ahnung warum.

07.04.2016 - 12:12 Uhr

Danke weismat für den Tipp.

Ich muss so langsam feststellen das hier keinen gibt der sich mit dieser Schnittstelle auskennt.

Ich habe meine arbeit und die von OpenNetCF verglichen aber leider keine Ungereimtheiten eindecken können, ebenso habe ich es mit 2 Geräten verglichen und bei beiden kommt das selbe Resultat.
Ich finde den Fehler einfach überhaupt nicht.

Leider fehlt mir die Möglichkeit OpenNetCF zu Debuggen, sonst könnte ich werte vergleichen.
🙁

06.04.2016 - 14:08 Uhr

Hallo weismat, danke für deine Anteilnahme.
ich werde dein verfahren so mal umsetzen.

Nachtrag:
Das Problem ist dar durch nicht gelöst, IntPtr rdBSSIDList.pData ist leider immer noch null.

06.04.2016 - 12:11 Uhr

hallo Abt, danke für deine Reaktion.

Ich beschreibe mal genauer was dort passiert.

Dieser Teil ermittelt den namen der WLAN Hardware


            INTFS_KEY_TABLE erg = new INTFS_KEY_TABLE();
            erg.dwNumIntfs = 0;

            erg.pIntfs = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)) * (int)erg.dwNumIntfs);// hier wird Speicherplatz reserviert(ob das notwendig ist weiß ich nicht, ich mach es aus Empfehlung)

            uint r = WZCEnumInterfaces(null, ref erg);// ihr werden die Informationen geholt und in die INTF_KEY_ENTRY Struktur gepackt.

            INTF_KEY_ENTRY i = (INTF_KEY_ENTRY)Marshal.PtrToStructure(erg.pIntfs, typeof(INTF_KEY_ENTRY));// Ihr werden die Informationen die über einen zeiger kommen, in die eigentliche Unterstruktur gepackt.

            string name = Marshal.PtrToStringUni(i.wszGuid);// Da der Name auch über einen Zeiger gegeben werden müssen die auch erst abgerufen werden.

Der Zweite Teil soll mir den Status über das WLAN gerät verschaffen, also ob er verbunden ist und wie gut die Verbindung ist.


            INTF_ENTRY a = new INTF_ENTRY();
            a.wszGuid = Marshal.StringToBSTR(name);//Hier wird der Name der Hardware übergeben in vorm eines Zeigers.
            uint aut = 0;
            r = WZCQueryInterface(null, 0xffffffff, ref a, out aut);//0xffffffff soll ihm vermitteln das er alle Felder der Struktur  füllen soll, die null sagt ihm das es auf dem Lokalen  Rechner läuft.
            if (a.rdBSSIDList.pData!=IntPtr.Zero)// um Fehler zu vermeiden wird geprüft ob der Zeiger der die Informationen hat, das leider nicht der Fall ist warum auch immer.
            {
                int L = 4;
                byte[] bA = new byte[L];
                Marshal.Copy(a.rdBSSIDList.pData, bA, 0, L);//Die Informationen werden hier aus eine byte Array ermittelt, die von einen Zeiger kommen.
                NDIS_802_11_BSSID_LIST O = new NDIS_802_11_BSSID_LIST(bA, true); // diese klasse ist aus openNetCF, die ist für das auswerten der byte array zu ständig, ich bin noch dabei raus zu finden was sie genau macht, den Microsoft war nicht sehr verständlich über das was dort rauskommt.
            }
            if (r == 0)
            {
                switch ((MediaState)a.ulMediaState)// werden die Informationen ausgewertet ob das gerät verbunden ist oder nicht.
                {
                    case MediaState.MEDIA_STATE_CONNECTED:
                        
                        break;
                    case MediaState.MEDIA_STATE_DISCONNECTED:
                        break;
                    case MediaState.MEDIA_STATE_UNKNOWN:
                        break;
                    default:
                        break;
                }
            }
            else
            {
                Debug.WriteLine(Marshal.GetExceptionForHR((int)r).Message);// Falls "r" nicht 0 sein sollte,bekomme ich hier mehr Infos raus
            }

Die Informationen zu der Schnittstelle habe ich von dieser Microsoft Webseite:Microsoft msdn
Außer der Parameter 0xff.. den habe ich aus OpenNetCF entnommen.

Nachtrag:
Das mit den Strukturen, die habe ich selbst interpretiert, durch ausprobieren, uint und intPtr gingen gleicher massen, ursprünglich war es intptr habe mich da von anderen mitreisen lassen (Google) und noch mal geändert.

Ich weiß das man sie Pointer nennt, ich bin da bisschen sehr deutsch und nenne sie Zeiger.

06.04.2016 - 10:33 Uhr

Ich habe das Problem gelöst, was für openNetCF Guid ist, ist für mich wszGuid.
Es ist bisschen verwirten :-\

Nun habe ich ein neues Problem, rdBSSIDList gibt mir nichts.

Ich hoffe jemand kennt sich aus. 🙁


static void Main(string[] args)
        {
            INTFS_KEY_TABLE erg = new INTFS_KEY_TABLE();
            erg.dwNumIntfs = 0;
            erg.pIntfs = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)) * (int)erg.dwNumIntfs);
            uint r = WZCEnumInterfaces(null, ref erg);
            INTF_KEY_ENTRY i = (INTF_KEY_ENTRY)Marshal.PtrToStructure(erg.pIntfs, typeof(INTF_KEY_ENTRY));
            string name = Marshal.PtrToStringUni(i.wszGuid);

            INTF_ENTRY a = new INTF_ENTRY();
            a.wszGuid = Marshal.StringToBSTR(name);
            uint aut = 0;
            r = WZCQueryInterface(null, 0xffffffff, ref a, out aut);
            if (a.rdBSSIDList.pData!=0)
            {
                int L = 4;
                byte[] bA = new byte[L];
                Marshal.Copy(a.rdBSSIDList.pData, bA, 0, L);
                //NDIS_802_11_BSSID_LIST O = new NDIS_802_11_BSSID_LIST(bA, true); 
            }
            if (r == 0)
            {
                switch ((MediaState)a.ulMediaState)
                {
                    case MediaState.MEDIA_STATE_CONNECTED:
                        
                        break;
                    case MediaState.MEDIA_STATE_DISCONNECTED:
                        break;
                    case MediaState.MEDIA_STATE_UNKNOWN:
                        break;
                    default:
                        break;
                }
            }
            else
            {
                Debug.WriteLine(Marshal.GetExceptionForHR(r).Message);
            }

        }

06.04.2016 - 08:21 Uhr

Hallo t0ms3n und danke für deine Reaktion.

Ja sagen die Hersteller des WLAN Geräts, ich sehe auch die fehl verhalten, und hoffe das es ist OpenNetCF.

OpenNetCF Code:


            INTF_ENTRY entry = new INTF_ENTRY();
            entry.Guid = adapterName; //Guid gibt es in meiner Struktur nicht und ist nicht von Microsoft angegeben
            INTF_FLAGS flags = 0;

            int result = WZCQueryInterface(null, INTF_FLAGS.INTF_ALL, ref entry, out flags);//enum : INTF_FLAGS.INTF_ALL = 0xffffffff

05.04.2016 - 15:36 Uhr

Hallo Kollegen, da ich auf die Idee kam das OpenNetCF Fehler bei der WZC Implementierung haben könnte, habe ich begonnen mich selbst mit WZC zu beschäftigen.
Leider hänge ich gleich zu beginn fest, denn WZCQueryInterface gibt mir immer 87 als Resultat aus, und ich verstehe nicht warum zum Henker er das tut.
Ich hoffe jemand kann mir da weiterhelfen.

Schöne grüße FrankenDerStein.


        static void Main(string[] args)
        {

            INTF_ENTRY a = new INTF_ENTRY();
            uint aut=0;
            uint r = WZCQueryInterface(null, 0xffffffff, ref a, out aut);//<----- r = 87
            
        }

        

        [DllImport("Wzcsapi.dll")]
        static extern int WZCEapolGetInterfaceParams(string pSrvAddr, byte[] pwszGuid, int dwSizeOfSSID, byte[] pbSSID, ref _EAPOL_INTF_PARAMS pIntfParams);

        [DllImport("Wzcsapi.dll",SetLastError=true)]
        static extern uint WZCEnumInterfaces(string pSrvAddr, ref INTFS_KEY_TABLE pIntfs);

        [DllImport("Wzcsapi.dll")]
        static extern uint WZCQueryInterface(string pSrvAddr, uint dwInFlags, ref INTF_ENTRY pIntf, out uint pdwOutFlags);

        [DllImport("Wzcsapi.dll")]
        static extern int WZCRefreshInterface(string pSrvAddr, int dwInFlags, INTF_ENTRY pIntf, out int pdwOutFlags);

        struct _EAPOL_INTF_PARAMS
        {
            public int dwVersion;
            public int dwReserved2;
            public int dwEapFlags;
            public int dwEapType;
            public int dwSizeOfSSID;
            public byte bssid;
        }

        struct INTF_ENTRY
        {
           public IntPtr wszGuid;
           public IntPtr wszDescr;
           public int dwContext;
           public ulong ulMediaState;
           public ulong ulMediaType;
           public ulong ulPhysicalMediaType;
           public int nInfraMode;
           public int nAuthMode;
           public int nWepStatus;
           public uint dwCtlFlags;
           public uint dwDynFlags;
           public uint dwCapabilities;
           public RAW_DATA rdNicCapabilities;
           public RAW_DATA rdSSID;
           public RAW_DATA rdBSSID;
           public RAW_DATA rdBSSIDList;
           public RAW_DATA rdStSSIDList;
           public RAW_DATA rdCtrlData;
        }

        struct RAW_DATA
        {
            public uint dwDataLen;
            public uint pData;
        }

        struct INTF_KEY_ENTRY
        {
            public IntPtr wszGuid;
        }

       unsafe struct INTFS_KEY_TABLE
        {
            public uint dwNumIntfs;
            public IntPtr pIntfs;
        }

18.03.2016 - 10:50 Uhr

Die WLAN Hrdware ist ein SDCSD40N1 von Laird und davor war es ein GSPI86861.

Die Herstellung von GSPI86861 ist eingestielt.

18.03.2016 - 10:18 Uhr

Ja das habe ich, alle Exception Fänger haben mal ein Debugger Ausgabe bekommen und es kam nichts.
Und ConnectToPreferredNetwork(SSID); bringt immer true zurück egal ob der Access Point existiert oder nicht.

18.03.2016 - 10:02 Uhr

Ja das habe ich aber er gibt leider keine Fehler raus, wo mit man arbeiten könnte.
Der einzige Fehler der manchmal beim Disposen vom GC geworfen wird ist der 0x80000002.
aber sonst kommt da nichts.

18.03.2016 - 09:48 Uhr

Wie gewünscht, der Code:



private bool Conecte()
        {

            #region Verbindungs erhaltung
            try
            {
                if ((!bTryToConnectToAPThread) && Device != null  && !isConected) //&& existAccessPoint != 0 && existAccessPoint != 2)
                {
                    bTryToConnectToAPThread = true;
                    new Thread(delegate()
                    {
                        try
                        {
                            bool er = Device.ConnectToPreferredNetwork(SSID);
                            if (er)
                            {
                                System.Diagnostics.Debug.WriteLine("ja");
                            }
                            else
                            {
                                System.Diagnostics.Debug.WriteLine("nein");
                            }
                            System.Threading.Thread.Sleep(60000);
                            if (!isConected)
                            {
                                if (Error2 > 10)
                                {
                                    Error2 = 0;
                                    DeviceMemory = null;
                                    ErrorControl();
                                    //GC.Collect();
                                }
                                else
                                {
                                    Error2++;
                                }
                            }
                            bTryToConnectToAPThread = false;
                        }
                        catch (Exception e)
                        {
                        }
                    }).Start();
                }
            }
            catch (Exception ex)
            {
                Log.AddEntry(ex.StackTrace);
                return false;
            }
            #endregion
            return true;
        }

public WirelessZeroConfigNetworkInterface Device
        {
            get
            {
                if (DeviceMemory == null && !instansexist)
                {
                    instansexist = true;
                    try
                    {
                        for (int i = 0; i < 2; i++)
                        {
                            foreach (var ni in NetworkInterfaces)
                            {
                                if (ni != null && ni is WirelessZeroConfigNetworkInterface)
                                {
                                    DeviceMemory = ni as WirelessZeroConfigNetworkInterface;
                                    break;
                                }
                            }

                            if (DeviceMemory == null)
                            {
                                if (Error4 > 30)
                                {
                                    Control.Powermanagement.Instance.ResetPocketPC();
                                }
                                else
                                {
                                    Error4++;
                                }
                                Log.AddEntry("Gerät wurde nicht gefunden, gerät wird neugestartet");
                                //
                                Restart();
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        DeviceMemory = null;
                    }
                    instansexist = false;
                }
                else
                {
                    try
                    {
                        if (DeviceMemory != null)
                        {
                            DeviceMemory.Refresh();
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
                return DeviceMemory;
            }
        }

public bool isConected
        {
            get
            {
                var bReturnValue = false;

                try
                {
                    bReturnValue = (Device != null && Device.NicStatistics.mediaState != null && Device.NicStatistics.mediaState == "MEDIA_STATE_CONNECTED") || con;

                    if (bReturnValue)
                    {
                        ErrorAll = 0;
                    }
                }
                catch (Exception ex)
                {
                }

                return bReturnValue;
            }
        }

 private INetworkInterface[] NetworkInterfaces
        {
            get
            {
                INetworkInterface[] Interface = NetworkInterface.GetAllNetworkInterfaces();
                //GC.Collect();
                return Interface;
            }
        }

Bitte sehr ich hoffe das ist das was du gewünscht hast.

18.03.2016 - 09:31 Uhr

Guten Tag, ich habe mal wieder ein Problem.

Mein Problem ist das OpenNetCF rum spackt und ich eine alternative brauche.
Dieses spacken zeigt sich meist dadurch das er falsch werte zurück gibt und Anweisungen keinerlei Wirkung zeigen.
Das betrifft OpenNatCF.Net, also im genaueren WLAN.

z.b. Er soll sich verbinden, nichts passiert oder er ist verbunden, aber erzeigt an das er es nicht ist.

Diese Probleme tauchen nur bei neuerer Hardware auf.

Da leider die Community Tod ist, bin ich gezwungen eine alternative zu suchen.

So frage ich euch, habt ihr eine Idee wie man das lösen könnte?

Es ist auch eine Möglichkeit ist, jemand weiß wie man es fixt, den ich habe Quellcode, nur nicht den überblick.

OpenNetCF Quellcode

Ich hoffe ihr könnt mein leid verstehen und könnt mich aus dieser Schlucht der Verderbnis herausziehen, danke.

05.08.2015 - 11:05 Uhr

Ich bedanke mich für ihren Einsatz, und wünsche ihnen ein schönes Leben.

Danke.

04.08.2015 - 09:49 Uhr

Guten Tag Kollegen und Kolleginnen

Ich habe da mal ein Frage, wie kann ich mit SharpSvn ermittel ob die Daten clientseitig auf dem neusten Stad sind oder nicht?

Ich hoffe ihr habt eine Antwort auf die Frage und wünsche euch noch einen schönen Tag.

26.06.2015 - 08:02 Uhr

Ich bedanke mich für Antwort.
Könntest du bitte mal Screenshots von deinem debug Ordner machen.

Das wäre hilfreich um zu sehn was ich falsch mache.

25.06.2015 - 15:30 Uhr

Ich habe dies so gemacht wie du es mir auf getragen hattest.

Wen ich das überhaupt richtig verstanden habe, ich habe alle Daten nun auch in den debug Ordner getan.

Leider hat es nichts verändert.

Leider gibt es kein aktuelleres Tutorial von denen.

25.06.2015 - 12:52 Uhr

Guten Tag

Ich habe mal wieder ein Problem, ich wollte OpenWebKitSharp ausprobieren, Version 3.0.1.0023 um genau zu sein.

Dazu habe ich die Ordner Core,Examples & Tests,Source und WebKit in den Projekt Ordner hinzugefügt.

Als nächstes habe ich einen Verweiß auf die WebKit\OpenWebKitSharp.dll erstellt.

Ich beziehe mich dabei auf dieses Tutorial: http://openwebkitsharp-tutorials.blogspot.de/

Das Projekt ist auf .NET Framework 4 x86 eingestielt .

Das Problem ist das er wen ich den webkitbrowser einbinde un eine Instands Starten will kommt mir diese Meldung:

Fehlermeldung:
Ein Ausnahmefehler des Typs "System.IO.FileLoadException" ist in WebBrowser2.exe aufgetreten.

Zusätzliche Informationen: Die Datei oder Assembly "WebKit.Interop, Version=536.0.0.0, Culture=neutral, PublicKeyToken=776ebf2b98ea65c6" oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. (Ausnahme von HRESULT: 0x80131040)

Ich hoffe ihr könnt mir helfen.
Danke.

24.06.2015 - 13:59 Uhr

Die Lösung war ganz einfach:

Ich musste Visual Studio von AnyCPU auf x86 umstellen.

Und schon hat es funktioniert.

Fertig 👍

24.06.2015 - 08:53 Uhr

Ich Bedanke mich für die schnelle Rückmeldung , werde mir die WebBrowser Alternative ankucken.
👍

Leider Funktioniert die Alternative nicht ,den Sie wirft diesen Fehler aus wen ich sie einbinden will.

Ein Ausnahmefehler des Typs "System.Runtime.InteropServices.COMException" ist in csExWB.dll aufgetreten.

Zusätzliche Informationen: Die COM-Klassenfactory für die Komponente mit CLSID {A1FE23EF-03EF-4759-B021-668443C37A24} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80040154.

🙁

==========

Problem wurde gelöst,nochmals danke für die Antwort.
👍

19.06.2015 - 15:37 Uhr

Hallo und guten Tag.

Wie ich schon im Titel erwähnt habe, suche ich eine Web Browser Engine, die ich in Windows Form Anwendung implementieren will.

Die soll schnell und möglichst auf dem derzeitigen Stand sein.
Sie soll das Herunterlanden von Dateien sollte möglich sein wie auch das Hochladen.
Die Engine sollte keine eigene Popup Funktion haben und auch kein Kontextmenü haben.
Möglichst alle Ereignisse wie Hoch und Runterladen und drucken und so weiter als Events raushauen.

Ich hoffe ihr könnt mir helfen, danke.

18.06.2015 - 10:06 Uhr

Hallo und Guten Tag

Ich hoffe ihr könnt mir helfen.
Ich schreibe derzeit einen Browser mit WebKit.net.
Das Problem ist das ich nicht weiß wie ich den accept-language Atribut ändern kann.
Kann mir da jemand helfen.

Danke.