Laden...
U
Benutzerbeschreibung
Konto auf Wunsch des Benutzers gesperrt

Forenbeiträge von userid4106 Ingesamt 457 Beiträge

13.01.2010 - 20:31 Uhr

Hallo,

ich habe eine WPF Form auf der ein Windows Media Player Control in einem Grid platziert wird. Das Element wird zur Laufzeit eingefügt:


namespace WebRadio
{
	public partial class MainWindow : Window
	{
        public MainWindow()
        {
            this.InitializeComponent();
        }

        AxWMPLib.AxWindowsMediaPlayer axWmp;

        private void Window_Initialized(object sender, System.EventArgs e)
        {
            System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost();
            axWmp = new AxWMPLib.AxWindowsMediaPlayer();
            host.Child = axWmp;
            this.wmp_Box.Children.Add(host);
            this.BackgroundImage.BringIntoView();
        }

	}
}

Das Control ist eine WinForms Steuerelementbibliothek mit dem WMP drin.

Mein Problem ist nun folgendes. Ich habe ein Hintergrundbild (das ist das mit den Mustern, der Farbverlauf ist was anderes) dass über das Control gelegt werden soll. In Blend habe ich das Bild ganz nach vorne gelegt und das Control ganz nach hinten. Wenn ich das Programm nun starte ist der Media Plaxer aber ÜBER dem Bild.

Was will ich erreichen:

Dass im WMP die Leiste unten angezeigt wird ist noch ein Schönheitsfehler. Das was ich möchte ist folgendes. Ich will nicht, dass man den schwarzen "Block" des WMP sieht sondern nur die Visualisierung. Deswegen soll das Hintergrundbild mit Opazität ÜBER das WMP Control.

Wie kann ich das bewerkstelligen?

10.01.2010 - 15:28 Uhr

So,

damit wir das Thema hier abschließen können.

Dell bietet im Moment ein Firmware Update an. Habe es versucht einzuspielen..Aber es ging natürlich nicht. Irgendeiner bei Dell hat da wohl gepennt denn der Techniker von Seagate sagte mir, dass man für dieses Modell keine neue Firmware einspielen kann. Musste also gezwungendermaßen das Ding einschicken. Jetzt geht wieder alles wunderbar:-) Sieht so aus als ob die HDD repariert wurde. Jedenfalls pappt da so ein Aufkleber drauf. soll mir auch egal sein...:-)

Danke nochmal für eure Hilfe

25.12.2009 - 20:45 Uhr

solange du auf deine Daten zugreifen kannst, sind sie noch in Ordnung Augenzwinkern

Fragt sich nur wie lange. Aber es stimmt auf jeden Fall was nicht. Es kann ja immerhin nicht sein, dass das ganze System dann für eine Sekunde komplett stehen bleibt.

Nein, ichh habe nichts an der Akustik oder Powermanagement umgestellt. Ich wüsste jedenfalls nicht wann oder wo. Benutze Windows 7 Pro 64Bit

25.12.2009 - 18:12 Uhr

Achso, klar..hab ich vergessen zu erwähnen. Unter Health wird mir nuchts angezeigt. Zudem Kann ich unter Informationen auf nichts unten klicken. Also SMART oder so Sachen. Sind bei mir alle deaktiviert. Kann es an dem Controller liegen? Ich meine Windows erkennt es ja auch als eine HDD obwohl ja 2 hinter stecken.

25.12.2009 - 14:31 Uhr

So, erstmal frohe Weihnachten an alle;-)

Sorry, dass ich jetzt erst schreibe. Aber besser als gar nicht:-P
Also eine Datensicherung wird bei mir regelmäßig gemacht. Das gehört für mich irgendwie jeden Sonntagabend dazu. Denn dafür ist mir meine mp3 Sammlung und andere Dinge einfach viel zu wichtig;-)

Also nochmal genau zu der Festplatte. Ich weiß ziemlich genau welche es ist. Es ist ein kurzes Klick Geräuch zu hören. Anschließend dreht sie wieder hoch. Es wurde zwar noch nichts mit einem BSOD quittiert aber es nervt trotzdem extrem da das System dann immer eine Sekunde hängen bleibt. Im prinzip ist nichts schlimmes passiert..aber es ist halt echt unerträglich und deswegen wollte ich auf Nummer sicher gehen.
Zudem passiert das ganze nur sporadisch. Mal hab ich 5 Stunden meine Ruhe und ein ander mal passiert es in 10 Sekunden 3Mal. Ich weiß echt nicht wovon das abhängig ist.

Hab mir gerade das Tool runter geladen und gestartet.
Zuerst hab ich mal den Benchmark laufen lassen. Allerdings nur lesend. Ich weiß jetzt nur nicht ob es gut oder schlecht ist. Deswegen frag ich euch mal;-)

Anschließend Hab ich den Error Scan laufen lassen. Jedoch mit Quick Scan. Alles grün. 0% Damaged Blocks.

Danach lief der File Benchmark mit einer Größe von 512 MB(Einmal für Laufwerk C. und einmal für Laufwerk D:). Screenshot ist wieder im Anhang

RandomAccess hab ich auch mal laufen lasssen. Allerdings wird mir unter Health nichts angezeigt. Gibt es eine andere Möglichkeit?

19.12.2009 - 13:35 Uhr

Hallo,

ich habe ein Dell Precision M6400 Notebook. Ich hab mir vor einigen Wochen 2 Seagate Momentus 7200.4 à 500GB gekauft und die Dinger im RAID 0 geschaltet. Nun klickt eine HDD. Ein Zeichen dafür das die defekt sein muss. Nun will ich aber auf Nummer sicher gehen denn wenn ich die HDD wieder einschicke dann üerprüfen sie die und wenn die NICHT kaputt ist dann komme ich für die kosten auf. Nun meine Frage. Kann es auch am RAID Controller liegen? Ehr unwahrscheinlich oder? HDD macht ein "Klick" Geräusch.

10.12.2009 - 15:54 Uhr

und wenn das nicht passt?! was gibt es für eine alternative??
ich kann übrigens sagen, dass in dem string der ersetzt werden soll, keine Umlaute vorkommen

10.12.2009 - 15:51 Uhr

Scheiße...es muss doch irgendwie möglich sein, dass ganze "roh" einzulesen, mit RegEx was zu ersetzen und dann wieder "roh" zurück zuschreiben..

10.12.2009 - 15:40 Uhr

Er findet nicht mal ein passendes Encoding 😦


            string Content = "";
            int Page = 0;
            foreach (EncodingInfo encoding in Encoding.GetEncodings())
            {
                Content = File.ReadAllText("D:\\50073_ohneSchrift.txt", encoding.GetEncoding());
                if (Content[0] == '„' && Content[1] == '™')
                {
                    MessageBox.Show(encoding.DisplayName + "\n\r" + encoding.CodePage.ToString() + "\n\r" + encoding.DisplayName, "Type");
                    Page = encoding.CodePage;
                    break;
                }
            }

            BinaryReader bin = new BinaryReader(File.Open("D:\\50073_ohneSchrift.txt", FileMode.Open), Encoding.GetEncoding(Page));
            byte[] requestBytes = bin.ReadBytes((int)bin.BaseStream.Length);
            bin.Close();
            Content = ByteArrayToString(requestBytes);
            
            Regex pattern = new Regex(@"(FontSize=)(\d*)(;)", RegexOptions.IgnoreCase);
            Content = pattern.Replace(Content, new MatchEvaluator(Ersetze));


            File.WriteAllText("D:\\50073_mit_Schrift.txt", Content, Encoding.GetEncoding(Page));

10.12.2009 - 15:07 Uhr

Weil ich dann sowas bekomme:

n�chsten

anstatt

n„chsten

10.12.2009 - 14:51 Uhr

Ja, ich stelle noch was damit an. Ich ersetze über reguläre Ausdrücke einige strings

10.12.2009 - 14:44 Uhr

Meinst du sowas?


BinaryReader bin = new BinaryReader(File.Open("D:\\50073_ohneSchrift.txt", FileMode.Open));

oder sowas?


            BinaryReader bin = new BinaryReader(File.Open("D:\\50073_ohneSchrift.txt", FileMode.Open), Encoding.Default);


Ansonsten weiß ich nicht wie du das meinst denn wie das Encoding der ursprünglichen Datei ist weiß ich nicht.

10.12.2009 - 14:32 Uhr

Hallo,

ich lese eine txt Datei ein.
Dort steht dann sowas drin wie:

Text010@1000000008 : TextConst 'DEU=Wir berweisen Ihnen innerhalb der n„chsten Tage den ausgewiesenen Betrag auf folgendes Konto:';

Die Umlaute sind schon nicht in der Textdatei und das muss auch so bleiben.
Falls es niemandem auffält, oben steht berweisen. Gemeint ist damit natürlich überweisen. Aber in der Datei steht davor ein Kästchen.

Ich lese die Datei nun mit einem BinaryReader ein:


            BinaryReader bin = new BinaryReader(File.Open("D:\\ohne_Schrift.txt", FileMode.Open), Encoding.GetEncoding("ISO-8859-1"));
            byte[] requestBytes = bin.ReadBytes((int)bin.BaseStream.Length);
            bin.Close();
            string Content = ByteArrayToString(requestBytes);


            Regex pattern = new Regex(@"(FontSize=)(\d*)(;)", RegexOptions.IgnoreCase);
            Content = pattern.Replace(Content, new MatchEvaluator(Ersetze));

            BinaryWriter write = new BinaryWriter(File.Open("D:\\mit_Schrift.txt", FileMode.CreateNew));
            write.Write(Content);
            write.Close();

Nun steht in der neuen Datei aber nicht mehr der string von oben sondern:

  Text010@1000000008 : TextConst 'DEU=Wir ?berweisen Ihnen innerhalb der n?chsten Tage den ausgewiesenen Betrag auf folgendes Konto:';  

Ich MUSS aber die alten "Umlaute", also das was man noch Umlaute nenen kann, behalten!

Ich wandel den string so um:


        private string ByteArrayToString(byte[] arr)
        {
            System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
            return enc.GetString(arr);
        }

Wer kennt eine Lösung?

09.12.2009 - 18:38 Uhr

Hallo,

ich habe im Moment einfach leider nicht die Zeit um mich in das Thema einzuarbeiten.
Deswegen meine Frage, ob mir vielleicht jemmand schnell unter die Arme greifen könnte.

Folgende Situation:

Ich habe eine 2MB große *.txt Datei. Also seeeehr viel Text.In der suche ich eine bestimmte Zeichenfolge:

Size=12;

Die "12" kann auch ein einstelliger Wert sein. Es kommt kein Wert vor der mehr als 2 Stellen hat. Das möchte ich nun ersetzen durch:

Font=Schriftart;
Size=13;

Mir liegt die Textdatei ein einem string vor. Es muss also nichts anderes passieren als nach dem string zu suchen, die Zahl um 1 erhöht werden und dann wird ein fester string davor gesetzt. Nach dem neuen string davor muss eine neue Zeile beginnen.
Kann jemand helfen?

09.12.2009 - 09:34 Uhr

Hallo,

ich habe mal eine Frage auf die ich auch keine Antwort wusste. Ein Arbeitskollege kam auf mich zu und fragte mich ob ich wüsste wie man unter Vista SCHNELL VIELE Dateien löschen könnte. Ich wusste wo zwar sein Problem war hatte aber keine Lösung. Folgende Situation(Ich kenne das System nicht aber ich gehe schwer von einem gut ausgerüsteten Server aus..)

Er möchte viele Dateien löschen(weit über 50.000(!)). Das Problem kenne ich von meiner Maschine auch. Das kann echt lange dauern. Logisch ist natürlich, dass es doppelt so schnell gehen würde, wenn ich den Papierkorb vermeide. Allerdings sind die Sachen dann auch "weg"(also was man so gelöscht unter Windows(Vista) nennen kann).
Das ist in dem Fall aber mal nicht so schlimm. Ich frage mich nur schon die ganze Zeit wo bei der Sache der Flaschenhals ist(HDD ist ein RAID System). Was ist da genau so langsam beim eigentlichen löschen und wie kann ich es beschleunigen?
P.S.: cmd bringt genau so wenig Erfolg

06.12.2009 - 17:52 Uhr

                        MemoryStream Antwort = new MemoryStream(decoded_data);
                        XmlTextReader XML_Antwort = new XmlTextReader(Antwort);
                        XML_Antwort.MoveToContent();
                        int Rückgabe = -1;

                        while (!XML_Antwort.EOF)
                        {
                            XML_Antwort.ReadToFollowing("ReturnCode");
                            Rückgabe = XML_Antwort.ReadElementContentAsInt()
                            if (Rückgabe != -1) break;
                        }

06.12.2009 - 17:26 Uhr

Hallo,

ich habe nicht direkt ein Problem aber ich würde gerne etwas sauber ausprogrammieren.
Ich lese über ein HttpWebResponse eine XML ein. Aus dieser XML entferne ich eine Signatur und habe zum Schluss einen byte Array zum arbeiten. Eine XML Antwort sieht dann z.B. so aus:


<?xml version="1.0" encoding="utf-8"?>
<xxxResponse>
  <Header>
    <ReturnStatus>
      <ReturnCode>1</ReturnCode>
      <ReturnDescription>anyType</ReturnDescription>
    </ReturnStatus>
  </Header>
</xxxesponse>

Nun habe ich es quick&dirty gemacht.


                        System.Text.Encoding encoder = System.Text.Encoding.UTF8;
                        string Rückgabe = encoder.GetString(decoded_data);

Ich habe also ganz stumpf den byte Array(decoded_data) in einen String umgewandelt um dann über "contains" den ReturnCode auszulesen. Eigentlich ist das immer eindeutig zu identifizieren. Hab dann also immer mit der Zeichenfolge ">1<" oder ">1000<" usw verglichen. ReturnCodes wurden festgelegt und liegen mir vor. Nur finde ich die Methode nicht ganz sauber und würde das gerne etwas eleganter machen.

Ich habe dann mal das byte Array über einen Stream eingelesen.


                        MemoryStream Antwort = new MemoryStream(decoded_data);
                        XmlTextReader XML_Antwort = new XmlTextReader(Antwort);

Aber irgendwie weiß ich jetzt nicht weiter. Wie bekomme ich denn meinen RetunCode? Also das was in dem Attribut steht. Ich bin kein XML Spezi und würde mich über jede Antwort freuen.

19.11.2009 - 14:18 Uhr

Hallo,

ich bräuchte vielleicht mal ein bisschen Code für folgendes Projekt. Links reichen auch oder sonstiges. Weiß nur nicht so genau wo ich anfangen soll.

Gewünscht ist ein Windows Dienst(der nicht das Problem ist) der sich an den https Port klemmt und auf XML Dokumente wartet. Wenn eins kommt dann wird das Dokument überprüft und abgespeichert. Dann wird eine Rückmeldung an die andere Seite geschickt die die Request XML gestellt hat. Es wird im Prinzip nur ein Status zurück gegeben.
Das ganze muss natürlich nicht nur eine Anfrage behandeln können sondern sehr viele parallel.

Jemand eine Idee?

19.11.2009 - 11:03 Uhr

Das Problem steh hier beschrieben.
Problem war, dass das Zertifikat doch nicht gültig war. Man hatte mir ein "neues" gegeben und dabei hätte ich das "alte" nehmen müssen. Nun funktioniert es:-) Ist also gelöst
Danke

19.11.2009 - 09:49 Uhr

Hallo,

ich habe folgendes Problem. Ich sende eine signierte XML Anfrage an einen Server.
Auf meinem Arbeitsnotebook funktioniert das auch wunderbar aber sobald ich das auf meinem privaten Notebook oder einer anderen Maschine teste bekomme ich den Fehler den man auf dem ScreenShot im Anhang sehen kann.

Zu dem Projekt habe ich eine *.p12 und eine *.crt Datei bekommen. Beide wurden auch in den Speicher installiert. Zum Test hab ich die beiden auch nochmal in den Speicher für Drittanbieter installiert. Es führte jedoch nicht zu dem Ergebnis was ich erwartet hatte. Wer hat eine Idee?

Also nochmal nebenbei. Die XML signiere ich mit der p12 und einem Passwort(was auch richtig ist, ich habe es ja schon auf dem Arbeitsnotebook probiert und da gehts ja). Pfad zur p12 stimmt auch.

13.11.2009 - 17:43 Uhr

Hallo,

naja SETI meine ich nicht gerade. Hab das auch mal ausprobiert aber ich muss ganz ehrlich sagen, dass ich für sowas nichts übrig habe. Jedenfalls wollte ich unsere Stromrechnung nicht mit der Suche nach kleinen grünen Männchen belasten;-)

Ich dachte ehr an was "cooles". Freeware Videokonvertierung, Demos (Im Sinne von Demo Scene) und alles was man sonst noch so auf die Grafikkarte loslassen könnte:-) Bin da für so ziemlich alles offen. Nur so SETI Kram interessiert mich nicht;-)

13.11.2009 - 16:50 Uhr

Hallo,

ich habe eine Quadro FX Grafikkarte die sich den ganzen Tag eigentlich nur langweilt. Wollte deswegen mal wissen, ob ich coole Programme kennt, die auf der Grafikkarte rumrechnen und was sinnvolles tun.

Bis jetzt kenne ich nur Badaboom von NVIDIA und BarsWF

04.11.2009 - 14:25 Uhr

Ich habe die Tage einen sehr interessanten Blog Eintrag gefunden.
Runtime Code Patching - Not for the Faint of Heart

[EDIT=herbivore]Bitte fremde Blog-Einträge nur verlinken, aber nicht als Vollzitat ins Forum kopieren ==> Vollzitat des Blogeintrags entfernt.[EDIT]

03.11.2009 - 10:15 Uhr

Hallo,

ich habe sehr wenig Ahnug vom signieren bla bla bla...
Folgendes Problem habe ich.
Ich muss eine XML an einen Kunden senden. Quasi eine Art Anfrage. Diese XML muss CMS signiert sein.
Anbei habe ich eine *. crt und eine *.p12 Datei bekommen. Was soll ich damit anfangen?!
Wird die Signatur unter die XML gesetzt oder was und wie soll das nachher aussehen?
Kann jemand einen Link liefern oder am besten Code?

28.10.2009 - 09:29 Uhr

Hallo,

ich habe ein Problem und weiß nicht wo ich anfangen soll.
Ich zerbrech mir da schon eine ganze weile den Kopf.
Ich würde gerne von einer url eine *.rar herunterladen. Zur Bestätigung sende ich dann eine xml zurück an die url. Wenn alles positiv verlaufen ist, löscht der Server die *.rar und andersfalls natürlich nicht.
Wie mache ich das? Ein paar Stichwörter wären gut, Code wäre noch besser;-)

27.10.2009 - 16:25 Uhr

Sehr schnell. Danke;-)

27.10.2009 - 16:09 Uhr

Hallo,

mich würde mal interessieren wie bzw wer eine 32/64 Bit Applikation lädt. Wenn ich z.B. mit einem Doppelklick auf eine *.exe klicke muss ja irgendwas passieren. Was ist dabei wichtig? Die Extension "exe" wäre dann ja schon ganz nett. Aber wer kontrolliert, ob bspw. "MZ" zu Beginn einer ausfährbaren Datei steht?
Wo ist das genau verankert? Gibt es eine Funktion irgendwo dazu die man mal im IDA Pro begutachten kann?

27.10.2009 - 16:02 Uhr

Coole Sache..Danke:-)

26.10.2009 - 16:48 Uhr

Das ist aber nicht das was ich wollte. Ich wollte verstehen wie Microsoft das macht. Also wo da der Trick ist.
Nehmen wir man an ich würde wie in dem Beispiel eine Funktion im Kernel manipulieren. Ich bezweifel das man den "mal eben" öffnen und was rein schreiben kann. Denn immerhin wird die DLL ja "benutzt" bzw ist geladen. SOllte das selbe sein we mit einem laufenden Programm. Das kann man dann doch auch nicht löschen/manipulieren...Oder?(Ohne Trick 17 und von hinten durch die Brust ins Auge)

26.10.2009 - 16:17 Uhr

Dann wäre der NO-OP aber Schwachsinn. Und die werden das bestimmt nicht gemacht haben weil sie gerade Langeweile hatten!

26.10.2009 - 15:43 Uhr

Ah..ok..das wusste ich nicht. Jetzt stellt sich aber mir doch die Frage wie Microsoft das macht wenn die ihrer HotPatches einspielen...Denn immerhin mache ich ja nichts anderes als den halben Prologue zu überschreiben. Ob ich jetzt einen jmp mache oder fürs erste einfach nur einen ret ist doch völlig wurscht....

26.10.2009 - 12:38 Uhr

Hi,
ne..das ist es nicht. Ich überschreibe ja eine Funktion die im kernel32 liegt. Deswegen kann diese überschriebene Funktion ja nicht wieder verschwinden wenn ich das Programm schließe. Also kann es ja schon.
Wenn die Funktion in meiner eigenen Applikation wäre dann könnte ich mir das wohl auch denken;-)
Aber das ist sie ja eben nicht.

23.10.2009 - 21:12 Uhr

Das soll keine Werbung sein aber oben rechts kann man sich ein nettes Paket herunter laden.

Ich musste mich auch mal damit beschäfitgen und fand das alles sehr hilfreich. Andere Anbieter können dir auch sehr gerne weiter helfen

22.10.2009 - 15:46 Uhr

Das ist aber was anderes;-)

22.10.2009 - 15:07 Uhr

"If you prefer not to sign in you may skip this step."

22.10.2009 - 13:44 Uhr

Hallo,

ich habe mal ein bisschen im Internet nach einer merkwürdigen Sache gesucht.
Beim disassemblieren einer DLL ist mir halt mal aufgefallen, dass im Prologue eine Assembler Instruktion enthalten ist die einem 2Byte NOP sehr ähnlich sieht.



mov edi, edi


Ich bin dann mal irgendwann dahinter gekommen, dass diese no-op während eines HotPatches gegen einen jmp zur gepatchten Funktion ersetzt wird.
Jetzt hab ich also mal versucht da was zu basteln(C++)



void lockUnhandledExceptionFilter()
{
    HMODULE kernel32 = LoadLibraryA("kernel32.dll");
    assert(kernel32);

    if (FARPROC gpaSetUnhandledExceptionFilter = GetProcAddress(kernel32, "SetUnhandledExceptionFilter"))
    {
        unsigned char expected_code[] = {
                                            0x8B, 0xFF, // mov edi,edi
                                            0x55,       // push ebp
                                            0x8B, 0xEC, // mov ebp,esp
                                         };

        // only replace code we expect
        if (memcmp(expected_code, gpaSetUnhandledExceptionFilter, sizeof(expected_code)) == 0)
        {
            unsigned char new_code[] = {
                                            0x33, 0xC0,       // xor eax,eax
                                            0xC2, 0x04, 0x00, // ret 4
                                        };

            //BOOST_STATIC_ASSERT(sizeof(expected_code) == sizeof(new_code));

            DWORD old_protect;
            if (VirtualProtect(gpaSetUnhandledExceptionFilter, sizeof(new_code), PAGE_EXECUTE_READWRITE, &old_protect))
            {
                CopyMemory(gpaSetUnhandledExceptionFilter, new_code, sizeof(new_code));

                DWORD dummy;
                VirtualProtect(gpaSetUnhandledExceptionFilter, sizeof(new_code), old_protect, &dummy);

                FlushInstructionCache(GetCurrentProcess(), gpaSetUnhandledExceptionFilter, sizeof(new_code));

                SetUnhandledExceptionFilter(0);
            }
        }
    }
    FreeLibrary(kernel32);
} 


Nun meine Frage. Wenn ich den Code rennen lasse dann wird auch, wie erwartet, die Instruktionen geändert. Wenn ich allerdings meine Applikation neu starte dann ist wieder der alte Prologue drin. Woran kann das liegen und wie kann ich es realisieren, dass die Instruktionen permanent(also so lange das System läuft) vorhanden sind?
Außerdem würde ich gerne wissen wann das wieder "zurück gestellt" wird. Immer wenn meine Applikation beendet wird oder ist da irgendwo ein Timer der dann als Beispiel alle 2 Sekunden überprüft ob alles ok ist?

22.10.2009 - 13:26 Uhr

Also erstmal danke für die Antworten:-)
Alle echt super. Das mit den unteschiedlichen HAL`s, also welche es überhaupt gibt, war schon mal sehr interessant.
Nein, ich bin kein Student. Allerdings ist es auch möglich, dass Dokument herunter zu laden ohne Student zu sein. Ich werd mir das mal ansehen da ich glaube, dass es mir bei einigen DIngen sehr weiter helfen könnte;-)

14.10.2009 - 13:14 Uhr

Hallo,

ich beschäftige mich im Moment viel mit dem Windows Kern. Würd halt gerne mal verstehen wie alles im Hintergrund abläuft.
Nun habe ich mal eine Frage.
Der hal.dll wird ja quasi auf die Hardware "aufgesetzt" damit der ntoskernl und andere Treiber und so weiter, auf die Hardware zugreifen können. Jetzt kann ja jedes System bzw. jede Hardware anders sein. Habe gelesen, dass Windows oberhalb dieser Schicht immer gleich ist. Wie ist das nun mit dem HAL? Der ist dann ja immer anders oder?
Wird der bei einer frischen Installation neu komiliert oder was läuft da genau ab?

22.09.2009 - 13:55 Uhr

itel klingt doof, es fiel mir aber nichts besseres ein. Müsste irgendwie rausfinden, ob ein Benutzer gerade was am PC macht. Völlig egal ob es eine Eingabe ist oder die Maus bewegt wird.
Was natürlich noch besser wäre ist, wenn ich feststellen könnte, ob der Benutzer nur in einem bestimmten Fenster aktiv ist.

Hintergrund:
Ich aktualisiere mit einer Applikation ein anderes Fenster. Das soll aber nur passieren wenn der Benutzer da nicht gerade etwas tut.

Jemand eine Idee?

22.09.2009 - 13:29 Uhr

Ok, ist zwar ein bisschen was her aber trotzdem möchte ich mal ebe die Lösung für mein Problem posten:

Ich brauche meine Funktion:


        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern int PostMessage(int hWnd, int msg, int wParam, IntPtr lParam);
        public const int VK_F5 = 0x74;

Zuerst besorge ich mir in diesem Fall alle Fenster mit einem bestimmten Titel


            List<IntPtr> ReturnWert = new List<IntPtr>();
.
.
.
            else
            {
                Process[] p = Process.GetProcesses();
                foreach (Process i in p)
                {
                    if (i.MainWindowTitle == Name)
                    {
                        ReturnWert.Add(i.MainWindowHandle);
                    }
                }
                return ReturnWert;
            }

Und dann update ich es:


                       List<IntPtr> Handles = FindWindow(Para.Modus, s);
                        foreach (IntPtr i in Handles)
                        {
                            PostMessage(i.ToInt32(), WM_KEYDOWN, VK_F5, IntPtr.Zero);
                            PostMessage(i.ToInt32(), WM_KEYUP, VK_F5, new IntPtr(1));
                        }

17.09.2009 - 10:42 Uhr

Hallo,

wir haben ein kleines Problem mit unserer ERP Software was ich gerne eben lösen würde. Nun meine Frage:

Wie kann ich mit einer kleinen Applikation(die im Hintergrund in einer Schleife läuft solange das Programm an ist) ein anderes Fenster aktualisieren? Also neu zeichnen lassen oder so?

25.08.2009 - 11:14 Uhr

Hmm...also muss ich im Prinzip den XML Code in eine xml Datei klatschen und die auslesen um damit arbeiten zu können?

Ich poste mal einfach die XML und lösche ein Paar Sachen raus da diese XML von einem Kunden ist..


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
	<xs:element name="xxxRequest">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Header">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Version" type="xs:string" fixed="1.0">
								<xs:annotation>
									<xs:documentation>Für diese Version muss "1.0" gesetzt sein.</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Body">
					<xs:complexType>
						<xs:choice>
							<xs:element ref="FilesRequest"/>
							<xs:element ref="ReceiptFiles"/>
						</xs:choice>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="xxxResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Header">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="ReturnStatus">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="ReturnCode" type="xs:int"/>
										<xs:element name="ReturnDescription"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:annotation>
		<xs:documentation>-------------------------------</xs:documentation>
	</xs:annotation>
	<xs:element name="FilesRequest">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="FileKind" type="EnumFilesKind"/>
				<xs:element name="BVNRToGet" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Ist dieses Feld gesetzt, werden nur Dateien dieser BV-Nummer zurückgegeben.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ReceiptFiles">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ReceiptFile" maxOccurs="unbounded">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Filename" type="xs:string"/>
							<xs:element name="ReturnCode" type="xs:int">
								<xs:annotation>
									<xs:documentation>Wie in der Spezifikation angegeben. (0 ist okay = Daten werden gelsöcht, !0 Fehler = Daten werden auf dem Server in ein Fehlerverzeichnis verschoben.)</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="EnumFilesKind">
		<xs:restriction base="xs:string">
			<xs:enumeration value="AllFiles"/>
			<xs:enumeration value="RealFiles"/>
			<xs:enumeration value="TestFiles"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>


Ich muss jetzt beispielsweise den ReturnCode auslesen denn ich von meinem Server bekomme...

25.08.2009 - 10:43 Uhr

Hallo,

ich habe ein XML Schema bekommen was ich einlesen muss. Diese XML wird dann modifiziert und an einen Server gesendet. Der Server weiß dann ahand der XML ob ich etwas bei ihm abholen möchte bla bla bla...
Aber wie kann ich nun die XSD einlesen und die einzelnen "Elemente"(so heißen die Dinger doch oder?) verändern?

Code wäre jetzt echt nicht schlecht...Oder ein Link...
Danke

24.08.2009 - 15:56 Uhr

Hmm....schon mal nicht schlecht. Mir würde eine kostenlose Alternative aber noch besser gefallen:-) Also ich bin noch offen für Antworten...

20.08.2009 - 11:44 Uhr

Hallo,

ich wollt "mal eben" ein paar Dinge über Bluetooth verschicken. Nun möchte ich wissen, ob es eine Wrapperklasse oder sowas in der Art gibt, die Widcomm und Windows Stack beherrscht. Im moment arbeite ich mit InTheHand für den Windows Stack. Aber ich habe keine Lust/Zeit selber was für den Widcomm Stack zu erstellen. Gibt es da nicht was?

12.08.2009 - 20:59 Uhr

Hat jemand mal eine Antowort für das Problem gefunden? Ich steh genau vor dem selben Problem:-(

10.08.2009 - 14:54 Uhr

Was kommt denn für eine Exception und weißt du wieso sie kommt?

10.08.2009 - 10:14 Uhr

++

Laufweksbuchstaben ermitteln
++

Variante 1


GetLogicalDrives();

Return Value

If the function succeeds, the return value is a bitmask representing the currently available disk drives. Bit position 0 (the least-significant bit) is drive A, bit position 1 is drive B, bit position 2 is drive C, and so on.
MSDN

Variante 2


DWORD WINAPI GetLogicalDriveStrings(  __in   DWORD nBufferLength,  __out  LPTSTR lpBuffer);

Parameters

nBufferLength [in]

The maximum size of the buffer pointed to by lpBuffer, in TCHARs. This size does not include the terminating null character. If this parameter is zero, lpBuffer is not used.  

lpBuffer [out]

A pointer to a buffer that receives a series of null-terminated strings, one for each valid drive in the system, plus with an additional null character. Each string is a device name.  

Return Value

If the function succeeds, the return value is the length, in characters, of the strings copied to the buffer, not including the terminating null character. Note that an ANSI-ASCII null character uses one byte, but a Unicode null character uses two bytes.

If the buffer is not large enough, the return value is greater than nBufferLength. It is the size of the buffer required to hold the drive strings.

If the function fails, the return value is zero. To get extended error information, use the GetLastError function.
MSDN

Hier mal eine C++ Lösung die ich mal benutzt habe:



	int size = GetLogicalDriveStrings ( 0, 0 );
	char *pDrives = new char[ size + 1];
	GetLogicalDriveStrings ( size, pDrives );

	while (*pDrives)
	{
		string Pfad = pDrives;
		Pfad.erase(2);
		Rekursive_Datei_Suche(Pfad);
		pDrives = &pDrives[strlen(pDrives) + 1];
	}//Alle Laufwerke nach Dateie durchsuchen und zum Server schicken 

++

Typ des Laufwerks ermitteln
++

The GetDriveType function determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.

UINT GetDriveType(LPCTSTR lpRootPathName 	// address of root path 
);	

Parameters

lpRootPathName

Points to a null-terminated string that specifies the root directory of the disk to return information about. If lpRootPathName is NULL, the function uses the root of the current directory.

Return Values

The return value specifies the type of drive. It can be one of the following values:

Value Meaning
0 The drive type cannot be determined.
1 The root directory does not exist.
DRIVE_REMOVABLE The drive can be removed from the drive.
DRIVE_FIXED The disk cannot be removed from the drive.
DRIVE_REMOTE The drive is a remote (network) drive.
DRIVE_CDROM The drive is a CD-ROM drive.
DRIVE_RAMDISK The drive is a RAM disk.

MSDN

Mit mehr kann ich im Moment nicht dienen. Aber einfach mal die MSDN durchforsten und nach Hard Disk Info oder so suchen. Ansonsten könnte man vielleicht auch was mit der WMI machen?

14.07.2009 - 10:02 Uhr

Hallo,

wir haben in der Firma folgendes Problem:

Auf einem Notebook soll bei einm Kunden eine Applikation auf einem Windows Mobile Gerät demonstriert werden. Da sich unsere Firma aber das Geld für das Gerät sparen möchte muss das leider in einem Emulator ausgeführt werden. Das ist bis dahin ja auch nicht das Problem denn der von Microsoft ist ja eigentlich zu gebrauchen. Nun kommt der Knackpunkt...Auf dem Notebook(was beim Kunden KEINEN Netzwerkzugang hat) läuft nicht nur der Emulator sondern auch ein WebService. Das Gerät kommuniziert also mit dem WebService über TCP/IP. Wir stehen aber nun vor dem Problem, dass der Emulator keine virtuellen Netzwerke unterstützt. Unsere Technik ist der Meinung das der Emulator in einer VMWare laufen muss denn diese unterstützt dieses Feature. Allerdings wil ich das nicht da sonst alles extrem in die Knie gehen würde.
Nun snd wir also auf der Suche nach einem anderen Emulator. Kann mir jemand einen Tipp geben wie ich das Problem lösen könnte? Für andere Ansätze bin ich natürlich auch dankbar. Was aber nicht in Frage kommt sind folgende dinge:

-VMWare kostet Geld(und das will man sparen)
-Einen Router beim Kunden anzuschließen um beide Geräte mit IP`s zu versorge sieht scheiße aus
-Ein richtiges Gerät kostet auch Geld, fällt also auch flach