Laden...

Forenbeiträge von Kalle Ingesamt 31 Beiträge

28.06.2008 - 00:32 Uhr

Ich würde auch auch Windows sql server umsteigen habs auch installiert aber weiß absolut nicht was ich machen soll.
Hab sql 2005 express irgendjemand eine Ahnung?

27.06.2008 - 23:06 Uhr

verwendetes Datenbanksystem: MySQL

Hallo liebe comm,

Ich habe ein Tool geschrieben das Daten von meinen MySQL Server verwendet und diese bearbeitet.

Ich benutze kleine Funktionen wie diese:

    public static int GetInformation(string str1)
    {
        MySqlCommand cmd = new MySqlCommand("SELECT column1 FROM database WHERE column2 = '" + str1 + "'", sql);
        MySqlDataReader reader = null;
        reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            reader.Close();
            return reader.GetInt16(0);
        }
        reader.Close();
        return 0;
    }

So nun ist es aber so wenn mehrere dieser Funktionen die den MySqlDataReader verwenden zugleich aufgerufen werden kommt folgendes Exception:

There is already an open DataReader associated with this Connection which must be closed first.

Da ich MySQL benutze und nicht den Windows SQL Server kann ich in meinen Connection String nicht MultipleActiveResultSets=True einfügen um das Problem zu beheben.

Könnt ihr mir sagen wie ich den Fehler beheben kann?

mfg Kalle

17.06.2008 - 14:58 Uhr

Wäre wirklich sehr nett von dir wenn du mir ein Beispiel zeigen könntest 🙂
Weiß leider nicht wie ich anfangen sollte.

mfg Kalle

16.06.2008 - 17:58 Uhr

Kann ich nicht auf ein vorhandenes Assembly zurückgreifen?
Könntest du mir ein paar Starthilfen geben?

15.06.2008 - 00:43 Uhr

Hallo liebe Community,

Ich habe vor ein paar Tagen mir mal das Beispiel von egrath (C# Scripting)
angeschaut und in ein Test Programm eingebaut und angepasst.

Nun habe ich ein Problem.
Ich möchte die Beschränkung aufheben, zurzeit hat er ja nur Zugriff auf die Funktionen die ihm durch

IScript script = Activator.CreateInstance(t, new object[] { TestScript.GetInstance() }) as IScript;

gegeben wurden, so hab ich es jedenfalls verstanden.

Kann mir jemand sagen wie ich das komplett aufheben kann? so das er auf alles Zugriff hat also mein Programm sowie alles andere etc?

Hier noch ein Ausschnitt:

    public void Start()
        {
            if (m_LoadedScripts.Count == 0)
            {
                return;
            }

            foreach (Assembly al in m_LoadedScripts)
            {
                foreach (Type t in al.GetTypes())
                {
                    bool hasInterface = false, hasAttribute = false;

                    foreach (Type interfaceType in t.GetInterfaces())
                    {
                        if (interfaceType == typeof(IScript))
                            hasInterface = true;
                    }

                    if (hasInterface)
                        foreach (object attr in t.GetCustomAttributes(false))
                        {
                            if (attr is ScriptClass)
                            {
                                hasAttribute = true;
                            }
                        }


                    if (hasInterface && hasAttribute)
                    {
                        IScript script = Activator.CreateInstance(t, new object[] { TestScript.GetInstance() }) as IScript;
                        script.Run();
                    }
                }
            }
        }

Hoffentlich könnt ihr mir helfen da ich langsam verzweifle.

mfg

16.05.2008 - 16:29 Uhr

Hallo,

Ich habe mich heute mit Encrypt und Decrypt auseinandergesetzt.
Habe versucht einen String zu Encrypten und danach wieder zu Decrypten nur leider kommt bei mir immer nur "???????" raus wenn ich es wieder Decrypten möchte.

Achja als ich diese "?" hier im Forum eingegeben habe hat er mir "1220108731" angezeigt, nur das ist nicht der decryptete text??
hier mein Source:

Encrypt:


        private string EncryptKey(string DecryptedText, string Passphrase)
        {
            try
            {
                byte[] buffer = Encoding.UTF8.GetBytes(DecryptedText);
                PasswordDeriveBytes bytes = new PasswordDeriveBytes(Passphrase, new byte[] { 0x49, 0x76, 0x61, 110, 0x20, 0x4d, 0x65, 100, 0x76, 0x65, 100, 0x65, 0x76 });
                MemoryStream stream = new MemoryStream();
                Rijndael rijndael = Rijndael.Create();
                rijndael.Key = bytes.GetBytes(0x20);
                rijndael.IV = bytes.GetBytes(0x10);
                CryptoStream stream2 = new CryptoStream(stream, rijndael.CreateEncryptor(), CryptoStreamMode.Write);
                stream2.Write(buffer, 0, buffer.Length);
                stream2.Close();
                byte[] buffer2 = stream.ToArray();
                return Convert.ToBase64String(buffer2);
            }
            catch (Exception)
            {
                return "";
            }
        }

Decrypt:


        private string DecryptKey(string EncryptedText, string Passphrase)
        {
            try
            {
                byte[] buffer = Convert.FromBase64String(EncryptedText);
                PasswordDeriveBytes bytes = new PasswordDeriveBytes(Passphrase, new byte[] { 0x49, 0x76, 0x61, 110, 0x20, 0x4d, 0x65, 100, 0x76, 0x65, 100, 0x65, 0x76 });
                MemoryStream stream = new MemoryStream();
                Rijndael rijndael = Rijndael.Create();
                rijndael.Key = bytes.GetBytes(0x20);
                rijndael.IV = bytes.GetBytes(0x10);
                CryptoStream stream2 = new CryptoStream(stream, rijndael.CreateDecryptor(), CryptoStreamMode.Write);
                stream2.Write(buffer, 0, buffer.Length);
                stream2.Close();
                byte[] buffer2 = stream.ToArray();
                return Encoding.Unicode.GetString(buffer2);
            }
            catch (Exception)
            {
                return "";
            }
        }

ich zerbreche mir jetzt schon seit stunden dadrüber den Kopf und finde einfach nichts Ich hoffe ihr könnt mir weiter helfen.

mfg Kalle

25.01.2008 - 11:24 Uhr

Wie kann ich einen Stream realisieren?

23.01.2008 - 20:11 Uhr

Hallo liebe Comm,

Ich möchte gerne an eine Homepage HTTP Daten schicken wie hier z.B:
"Accept: /\r\n".
"Accept-Language: en-gb\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Accept-Encoding: gzip, deflate\r\n".
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n".
"Host: google.de\r\n".
"Connection: Keep-Alive\r\n".
"Cache-Control: no-cache\r\n\r\n".

Und dann was zurück kommt auslesen.
Nur leider habe ich ka wie ich das verwirklich kann 🙁
Habe schon bei google gesucht und auch in der MSDN, konnte aber nichts passendes finden.

Ich hoffe ihr könnt mir helfen

mfg Kalle

08.12.2007 - 17:31 Uhr

vielen dank GMLOD, habe jetzt Public Members nicht obfuscated und kann nun auch auf die DLL zugreifen.

Nur kannst du mir noch sagen wie auf die DLL auch andere nicht dotNet Anwendungen drauf zugreifen können?

08.12.2007 - 15:43 Uhr

Hallo liebe Community,

Ich verwende seit ein paar Tagen den Skater .NET Obfuscator.
Ich habe in C# eine DLL geschrieben und möchte das diese auch andere Entwickler in anderen Sprachen benutzen können.
Nun habe ich meine DLL aber obfuscated da ich nicht möchte das jemand meinen code auslesen kann.
Nun möchte ich also das diese DLL per DllImport oder was auch immer in anderen Sprachen benutzt werden kann, was muss ich tuhen um das zu ermöglichen, ist es überhaupt möglich mit Obfuscierten Libarys?

mfg Kalle

01.12.2007 - 21:51 Uhr

Hallo liebe C# community,

Es gibt ein Programm namens ".Net Reflector" das es ermöglicht C# programme zu decompilen.

Ich möchte aber nicht das jeder meinen Source code einsehen kann, kann mir jemand sagen womit ich das verhindern kann?

mfg Kalle

12.11.2007 - 09:54 Uhr

Vielen dank für die Antworten, ich habe es nun wie folgt gelöst:


int x = var.ToString.Length - 3;
var.ToString.Remove(x);

mfg Kalle

11.11.2007 - 16:44 Uhr

Hallo liebe Comm,

Ich möchte gerne bei einem integer bzw string hinten die letzten 3 Zeichen(Buchstaben und zahlen) weg nehmen.

Kann mir da jemand helfen? habe nix passendes gefunden, nur trim methoden die char entfernen.

hier mein code:

c1 = Convert.ToInt32(c2.ToString());

bei c2 sollen die letzt 3 Zeichen weg.

mfg Kalle

10.11.2007 - 10:46 Uhr

Erstmal vielen dank an alle die mir geholfen haben es funktioniert soweit wunderbar =)

Für die die wissen wollen wie man float liest:


float float1 = BitConverter.ToSingle(byte1, 0); 

Ich habe aber noch eine kleine Frage.
Und zwar möchte ich float und dword in meinen Prozess mit hilfe von

[DllImport("kernel32.dll")]
        public static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesWritten);
        public void WriteProcessMemory(IntPtr MemoryAddress, byte[] bytesToWrite, out int bytesWritten)
        {
            IntPtr ptrBytesWritten;
            ProcessMemoryReaderApi.WriteProcessMemory(m_hProcess, MemoryAddress, bytesToWrite, (uint)bytesToWrite.Length, out ptrBytesWritten);

            bytesWritten = ptrBytesWritten.ToInt32();
        }
            int writtenBytes;
            buffer = new byte[4];
            buffer[0] = (byte)2; //hier sollte eigentlich mehr float bzw dword rein.
            pReader.WriteProcessMemory((IntPtr)offset, buffer, out writtenBytes);  //der Aufruf

schreiben

Nur schreibt er hier auch nur einen Byte in meinen Prozess und keine 4 Byte bzw float.
Kann mir da noch jemand helfen?

Wäre echt nett
mfg Kalle

09.11.2007 - 17:04 Uhr

Okay also

read = pReader.ReadProcessMemory((IntPtr)0x0C51300, 4, out bytesReaded);
MessageBox.Show(BitConverter.ToInt32 //wie muss ich nun die Parameter angeben um es zu convertieren? 

Habe es mit

MessageBox.Show(BitConverter.ToInt32(read,1).ToString());

versucht ging aber auch net.

mfg

09.11.2007 - 16:36 Uhr

Ich habe noch ein kleines Problem =(
Ich bin soweit gekommen das mein Programm so lange +0x1000 dazu addiert bis er auf den gewünschten Inhalt (value) trifft.

Das Problem ist nun aber das er die Memory daten nur bis zu einen Byte liest.
Ich verwende dazu

        
[DllImport("kernel32.dll")]
public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesRead);

Mit vollgender Funktion

        
public byte[] ReadProcessMemory(IntPtr MemoryAddress, uint bytesToRead, out int bytesRead)
        {
            byte[] buffer = new byte[bytesToRead];

            IntPtr ptrBytesRead;
            ProcessMemoryReaderApi.ReadProcessMemory(m_hProcess, MemoryAddress, buffer, bytesToRead, out ptrBytesRead);

            bytesRead = ptrBytesRead.ToInt32();

            return buffer;
        }

Deswegen kann er nie den Richtigen Offset finden sondert findet immer welche die zwar die gleiche Byte anzahl haben aber nie die gleiche dword bzw float anzahl da ich nicht weiß wie ich dword und float auslesen kann.

Wisst ihr wie ich anstatt "Byte" 4 Bytes(dword) lesen kann? und vll auch Float?

mfg Kalle

09.11.2007 - 14:43 Uhr

Gibt es denn eine möglichkeit herauszufinden was das ganze in hexa heißen würde?

Edit: sry ein blick bei google hätte mir auch geholfen: Int/Hex converter

09.11.2007 - 14:10 Uhr

ja genau

09.11.2007 - 13:41 Uhr

Original von 0815Coder
zwei pointer addieren macht kaum sinn. sieht eher danach als als wäre der zweite pointer ein offset. somit kannst du den gleich als int definieren.

Ja das zweite ist ein offset der durch 0x1000 hoch addiert wird.
Ich kann ihn nicht als int definieren da er später noch Buchstaben beinhaltet und auch "0x" würde verloren gehen.
Und ich addiere es so lange bis ich den gewünschten Offset gefunden habe daher +0x1000
Ist auch nur ein Test bisher, bin ja garnet drauf aus einen bestimmten Offset zu bekommen sondern wollte nur wissen wie ich es erstmal addieren kann.

herbivore, ich habe deinen tip ausprobiert und es geht auch:

                    
convert2 = (int)set2;
convert = (int)set;
set2 = (IntPtr)convert2;

Hoffe du meintest es so.

Nur gibt es da ein Problem und zwar werden dabei Hex codes wie "6e" in zahlen umgewandelt und ich wüsste nicht wie ich das rückgängig machen könnte. 🤔

Kann mir da einer helfen?

09.11.2007 - 12:46 Uhr

Hallo liebe Community,

Ich habe ein Problem mit dem Operator "+" auf IntPtr.
Und zwar möchte ich

IntPtr set2 = (IntPtr)0x00000000;

mit

IntPtr set = (IntPtr)0x1000;

addieren.

Also

set2 = set2 + set;

Nur leider geht das nicht laut VC#

Der Operator "+" kann nicht auf Operanden vom Typ "System.IntPtr" und "System.IntPtr" angewendet werden.

Kann mir jemand sagen wie ich es trotzdem addieren kann?
In anderen Sprachen geht es ja auch

mfg Kalle

04.11.2007 - 13:48 Uhr

Hallo herbivore,

Ich habe nun eine andere Hotkey Methode verwendet und nun funktioniert es.
Ich schaue mir aber trotzdem das Beispiel an da ich mir sicher bin das ich bestimmt bald wieder vor diesem Problem stehe.

mfg Kalle

04.11.2007 - 12:26 Uhr

Hallo herbivore,

Ich benutze den normalen timer.
Also ich habe mir jetzt mal deinen Link angeschaut und bin auf vollgenden Link gestoßen: Multithreading

Ich denke dass das wohl auf meinen Programm code zutrifft, da ich ja einen Timer habe der alle 100 msekunden eine Funktion anspricht und noch dabei einen Hotkey abfragen möchte.

Nur habe ich ein Problem damit multithreading in meinem Programm code einzubauen. 🤔
Kannst du mir ein Beispiel oder etwas in der Art geben?
Du siehst ja wie ich meine Hotkeys registriere.

mfg Kalle

04.11.2007 - 00:06 Uhr

Hallo liebe c# community

Ich habe ein kleines Programm geschrieben was auf einen Hotkey wartet.
Ich habe dafür das Example von http://blogs.ugidotnet.org/marcom/archive/2006/07/02/43923.aspx verwendet, nur habe ich nun ein Problem.

Der Event und die Funktion allgemein funktionieren wunderbar, nur funktioniert der Event nicht mehr wenn ich dabei einen Timer laufen habe der immer gleichen Programmcode abruft:


Process[] prz = Process.GetProcessesByName(prozess);
if (prz.Length > 0)
{
   ..
   ..
   ..
}

Der Timer allgemein aber stört nicht, wenn ich den Programmcode ohne Process[] etc abrufe springt er auf die Hotkeys an.

Nun meine Frage, liegt es an einem C# Bug oder doch an der HotKey klasse?
Bitte helft mir ich komme sonst nicht weiter =(

mfg Kalle

Edit:// Mit einer While schleife scheint es aber zu funktionieren, nur möchte ich trotzdem lieber einen Timer benutzen da er einfach besser zum Programmcode passt.

18.05.2007 - 12:10 Uhr

Hi Leute,
Ich habe in meinem Programm ein kleinen Updater eingebaut der auch soweit wunderbar funktioniert.
Ich benutze dafür den Webclient.
So nun möchte ich aber einen download starten ohne dass das programm sofort weiter fährt.

z.B

webclient updater = new webclient();
updater.DownloadFile("http://homepage.de/test.bat", "test.bat"); 
System.Diagnostics.Process.Start(Application.StartupPath + "\\" + "test.bat"); // er soll aber die Datei erst starten wenn sie komplett gedownloadet wurde!

So nur kann da ja ein Fehler auftreten wenn die Bat datei nicht ganz fertig geladen ist und er sie trotzdem öffnen möchte.

Also habe ich es mit dem Beispiel von MS probiert:

// Sample call : DownLoadFileInBackground2 ("http://www.contoso.com/logs/January.txt");
public static void DownLoadFileInBackground2 (string address)
{
    WebClient client = new WebClient ();
    Uri uri = new Uri(address);

    // Specify that the DownloadFileCallback method gets called
    // when the download completes.
    client.DownloadFileCompleted += new AsyncCompletedEventHandler (DownloadFileCallback2);
    // Specify a progress notification handler.
    client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
    client.DownloadFileAsync (uri, "serverdata.txt");
}

http://msdn2.microsoft.com/en-us/library/system.net.webclient.downloadfilecompleted.aspx

Nur sagt er mir dort 2 Fehler an:

Fehler 1 Der Name "DownloadFileCallback2" ist im aktuellen Kontext nicht vorhanden.

Fehler 2 Der Name "DownloadProgressCallback" ist im aktuellen Kontext nicht vorhanden.

was habe ich Falsch gemacht?

//EDIT:
Ich merke das Programm scheint automatisch stehen zu bleiben...
Nur was ist wenn ich eine 1MB datei downloaden lasse und der jenige der es benutzt hat ein 56k Modem und das Programm friert völlig ein?
Kann ich da noch was drehen?

Und wie kann ein eine Progressbar einbinden?

mfg

12.05.2007 - 22:07 Uhr

Juhu ich habs 🙂

Und damit auch die anderen User die das brauchen verstehen:

Dieses Source einfach bei euch mit rein hauen:

[DllImport("user32.dll")]
        private static extern void mouse_event(
             UInt32 dwFlags, // motion and click options
             UInt32 dx, // horizontal position or change
             UInt32 dy, // vertical position or change
             UInt32 dwData, // wheel movement
             IntPtr dwExtraInfo // application-defined information
             );

        private const UInt32 MouseEventLeftDown = 0x0002;
        private const UInt32 MouseEventLeftUp = 0x0004;
        private const UInt32 MouseEventRightDown = 0x0008;
        private const UInt32 MouseEventRightUp = 0x00016;

        private void LeftMouseClick(Point point)
        {
            Point location = Cursor.Position;
            Cursor.Position = point;
            mouse_event(MouseEventLeftDown, 0, 0, 0, new System.IntPtr());
            mouse_event(MouseEventLeftUp, 0, 0, 0, new System.IntPtr());
            Cursor.Position = location;
        }

        private void RightMouseClick(Point point)
        {
            Point location = Cursor.Position;
            Cursor.Position = point;
            mouse_event(MouseEventRightDown, 0, 0, 0, new System.IntPtr());
            mouse_event(MouseEventRightUp, 0, 0, 0, new System.IntPtr());
            Cursor.Position = location;
        }

Using:

using System.Runtime.InteropServices;

Beispiel aufruf:

LeftMouseClick(cursor.position);

vielen vielen dank an dich herbivore 🙂

mfg Kalle

12.05.2007 - 21:39 Uhr

Ok konnte nun die API laden nur das nächste Problem war sofort da:

Der Name "Win32" ist im aktuellen Kontext nicht vorhanden.
Trotz API habe daher das Win32 weggenommen und hatte dann noch mouse_event aber dort kommt bei MOUSEEVENTF_ABSOLUTE etc wieder ein Fehler.

private void mouse_click(int XPos, int YPos, MouseButtons buttons)
        {
            if (XPos != -1 || YPos != -1)
            {
                XPos = (int)(65535.0f / Screen.PrimaryScreen.Bounds.Width * XPos);
                YPos = (int)(65535.0f / Screen.PrimaryScreen.Bounds.Height * YPos);
                Win32.mouse_event(Win32.MOUSEEVENTF_ABSOLUTE + Win32.MOUSEEVENTF_MOVE, (uint)XPos, (uint)YPos, 0, 0);

Was nun ?(

mfg Kalle

12.05.2007 - 21:19 Uhr

Fehler 1 Der Typ- oder Namespacename "DllImport" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)

Fehler 2 Der Typ- oder Namespacename "StructLayout" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)

Das gleiche kommt auch in einer Klasse 🙁

12.05.2007 - 21:05 Uhr

Ok danke das ist genau das was ich gesucht habe nur habe ich noch ein Problem.
Ich weiß ehrlich gesagt nicht wie ich die API in meinem Source mit einbaue.

Egal wo ich es bisher hinein getan habe sagt er das er zb [DllImport] oder [StructLayout] nicht kennt. 8o
Könntest du mir dort ein letztes mal helfen ?(

mfg Kalle

12.05.2007 - 20:45 Uhr

Habe auch gegoogelt und nix gefunden.
Daher bitte ich euch mir nochmals zu helfen.

12.05.2007 - 20:17 Uhr

Ich habe jetzt 3 Beiträge durchsucht nur wurden leider keine richtigen Antworten gegeben X(.

Wäre nett wenn du es mir sagen könntest schaue trotzdem erstmal weiter.

mfg Kalle

12.05.2007 - 19:57 Uhr

Hi Leute, da ich ja mit Cursor.Position die Maus position festlegen kann wüsste ich auch ganz gerne wie ich einen Klick "emulieren" kann. 🤔

mfg Kalle =)