Laden...
B
blutiger_anfänger myCSharp.de - Member
Student Meerbusch, NRW Dabei seit 26.04.2008 293 Beiträge
Benutzerbeschreibung

Forenbeiträge von blutiger_anfänger Ingesamt 293 Beiträge

13.01.2010 - 00:01 Uhr

Eigentlich sollte es reichen, wenn du im Designer den WindowState auf **minimized **und ShowInTaskbar auf **false **stellst. (Siehe Bild im Anhang.)

12.01.2010 - 23:51 Uhr

Und gleich noch eine weitere Frage bezüglich des NetCF. Ich habe einen Timer in einer Windows Mobile Anwendung. Wenn ich oben im Menü meiner anwendung auf das "x" klicke, minimiert sich diese und wird nicht geschlossen. (Das ist auch in Ordnung so.) Jedoch möchte ich gerne, dass der Timer auch weiterhin ausgelöst wird, wenn das Programm im Hintergrund ist.
Jedoch hört der Timer auf auszulösen, wenn das Programm über das "x" minimiert wurde. Woran liegt das und wie kann man dies umgehen?

viele Grüße,
ein blutiger Anfänger

12.01.2010 - 10:24 Uhr

danke schonmal für die tipps. smsgate brauch ich nicht, da ich eine sms-flat auf dem handy hab...

12.01.2010 - 09:16 Uhr

Guten Morgen,
ich bräuchte mal einen Anstoß in die richtige Richtung. Ich würde gerne die Kontakte (und später auch weitere Daten) meines Windows Mobile Handys auslesen (per USB) um sie dann in einer Desktopapplikation weiterzuverwenden. Als ich nach Kontakte auslesen gegoogelt hatte, fand ich jedoch immer nur Anleitungen und Snippets wie dies auf dem Gerät durchzuführen ist um diese für netcf Anwendungen zu nutzen, die auf dem Geärt laufen. Ich würde Sie jedoch gerne über meinen PC/Desktoprechner auslesen.

Und meine zweite Frage wäre. Habt ihr eine Ahnung wie ich mein Handy als SMS Modem nutzen kann? Es gibt von Microsoft eine Freeware (SMS Sender) jedoch ist diese nicht x64 kompatibel und erkennt mein Geät im Kompatibilitätsmodus (XP SP2 zum Beispiel) nicht mehr. Mir wären auch etwas tiefergreifende Snippets/Docs recht. Es muss nciht umbedingt so eine Fertiglösung wie der SMS Sender sein.

Viele Grüße,
ein blutiger_anfänger

11.12.2009 - 01:56 Uhr

@hobofan:
Steht schon auf der ToDo-Liste. Ich werd' schauen, dass ich das am Wochenende eingebaut bekomme.

@Lion1984:
Ist mir so noch nciht aufgefallen. Werde ich wohl mal nachforschen müssen. Theoretisch dürfte es aber nicht sein, da im Autostart die Applikation ja auch nciht anders als durch einen Doppelklick deinerseits gestartet wird. Oder kommt dieser "Fehler" auch vor, wenn du GITM direkt per Doppelklick startest?

viele Grüße

07.12.2009 - 13:40 Uhr

Hallo,

Der Weg über Hooks, scheint mir etwas viel zu sein. Das ganze kann man sicherlich auch bequemer haben, indem man eine eigene WndProc-Methode an die ListView dranhängt. Das ganze nennt sich SubClassing und wird über SetWindowLong, GWL_WNDPROC und ganz wichtig CallWindowProc erledigt. Dann brauchst du auch keine wilden externen DLLs und sonstwas.

Ich denke nicht, oder habe ich etwas falsch verstanden? Das ListView liegt in einem anderen Process. Somit ist der Hook über eine native .DLL doch unumgänglich, oder etwa nicht?
In der Doku der SetWindowsLongPtr Funktion, die der Nachfolger der SetWindowsLong Funktion ist, steht zudem:

The SetWindowLongPtr function fails if the window specified by the hWnd parameter does not belong to the same process as the calling thread.

Das heißt das dürfte nicht klappen... Trotzdem Danke für die Idee! 😃

dass es so aussieht, als ständen da sinnvolle Werte drin.

Ok, wie gesagt es sind einzelne Bytes gesetzt. Jedoch keien hintereinanderhängenden (vom Index des Arrays her). Sprich eine einzelne Zahl kann z.B. schlecht den Pointer LV_ITEM.pszText darstellen. Heißt also ich bekomme schon ein falsches ByteArray zurück. Meine ReadMemoryProcess gibt jedoch true, also eine erfolgreiche Abhandlung zurück.
Liegt der Fehler also im lParam Pointer? Langsam weiß ich nicht mehr weiter...

p.s.: Wenn ich per SendMessage an genau den gleichen Process die Nachricht LVM_FINDITEM schicke und ein entsprechendes LV_FINDINFO mitgebe, dann bekomme ich einen gültigen Index zurück. Der Process, den ich über OpenProcess geöffnet habe, stimmt also schonmal definitiv.

viele Grüße,
Raffi

07.12.2009 - 08:24 Uhr

hast du dir das ausgelesene ByteArray mal angeguckt? Sieht das gültig aus? Wenn ja, stimmt möglicherweise einfach nur das Alignment der Felder in deiner Deklaration des Structs nicht.

Entschuldige die Nachfrage, aber was meinst du mit gültig? Die ReadProcessMemory gibt aufjedenfall ein Bytearray der Länge

(uint)System.Runtime.InteropServices.Marshal.SizeOf(new LV_ITEM())

(In diesem Fall 72) zurück das an 6 Stellen/Indexen auch Werte enthält.

Außerdem ist ja für den Text ein Pointer eingetragen. Das heißt du müsstest die Daten an der Adresse, auf die der Pointer zeigt, auch noch auslesen.

Dessen bin ich mir bewusst jedoch sieht

H???\0\0A_A^A]A\\_^][?f???\b\0??\b\0??\b\0=?\b\0??\b\0??\b\0d?\b\0?\b\0A?\b\0??\b\0??\b\0a?\b\0x?

für mich nicht danach aus, als hätte der zurückgegeben Pointer gestimmt. (Und ja ich habe das zurückgegebene ByteArray per ASCII Encoding zurück encodiert.) Der Fehler muss also wo anders liegen.

Davon abgesehen, solltest du dich bei deiner Suche nach Informationen nicht auf LVM_GETITEM und LV_ITEM einschränken, sondern das Vorgehen ist ja für alle Nachrichten, die in LPARAM einen Pointer auf eine Struktur oder ein Array enthalten, das gleiche.

Das verstehe ich auch nicht? Ich möchte doch explizit nur in dem Fall nachschauen, wenn das ListView ein GetMessage Nachricht abgesendet hat?!

viele Grüße,
und schon ein mal Dank für die schnelle Antwort,
Raffi

07.12.2009 - 00:59 Uhr

Ich bin mittlerweile gut 2 Tage am suchen und habe das Gefühl ich habe Google, diverse Foren und die MSDN bis in die letzte Ecke abgesucht und sehe langsam den Wald vor lauter Bäumen nicht mehr.

Die Sache ist folgende. Ich habe ein ListView Control eines anderen Prozesses gehooked und lese erfolgreich dessen Messages mit.
Nun möchte ich jedesmal, wenn die Nachricht LVM_GETITEM von meinem Programm erfasst wird, wissen um welches Item es sich handelt. (Also dessen Text, sowie Index im ListView erfahren.)

Wenn ich das richtig sehe enthält der lParam der abgefangenen Nachricht einen Pointer zu einer LVITEM Structure, die ja wiederum den Namen, sowie den Index beinhalten sollte.

Mein Problem ist nun, wie komme ich an die Daten der LVITEM Structure?

Mein Plan war per OpenProcess und derThreadID vom ListView das Prozess-Handle aufzugreifen und dann per ReadProcessMemory, an der von lParam der Message gezeigeten Stelle, das LVITEM Object auszulesen.

Das ausgelesene ByteArray wollte ich dann mit folgender Funktion wieder in ein LVITEM Objekt umwandeln.
Jedoch bekomme ich alles Mögliche in mein LVITEM Objekt zurück, aber weder einen gültigen Pointer für die Text Eigenschaft des Items, noch einen gültigen Index.

Habe ich etwa schon einen Denkfehler in meiner Vorgehensweise, oder Doch im Code?


[DllImport("user32.dll")]
        public static extern uint GetWindowThreadProcessId(IntPtr hWnd,
            out uint dwProcessId);

        [DllImport("kernel32.dll")]
        public static extern IntPtr OpenProcess(uint dwDesiredAccess,
            bool bInheritHandle, uint dwProcessId);

        [DllImport("kernel32.dll")]
        public static extern bool CloseHandle(IntPtr handle);

         [DllImport("Kernel32.dll")]
        public static extern bool ReadProcessMemory
        (
            IntPtr hProcess,
            IntPtr lpBaseAddress,
            byte[] lpBuffer,
            UInt32 nSize,
            ref UInt32 lpNumberOfBytesRead
        );

        [Flags]
        public enum ProcessAccessFlags : uint
        {
            All = 0x001F0FFF,
            Terminate = 0x00000001,
            CreateThread = 0x00000002,
            VMOperation = 0x00000008,
            VMRead = 0x00000010,
            VMWrite = 0x00000020,
            DupHandle = 0x00000040,
            SetInformation = 0x00000200,
            QueryInformation = 0x00000400,
            Synchronize = 0x00100000
        }
        
        public struct LV_ITEM
        {
            public uint mask;
            public int iItem;
            public int iSubItem;
            public uint state;
            public uint stateMask;
            public IntPtr pszText; // string
            public int cchTextMax;
            public int iImage;
            public IntPtr lParam;
            public int iIndent;
            public int iGroupId;
            public int cColumns;
            public IntPtr puColumns;
        }
        
        static T ArrayToStructure<T>(byte[] buffer)
        {
            GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
            T structure = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(T));
            handle.Free();
            return structure;
        }

        public byte[] Read(IntPtr handle, IntPtr address, UInt32 size, ref UInt32 bytes)
        {
            byte[] buffer = new byte[size];

            ReadProcessMemory(handle, address, buffer, size, ref bytes);

            return buffer;
        }

        void CallWndProc_CallWndProc(IntPtr Handle, IntPtr Message, IntPtr wParam, IntPtr lParam)
        {           
           
            if (Message.ToInt32() == 4171) //4171 = LVM_GETITEM Message
            {
                    uint vProcessId = 0;    
            
                    GetWindowThreadProcessId(Handle, out vProcessId);                      

                    IntPtr vProcess = OpenProcess((uint)ProcessAccessFlags.All, false, vProcessId);
                    uint bytesread = 0;
                    LV_ITEM lvi = ArrayToStructure<LV_ITEM>(Read(vProcess, lParam, (uint)System.Runtime.InteropServices.Marshal.SizeOf(new LV_ITEM()), ref bytesread));
                  
                    CloseHandle(vProcess);
                }
            }

Ich hoffe ihr könnt mir den nötigen Wink mit dem Zaunpfahl geben...

Viele Grüße,
Raffi
**
edit://
Falls es hilft - ich nutze Windows Vista Ultimate 64bit. Die unmanaged hook.dll und mein Programm sind beide explizit für x64 kompiliert.**

03.12.2009 - 14:07 Uhr

@WienX:
Klick mal auf das Zahnrad neben den beiden Boxen! 😉

01.12.2009 - 01:07 Uhr

Und als i-Tüpfelchen nochmal ein Snippet für dein beispieltext2-Beispiel.


private void FormConfig_Load(object sender, EventArgs e)
{
            XmlDocument doc = new XmlDocument();
            doc.Load(Page.MapPath("DEINEXML.xml"));

            foreach (XmlElement el in doc.GetElementsByTagName("var"))
            {
                if (el.Attributes["name"].Value == "test2")
                    Textbox1.Text = el.Attributes["value"].Value;
            }
}


private void Button1_Click(object sender, EventArgs e)
{
            XmlDocument doc = new XmlDocument();
            doc.Load(Page.MapPath("DEINEXML.xml"));            
            foreach (XmlElement el in doc.GetElementsByTagName("var"))
            {
                if (el.Attributes["name"].Value == "test2")
                    el.Attributes["value"].Value = Textbox1.Text;
            }
            doc.Save(Page.MapPath("DEINEXML.xml"));
}

viele Grüße,
Raffi

01.12.2009 - 00:50 Uhr

Direktes bearbeiten über FTP ist nicht möglich (korrigiert mich, wenn ich falsch liege). Du müsstest die Datei herunterladen, lokal bearbeiten und wieder hochladen.

Wenn du möchtest, dass die Bearbeitung direkt auf dem Server stattfindet, dann ist es in deinem Fall (nur 2 Strings, also überschaubar) wahrscheinlich am praktikabelsten ein PHP Script zu erstellen, das 2 Strings annimmt und diese in deine XML schreibt.

Das Script kannst du dann mit einem System.Net.HttpWebRequest aufrufen und deine beiden strings übergeben. Das wäre dann quasi die simpelste Form eines "Webservice".

Da ich nicht weiß, wie fit du in PHP bist hier noch zwei Hilfen:
http://www.schattenbaum.net/php/variable2.php
http://www.schattenbaum.net/php/datei.php

viele Grüße,
Raffi

30.11.2009 - 03:10 Uhr

*Push*
Neue Version erschienen! Weitere Infos im ersten Post!

27.11.2009 - 08:55 Uhr

Ich danke euch beiden schon mal! Die 3 Sache werde ich heute nachmittag gleich mal angehen.

@King-Malkav:
Was verstehst du unter einfacher bzw. wie stellst du dir eine einfachere Eingabe vor?

viele Grüße,
Raffi

27.11.2009 - 00:09 Uhr

Ich habe vorhin die vorläufige Version meines aktuellen Projekts fertiggestellt.
Es heißt GITM (Give It To Me) und ist ein Schnellstarter.

Ihr könnt einen beliebigen Hotkey definieren, welcher eine Art Minikonsole öffnet.
Neben den von euch selbst definierten Befehlen/Verknüpfungen bringt GITM einen festintegrierten Befehl mit sich - "inet".

inet

-> öffnet den standardbrowser

inet www.meinewebseite.de

-> Ruft die angegebene Webseite auf.

Desweiteren beeinhaltet GITM in der aktuellen Version eine Liste an festintegrierten Suchplugins. Die bei Bedarf dazugeschaltet werden können und mit denen ist möglich ist ohne große Umwege zum Suchresultat der Wahl zu gelangen.
Momentan beherrscht GITM folgende Suchdienste:*Google *Bing *Wikipedia *Wolfram Alpha *IMDB *Leo *Youtube *Magistrix *Ebay *Amazon *Twitter *Flickr *Google Images

Wem das nicht reicht, der kann ohne große Probleme mit Hilfe des Konfigurators weitere Suchdienste einpflegen.

Ich würde mich freuen, wenn ihr mir Feedback geben würdet. (Das ich das Rad nicht neu erfunden habe, weiß ich selbst. 😉 )

viele Grüße,
Raffi

**:::

So und schon wieder gibt's eine neue Version!

Was ist neu?*Befehle lassen sich nun auch per Tastenkombination bearbeiten (schnellerer Workflow) *Die Tags der Befehle lassen sich nun wahlweise mit dem Assitenten, oder für die schnellen per Hand bearbeiten *Im Designmodus ist es nun auch möglich Farbverläufe für die Eingabemaske zu definieren *Die Hotkeykonfiguration wurde überarbeitet (Aufgabe des Menüs leichter ersichtlich/logischer, Hinweistext korrigiert) *Eingabe des Hotkey intuitiver *Zu den festintegrierten Suchdiensten können nun zusätzlich eigene Dienste hinzugefügt werden *Ein "Wetterdienst" wurde hinzugefügt *Es kann auf Wunsch über GITM direkt auf's Dateisystem hinzugegriffen werden *Eine Updatecheck wurde hinzugefügt

Ich würde mich wie immer freuen, wenn der ein oder andere von euch mir sein Feedback gibt!
Die aktuelle Version findet ihr hier (Da sie für einen Anhang im Board hier zu groß war...):** GITM_16-02-2010.zip**
Viele Grüße,
Raffi

p.s.: Ein paar neue Screenshots findet ihr hier: http://www.abload.de/gallery.php?key=dic2hFzW


[B][COLOR]
edit://
(11.02.10) Neue Version hochgeladen! [/COLOR][/B]

[U]Was ist neu?[/U]
[list]
[*]Der Fehler, dass GITM beim ersten starten in der Taskleiste angezeigt wird, wurde behoben
[*]Es sind mehrere Tags für einen Befehl möglich. (Zum Beispiel 3 Tags: AE, AfterEffects, AdobeAE  für ein Programm (Adobe After Effects))
[*]Die persönliche Kommandoliste kann Im-, sowie Exportiert werden. (Im Falle von Updates, oder Neuinstallationen)
[*]Die Liste der "festintegrierten" Sonderbefehle ist erweitert worden. So können nun eine handvoll Internetdiensten/Suchmaschinen mit einem klick aktiviert werden. Die Tags, um diese aufzurufen, können frei gewählt werden.
[*]Die Eingabemaske und der Layer können im Design bequem über das Einstellungsmenü von GITM angepasst werden
[/list] 

Ich würde mich freuen, wenn der ein oder andere von euch den Download wagt und mir sein Feedback gibt!

Die aktuelle Version findet ihr hier (Da sie für einen Anhng im Board hier zu groß war...): [URL]GITM_11-02-2010.zip[/URL]

Viele Grüße,
[I]Raffi[/I]

p.s.: Ein paar Screenshots der aktuellen Version findet ihr hier: [URL]http://www.abload.de/gallery.php?key=dic2hFzW[/URL]





[B][COLOR]
edit://
(30.11.09) Neue Version hochgeladen! [/COLOR][/B]

Was neu ist:
[list]
[*]Intuitivere Kommandoerstellung möglich
[*]GITM kann angehalten werden (Hotkey-Überwachung de-/aktivieren. Nützlich während der Nutzung von Spielen, die evtl. die gleichen Hotkeys nutzen)
[*]Fehler bei erst Start und öffnen des Einstellungen-Fensters behoben
[*]Info Dialog lässt über OK schließen
[*]Kommandos lassen sich bearbeiten
[*]Kommando Fenster lässt sich zusätzlich zum Hotkey auch mit Esc-Taste schließen
[*]Kontextmenü des TrayIcon auch über Doppelklick erreichbar
[*]Hotkey-Kombinations-Erstellungen können abgebrochen werden
[/list] 


Kommandos können nun auch durch Drag und Drop von Dateien, sowie Verknüpfungen erstellt werden. (Bei Verknüpfungen werden ggf. noch die Startparameter mit übernommen.)
Außerdem steht eine Liste der installierten Software zur Verwendung die ebenfalls zur Kommandoerstellung genutzt werden kann.


Was leider nicht ging:
[list]
[*]Hotkey-Kombinationen aus Modifier-Tasten (Die 4 vordefinierten Tasten aus der Combobox. Klappt nicht, da mein Globales Hotkey Snippet das nicht mag... :( )
[*]Die Config.xml wird immernoch im gleichen Verzeichnis wie die .exe erstellt. Später gibt es einen Installer somit ist das nciht weiter nervend, da dieser dann bei beliegen eine Verknüpfung auf dem Desktop anlegt. (@Lion1984)
[/list] 


@Trekki1990:
Klappt diese Version jetzt bei dir? (Wenn nein, dann würde ich mich über eine genaue Fehlermeldung freuen!)

@all:
Ich freue mich über eure Kritik. Schreibt mir bitte, ob ich eure Ideen/Vorstellungen treffend umgesetzt habe und ob ihr noch Fehler gefunden habt.


viele Grüße,
Raffi

25.11.2009 - 23:50 Uhr

Das man natürlich immer einen Schlüssel braucht zum entschlüsseln war mir auch klar. Jedoch dachte ich, oder besser hoffte ich, dass es andere Möglichkeiten gäbe, als diese in AppData oder der Registry an besagter Stelle abzulegen. Aber anscheinend bleibt mir nichts anderes übrig.
Was den Programmcode angeht kann man halt nur schauen ob man den einigermaßen vernünftig unkenntlich bekommt, denn dank .Net-Reflector ist es ansonsten für den Angreifer ja kein Problem an meinen Algorhytmus + Programmcode zu kommen.

Trotzdem noch ein mal Danke für eure Antworten!

viele Grüße,
Raffi

25.11.2009 - 23:25 Uhr

Danke für deien Hilfe, aber wir reden aneinander vorbei. Wie ich ein Passwort hinterlegen kann ist mir klar. Ich will es aber wie Firefox machen. Also so, dass meine Applikation das Passwort nutzen kann, ohne das der User es eingeben muss und es verglichen wird. Deshalb sprach ich ja auch von Firefox open Source, da es sich ja um eine Kodierungsmethode handeln muss, die in beide Richtung, ohne das zutun des Users funktioniert.
(Wenn du im Firefox ein PW speicherst, dann musst du es ja beim aufrufen der Seite auch nciht jedes mal erneut eingeben und Firefox gleicht es nur ab. Firefox stellt es zur Verfügung ohne dein zutun.)

viele Grüße,
Raffi

25.11.2009 - 23:00 Uhr

Guten Abend,
ich weiß, dass das thema schon öfters besprochen wurde. Jedoch bin ich mir immernoch nicht ganz sicher wie ich es am besten angehe.
Ich möchte Zugangsdaten lokal speichern. (Ja, ich weiß, dass es am sichersten ist, wenn ich sie garnicht lokal bzw. garnicht speichere.)
Die Daten codiert in die Registry oder eine Datei zu schreiben finde ich etwas unglücklich...

Nun meine eigentliche Frage. Wie lösen das eigentlich weitverbreitete Programm wie zum Bleistift Firefox?
Soweit ich weiß, legt Firefox die Daten auch nur in 2 Dateien ab, jedoch so verschlüsselt, dass man immer wieder liest es sei eigentlich nicht möglich diese ohne weiteres zu entschlüsseln.
Da Firefox jedoch Open Source ist, müsste es doch auch hier ein leichtes sein, die Verschlüsselungsmethode herauszufinden. Das heißt die dürfte doch eigentlich nicht im Quelltext enthalten sein. Wie wird das gelöst?

Ich hoffe es sind noch nicht alle von dem Thema soweit genervt, dass keiner mehr antwortet. 😉

viele Grüße,
Raffi

25.11.2009 - 09:12 Uhr

Weil hier im Thread mehrmals gefragt wurde nach kostenlosen Hostern...

http://x10hosting.com/freehosting.php
http://www.heliohost.org/home/
http://www1.websamba.com/

Wenn ich mich recht erinnere unterstützen die alle ASP und sind kostenlos und werbefrei. Viel Spaß beim testen!

06.11.2009 - 16:20 Uhr

Das ist mein sekundärer Bildschirm und das Startmenü hat auch keinen Hintergrund.
Folgende Fehlermeldung kommt, wenn ich im Kontextmenü auf "Desktop wechseln":

Beschreibung:
  Stopped working

Problemsignatur:
  Problemereignisname:	CLR20r3
  Problemsignatur 01:	taskleiste wpf.exe
  Problemsignatur 02:	0.8.0.509
  Problemsignatur 03:	4af34179
  Problemsignatur 04:	PresentationFramework
  Problemsignatur 05:	3.0.0.0
  Problemsignatur 06:	498d263f
  Problemsignatur 07:	56da
  Problemsignatur 08:	14
  Problemsignatur 09:	System.ArgumentNullException
  Betriebsystemversion:	6.0.6002.2.2.0.256.1
  Gebietsschema-ID:	1031

Lesen Sie unsere Datenschutzrichtlinie:
  http://go.microsoft.com/fwlink/?linkid=50163&clcid=0x0407
 

Ich gehe dann auf Anwendung schließen und die Taskleiste wird trotzdem auf dem anderen Bildschirm angeziegt. (Auch wenn Sie eigenltihc wegen eines Problems geschlossen werden musste...)

viele Grüße,
Raffi

06.11.2009 - 07:32 Uhr

Ansich gefällt mir die Idee schon sehr gut. Habe die neuste Version mal getestet. Leider passt weder das Desgin noch die Position.

Falls es dir hilft - ich habe...

  • Vista Ultimate
  • Monitor 1: 1920x1200px
  • Monitor 2: 1680x1050px

und das ganze sieht so aus:
siehe Dateianhang

viele Grüße,
ein blutiger Anfänger

12.10.2009 - 16:52 Uhr

Ein Traum! Ich danke herzlichst!

es grüßt,
der blutige_anfänger

12.10.2009 - 16:08 Uhr

Ich habe einen Windows Dienst, der unteranderem per FileSystemWatcher Ordner im Netzwerk überwachen soll.
Jedoch funktioniert das ganze nur, wenn die direkten Pfade zum Netzwerkordner angegeben werden.

Um die Konfiguration möglichst einfach zu gestalten, möchte ich das der Administrator die Netzwerkordner über einen FolderBrowserDialog auswählen kann.

Nun kann es vorkommen, dass der Administrator den Netzwekrordner im Dialog über ein Netzwerklaufwerk auswählt.

Dies würde meinen Dienst zum Absturz bringen, da er wie gesagt nicht mit Netzwerklaufwerken, sondern nur mit direkten Pfaden umgehen kann. (alá \Server\MeinOrdner )

Ich weiß, das ich in der Konsole über den Befehl "net use" unter anderen auch die direkten Pfade der gemappten Laufwerke sehen kann.

Ein Aufruf der Konsole über meinen Service um den direkten Pfad herauszufinden, ist keine Lösung.

Von daher meine Frage an euch: Wie kann ich ohne die Konsole per Process aufzurufen, die Infos bekommen, die mir der Aufruf net use bietet?

Klassen zum Mappen/Unmappen habe ich schon ein paar gefunden, jedoch keine die die Remote Adresse eine bereits existierenden Laufwerk liefert.

Liebe Grüße,
ein blutiger_anfänger

05.10.2009 - 11:25 Uhr

verwendetes Datenbanksystem: XML

Ich möchte möglich einfach auf die Werte eines XML Dokumentes zugreifen können. Dafür hatte ich folgendes ins Auge gefasst.
http://www.codingday.com/xml-c-class-generator-for-c-using-xsd-for-deserialization/

Das funktioniert an sich auch ganz gut. Jedoch passen die erstellten Klassen nur für einen ganz bestimmten XML-Aufbau. Kommt in meinem XML Dokument nun eine Node mehr vor, so müsste ich die Klasse neu generieren, damit ich auch die neue Node abrufen kann.

Nun meine eigentliche Frage. Lässt sich so etwas auch zur Laufzeit erstellen, oder muss ich wirklich jedes mal den weg über die Konsole gehen?

Grüße,
ein blutiger_anfänger

25.09.2009 - 15:37 Uhr

Wieso ist das ein Fehler? user und pass sind Variablen und keine Textboxen, etc. Von daher ist doch alles ok?!

22.09.2009 - 21:36 Uhr

Das war wahrscheinlich das, was er meinte, als er sagte er hätte es nicht gefunden. Wenn die Angaben in seinem Profil stimmen, dann wird er es auch nicht finden, da es in der Express Edition diese Einstellung so einfach über die Oberfläche wie in der Professional nicht gibt.

Um das gewünschte Ziel mit der EE (Express Edition) zu erreichen muss man die .csproj Datei des Projekt mit einem Editor öffnen und dann folgendes Element in die oberste "Property Group"-Node eintragen.

<PlatformTarget>x86</PlatformTarget>

liebe Grüße,
Raffi

06.09.2009 - 14:04 Uhr

Danke für die vielen und vorallem schnellen Antworten!
Ich hab's jetzt so gelöst wie NeuroCoder es vorgeschlagen hatte. Die Idee kam mir auch schon, aber ich dachte vielleicht gäbe es da eine simplere/fertige Methode.

Euch allen noch einen schönen Sonntag!
Gruß,
Raffi

06.09.2009 - 13:37 Uhr

Guten Mittag!
Wie kopiert man eine List<T> in eine andere? Ich möchte eine List kopieren um an der Kopie zu testen ob der nächste Schritt in meinem Programm effektiv ist. Ist er effektiv will ich das ganze auch mit meiner Original List tun, wenn nicht, dann soll die kopierte List wieder verworfen werden.
Erstelle ich meine TestList nun jedoch so:

List<List<int>> VirtualKeys = new List<List<int>>(OriginalKeys);

Und nehme dann Änderungen an der "VirtualList" vor, so werden diese auch in der Originallist vorgenommen.
Ich hatte auch schon folgendes probiert:

OriginalKeys.CopyTo(VirtualKeys);

Das war jedoch auch nicht erfolgreich, da mit unverständlicherweise eine List[]<int>, statt List<List<int>> gefordert wurde.

Ich hoffe Ihr könnt mir helfen...

Liebe Grüße,
Raffi

03.09.2009 - 09:20 Uhr

hey blacksheep1,
das sind nicht zufällig die .ppm Bilder vom BWINF?

17.08.2009 - 13:28 Uhr

Ich hab Vista x64. Installation lief einwandfrei. Es werden auch 2 Netzwerkadapter gefunden, aber egal welchen ich wähle - es wird nichts angezeigt. Hast du eine Idee?
Edit:// Unter Windows XP Professional x86 läufts einwandfrei. Ich hab auf dem X64 auch schon die Fiewall und sämtliche andere AV's ausgestellt, aber es tut sich nichts...

13.08.2009 - 18:14 Uhr

Da hast du mich vielleicht falsch verstanden... Ich will die Bytes nicht in normale Zeichen umrechnen, also in A,B,C..., sondern einfach nur die Bytes - die Zahlen(-folgen) in einen String schreiben, damit ich diesen String dann nach gewissen Zahlenverkettungen, Wiedrholungen durchsuchen kann. So war das gemeint. Ich hfofe ich habe dich jetzt nicht falsch verstanden.

Liebe Grüße,
Raffi

13.08.2009 - 18:05 Uhr

Ok dann hätte ich da noch eine Frage zur praktischen Bearbeitung. Wenn ich eine .exe Datei mit dem Binaryreader einlese, dann habe ich ein Bytearray. Nun könnte ich die Bytes hintereinander in einen String schreiben und diesen komprimieren. Jedoch sind manche Bytes 2-stellig, machne 3-stellig. Sprich ich habe am Ende einen riesigen Datensalat.
Bin ich also wirklich gezwungen dem komprimierten String noch eine Liste mit der Länge der Originalbytes mitzugeben. Damit ich später nach der Dekompression den dekomprimierten String wieder in korrekt Lange Bytes zerlegen kann?

Oder macht es hier mehr Sinn den Krams ins Heyadezimal System umzurechnen (ja ich weiß, dass herbivore sagte: nein), da ich dann immer in zweier Schritten wieder in Bytes zurückrechnen kann?

Liebe Grüße,
Raffi

13.08.2009 - 11:51 Uhr

Also heißt das im Klartext:
* lösen von dem Gedanken, dass ich mit "Text" arbeiten kann
* generell die Methoden auf Bytes beziehen

liebe Grüße,
Raffi

p.s.: Ich war nur verwundert, weil in den Beispielen immer mit Klartext gearbeitet wurde

13.08.2009 - 09:23 Uhr

Heißt also bei Binarys macht solch eine "Wörterbuchkompression" eher weniger Sinn, wenn ich das richtig verstanden habe?
Nur um noch mal sicher zu gehen - .exe Dateien muss ich also als Bytes einlesen und dann damit arbeiten, oder kann ich diese auch anders einlesen? Bzw. Macht es Sinn die Bytes ins Hexadezimalssystem umzurechnen, dank eines größeren Zeichensatzes, dann zu kodieren und danach wieder in Bytes umzurechnen und abzuspeichern?

13.08.2009 - 09:17 Uhr

Bekomme auch gleich beim Starten die FileNotFound! Habe keine Dateien angefasst, oder verschoben, etc.!
Hab .Net Framework 3.5 + das aktuelle XNA. Als OS hab ich Vista x64 Ultimate.

Liebe Grüße,
Raffi

13.08.2009 - 09:11 Uhr

Guten Morgen,
ich hoffe der Titel ist einigermaßen verständlich. Ich möchte mich gerne, rein Interesse halber, ein wenig mit Datenkompression beschäftigen. Dazu habe ich mir schon die Grundsätze der ein oder anderen Kompressionsmethode angeschaut. Ich denke auch, dass ich die Gedankengänge dahinter verstanden habe, jedoch weiß ich nicht wie ich diese ansetzen soll.
Bei Methoden/Theorien, die z.B. Bytes sortieren und Gruppieren ist mir das klar. Ich würde die zu komprimierende/kodierende Datei mit einem Binaryreader einlesen und mit den Bytes arbeiten.
Jetzt gibt es ja auch Methoden, die besagen, dass man doppelte Wörter durch Tokens ersetzt und die dann in einer Tabelle anlegt.
Jedoch macht das ja eigentlich nur Sinn, wenn ich auch eine relative große Fülle an Zeichen haben bzw. einen Text. Kann man diese Methoden nur auf Textdateien anwenden, oder wie müsste ich eine .exe, oder eine Datei unbekannten Formats öffnen um diese Methode anzuwenden?
Wenn ich diese mit dem Binary Reader einlese, dann erhalte ich ja nur die Bytes, keinen Reintext, somit weniger Zeichen und mehr, bezihungsweise kleinere Tokens, somit ein größeres Wörterbuch und eine schlechtere Kompressionsrate.

Ich hoffe Ihr könnt mir folgen.

Liebe Grüße,
Raffi

10.07.2009 - 10:31 Uhr

Ist zwar auf Umwegen, aber du könntest zum Beispiel überprüfen ob der Webbrowser fokussiert ist, sprich das aktive Element und solange per Global Hooks alle Tasteneingaben protokollieren.

02.07.2009 - 08:53 Uhr

Ich würd' auch gern mitmachen. 😃
Aber eine, vielleicht doofe, Frage vorneweg. Kann ich denn überhaupt mitmachen, wenn ich kein BF2 besitze? Mich würde das Projekt im ganzen interessieren, mir jedoch extra Bf2 dafür zu kaufen will ich auch nicht. (Dafür programmier ich in meiner Freizeit einfach viel zu gern'... ;D Würd' ich eh nicht zum Spielen kommen.)

30.06.2009 - 10:10 Uhr

Dateien kann man verschieben

besser kopieren 😄){gray}

noch besser kopieren & löschen! wenn schon, denn schon...

30.06.2009 - 10:08 Uhr

Hm stimmt - lag' ich doch garnicht so falsch... Ich hatte an 'ner anderen Stelle einen Denkfehler. Ich danke euch allen für die schnellen Antworten!

30.06.2009 - 09:46 Uhr

Ich hab mich gerade mal wieder mit einem RegEx Pattern in den Haaren.
Ich möchte einen Doppelpunkt samt ALLEN nachfolgenden Leerzeichen (bis zum nächsten Wort) matchen.
Mein Pattern schaut bis jetzt wie folgt aus. Matchen tut es auch, aber nur die Doppelpunkte.

Regex myreg = new Regex(@"((:)+[\ ]*)");

Grüße,
ein blutiger Anfänger

30.06.2009 - 08:29 Uhr

Guten Morgen,
ich habe eine Bitmap mit einer Größe von 1200x1400px. Beim anzeigen in der Picturebox sieht sie auch gut/scharf aus. Wenn ich diese nun per PrintDocument ausdrucke, wird das ganze extrem unscharf, auch wenn ich die Bitmap nicht runterrechne/auf eine DinA4 Seite anpasse und egal auf welchem Drucker/PDF-Drucker.

Hat jemand schon Erfahrungen damit gemacht?

edit:// gedruckt wird wie folgt:

e.Graphics.DrawImage(pictureBoxPreview.Image, new Point(0, 0));
30.06.2009 - 08:26 Uhr

Mit Dateien würd' ich nicht arbeiten. Les' lieber die Hardware ID des Sticks aus. Dateien kann man verschieben - die Hardware ID zu simulieren ist da schon um einiges schwerer.

29.06.2009 - 09:19 Uhr

Danke schonmal! Und wie durchlaufe ich soetwas mit einer foreach-Schleife?
Wenn ich jetzt möchte, dass er mir alle Farben wiedergibt, die true sind?

Beziehungsweise konkreter gefragt - was gehört an folgender Stelle für das XXX gesetzt?


Dictionary<string, bool> Produkte = new Dictionary<string,bool>(5);

...

foreach (XXX item in MyDictionary)
{
    ...
}
29.06.2009 - 09:00 Uhr

Ich hab mal wieder eine kleine Frage.
Wie erstellt man ein mehrdimensionales Arry mit mehreren Datentypen bzw. ein Konsrukt, was sich wie ein Arrays verhält.

Was ich meine Wäre zum Beispiel soetwas:

MeinKonstrukt[0][0] = "Rot";
MeinKonstrukt[0][1] = true;
MeinKonstrukt[1][0] = "Blau";
MeinKonstrukt[1][1] = false;
MeinKonstrukt[2][0] = "Grün";
MeinKonstrukt[2][1] = true;

Also quasi ein Array mit welches pro erstem Index jeweils einen String und einen Bool Wert speichern kann.

liebe Grüße,
ein blutiger_anfänger

25.06.2009 - 14:37 Uhr

Als Beispiel. Wenn du dir bei www.arcor.de 'ne kostenlose Adresse holst, dann kannst du mit den Zugangsdaten Emails über deren SMTP ( mail.arcor.de ) versenden.

Bei Freenet wäre es ( mx.freenet.de ) . Für weitere Anbieter einfach googeln.

22.06.2009 - 08:59 Uhr

Wenn hier schon von Kostenlosen Webspace ausgegangen wird, dann kann man wohl auch Hoster nennen, welche kostenlose Mysql Datenbnaken anbieten.


>

^^ fällt mir da z.B: ein.
Weitere findet man sicherlich wenn man nach "free mysql kostenlos" bei google sucht 😃

Hast du den Service schonmal getestet? Die waren bei meinem letzten Test dermaßen instabil und langsam, dass Sie nicht in Frage kommen.

Die Methode per SSI wird wohl auch wegfallen, da, wie gesagt die meisten DB's von Freehostern da nicht mitspielen.

Die Geschichte mit den Webservices werd' ich mir mal anschauen.

Liebe Grüße,
Raffi

21.06.2009 - 23:02 Uhr

Ich danke dir! Klappt wunderbar, was ich wollte!