Seite 1 von 2 12 Letzte

Thema: Knuddels API

  1. #1

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard Knuddels API

    Credits gehen teilweise zu downhearted
    habe die api bissl umgeschrieben
    und die ist nicht komplett fertig
    ihr müsstet noch die SendFunktion schreiben
    rest sollte drinne sein!


    x7.to » Download: KnuddelsAPI.rar

  2. #2

    Registriert seit
    30.01.2011
    Beiträge
    35
    Thanked 295 Times in 152 Posts

    Standard Knuddels API

    Zitat Zitat von silently Beitrag anzeigen
    Credits gehen teilweise zu downhearted
    er heißt d0wnhearted
    & vielleicht solltest du auch noch erwähnen, dass du seine API zu C# umgeschrieben hast und so

    Mfg

  3. #3

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard Knuddels API

    Hmmm eigentlich ist es nicht seine API. Sondern die Microsoft API.
    Vergleich mal Source.. da sind nur die Imports und die Constanten geblieben

  4. #4

    Registriert seit
    30.01.2011
    Beiträge
    35
    Thanked 295 Times in 152 Posts

    Standard Knuddels API

    Naja da hast du recht, aber trozdem hat er das Sample für die Knuddels API geschrieben
    Ist nun aber auch nebensache, ein großes Danke an dich, dass du dir die Mühe gmacht hast & es umgeschrieben hast! Ich werde gleich mal versuchen was tolles zu erarbeiten

    Mfg!

  5. #5

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard Knuddels API

    Ich glaube der FensterContainer wird dir Gefallen^^

  6. #6

    Registriert seit
    30.01.2011
    Beiträge
    35
    Thanked 295 Times in 152 Posts

    Standard Knuddels API

    Jop da hast du recht!
    Super Arbeit geleistet & sehr Newbie freundlich

  7. #7

    Registriert seit
    13.02.2011
    Beiträge
    54
    Thanked 79 Times in 49 Posts

    Standard Knuddels API

    Auf Nachfrage

    Code:
    private void sendChat(IntPtr hwnd, String text)
            {
               //3x canvas
                IntPtr wnd2 = User32.FindWindowExA(hwnd, IntPtr.Zero, "SunAwtCanvas", "");
                wnd2 = User32.FindWindowExA(wnd2, IntPtr.Zero, "SunAwtCanvas", "");
                wnd2 = User32.FindWindowExA(wnd2, IntPtr.Zero, "SunAwtCanvas", "");
                IntPtr wnd3 = User32.FindWindowExA(wnd2, IntPtr.Zero, "Edit", "");
                MessageBox.Show(wnd3.ToString());
                User32.SendMessageA(wnd3, (IntPtr)WM_SETTEXT, (IntPtr)0, text);
                //Text aus Textbox wird in Edit kopiert
                User32.SendMessageA(wnd3, (IntPtr)WM_SETFOCUS, (IntPtr)0, "");
                //Focus auf Textfeld
                User32.SendMessageA(wnd3, (IntPtr)WM_CHAR, (IntPtr)WM_ENTER, "");
                //Enter simulieren
                User32.SendMessageA(wnd3, (IntPtr)WM_KILLFOCUS, (IntPtr)0, "");
            }

  8. #8
    Avatar von Mentos
    Registriert seit
    18.11.2011
    Beiträge
    451
    Thanked 498 Times in 240 Posts

    Standard Knuddels API

    Ich hab das jetzt so gemacht:


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


    namespace KnuddelsSendText
    {
    public class APIs
    {

    [DllImport("user32.dll")]
    public static extern Int32 SetWindowTextA(IntPtr hwnd, String lpString);

    //Geklaut von Silently

    [DllImport("user32.dll")]
    public static extern IntPtr FindWindowA(String lpClassName, String lpWindowName);
    [DllImport("user32.dll")]
    public static extern IntPtr SendMessageA(IntPtr hwnd, IntPtr wMsg, IntPtr wParam, String lParam);
    [DllImport("user32.dll")]
    public static extern IntPtr FindWindowExA(IntPtr hwnd1, IntPtr hwnd2, String lpsz1, String lpsz2);
    public delegate Boolean CallBack(IntPtr hwnd, IntPtr lparam);
    [DllImport("user32.dll")]
    public static extern Int32 GetWindowTextLengthA(IntPtr hwnd);
    [DllImport("user32.dll")]
    public static extern Int32 GetWindowTextA(IntPtr hwnd, StringBuilder lpString, Int32 cch);
    [DllImport("user32.dll")]
    public static extern Int32 EnumWindows(CallBack lpEnumFunc, Int32 lParam);

    public const uint WM_ENTER = 0xD;
    public const uint VK_RETURN = 0xD;
    public const uint WM_SETFOCUS = 0x7;
    public const uint WM_KILLFOCUS = 0x8;
    public const uint WM_CHAR = 0x102;
    public const uint WM_SETTEXT = 0xC;
    public const uint WM_KEYDOWN = 0x100;
    public const uint WM_KEYUP = 0x101;

    }
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace KnuddelsSendText
    {
    public class KnuddelsSendText
    {
    public KnuddelsSendText()
    {
    //NULL
    }

    public void sendTextToChat(IntPtr hwnd, String text)
    {
    //3x canvas
    IntPtr wnd2 = APIs.FindWindowExA(hwnd, IntPtr.Zero, "SunAwtCanvas", "");
    wnd2 = APIs.FindWindowExA(wnd2, IntPtr.Zero, "SunAwtCanvas", "");
    wnd2 = APIs.FindWindowExA(wnd2, IntPtr.Zero, "SunAwtCanvas", "");
    IntPtr wnd3 = APIs.FindWindowExA(wnd2, IntPtr.Zero, "Edit", "");
    APIs.SendMessageA(wnd3, (IntPtr)APIs.WM_SETTEXT, (IntPtr)0, text);
    //Text aus Textbox wird in Edit kopiert
    APIs.SendMessageA(wnd3, (IntPtr)APIs.WM_SETFOCUS, (IntPtr)0, "");
    //Focus auf Textfeld
    APIs.SendMessageA(wnd3, (IntPtr)APIs.WM_CHAR, (IntPtr)APIs.WM_ENTER, "");
    System.Threading.Thread.Sleep(1);
    //Enter simulieren
    APIs.SendMessageA(wnd3, (IntPtr)APIs.WM_KILLFOCUS, (IntPtr)0, "");
    }

    }
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
    using System.Text.RegularExpressions;

    namespace KnuddelsSendText
    {
    public class KnuddelsWindow
    {
    public KnuddelsWindow()
    {
    //Don't do anything...
    }

    public String[] scanForWindows(String searchPattern = "Channel:.+, Nick: .+")
    {
    List<String> tempWindows = new List<string>();
    Regex checkWindowName = new Regex(searchPattern);

    foreach (Process p in Process.GetProcesses())
    {
    if (checkWindowName.IsMatch(p.MainWindowTitle))
    {
    tempWindows.Add(p.MainWindowTitle);
    }
    }
    return tempWindows.ToArray();
    }

    public void renameWindow(String oldWindowText, String newWindowText)
    {
    APIs.SetWindowTextA(WindowIntPtr(oldWindowText), newWindowText);
    }

    public IntPtr WindowIntPtr(String windowName)
    {
    foreach (Process p in Process.GetProcesses())
    {
    if (p.MainWindowTitle == windowName)
    {
    return p.MainWindowHandle;
    }
    }
    return new IntPtr();
    }
    }
    }
    Sample:

    KnuddelsSendText.KnuddelsWindow KWindow = new KnuddelsWindow();
    KnuddelsSendText.KnuddelsSendText sendText = new KnuddelsSendText.KnuddelsSendText();
    String[] KnuddelsWindows = KWindow.scanForWindows();
    if (KnuddelsWindows.Length != 0)
    {
    while (true)
    {
    System.Threading.Thread.Sleep(new Random().Next(60 * 1000, 60 * 8 * 1000));
    sendText.sendTextToChat(KWindow.WindowIntPtr(KnuddelsWindows[0]), "/p James: " + new Random().Next(9999).ToString());
    }
    }
    Und klappt so eigentlich auch ganz nett
    Danke für den Code (:
    „Es sind nicht unsere Fähigkeiten, die zeigen, wer wir wirklich sind, es sind unsere Entscheidungen.“
    - Albus Dumbledore, Harry Potter 2


    /guestchat registerGuest

  9. #9
    Avatar von Diebspiel
    Registriert seit
    18.11.2011
    Beiträge
    311
    Thanked 192 Times in 102 Posts

    Standard Knuddels API

    So ähnlich hab ich es im K-Script API Bot auch. Allerdings noch eine Sache zusätzlich: Er ist auch gleichzeitig im MFC (altes System) nutzbar. Also würde ich zum Schluss noch wnd3 prüfen, ob es IntPtr.Zero entspricht. In diesem Fall wurde zu einer großen Wahrscheinlichkeit ein Nick im alten System gewählt. Hier also in diesem Fall nur ein Canvas und dann sofort die Editclass ansprechen.

  10. #10
    Avatar von Mentos
    Registriert seit
    18.11.2011
    Beiträge
    451
    Thanked 498 Times in 240 Posts

    Standard Knuddels API

    Sprich:
    IntPtr wnd2 = APIs.FindWindowExA(hwnd, IntPtr.Zero, "SunAwtCanvas", "");
    if (APIs.FindWindowExA(wnd2, IntPtr.Zero, "Edit", "") == IntPtr.Zero)
    {
    wnd2 = APIs.FindWindowExA(wnd2, IntPtr.Zero, "SunAwtCanvas", "");
    wnd2 = APIs.FindWindowExA(wnd2, IntPtr.Zero, "SunAwtCanvas", "");
    }
    IntPtr wnd3 = APIs.FindWindowExA(wnd2, IntPtr.Zero, "Edit", "");
    APIs.SendMessageA(wnd3, (IntPtr)APIs.WM_SETTEXT, (IntPtr)0, text);
    //Text aus Textbox wird in Edit kopiert
    APIs.SendMessageA(wnd3, (IntPtr)APIs.WM_SETFOCUS, (IntPtr)0, "");
    //Focus auf Textfeld
    APIs.SendMessageA(wnd3, (IntPtr)APIs.WM_CHAR, (IntPtr)APIs.WM_ENTER, "");
    System.Threading.Thread.Sleep(1);
    //Enter simulieren
    APIs.SendMessageA(wnd3, (IntPtr)APIs.WM_KILLFOCUS, (IntPtr)0, "");
    Oder?
    „Es sind nicht unsere Fähigkeiten, die zeigen, wer wir wirklich sind, es sind unsere Entscheidungen.“
    - Albus Dumbledore, Harry Potter 2


    /guestchat registerGuest

Seite 1 von 2 12 Letzte

Ähnliche Themen

  1. p1rates.in | Szene Blog rund um Knuddels und Knuddels Bots
    Von Devon im Forum Knuddels Underground Szene
    Antworten: 214
    Letzter Beitrag: 08.05.2014, 04:55
  2. Antworten: 9
    Letzter Beitrag: 19.12.2012, 16:01
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.