Thema: Knuddels API
-
25.05.2011, 13:03 #1
- Registriert seit
- 13.02.2011
- Beiträge
- 54
Thanked 79 Times in 49 PostsKnuddels 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
-
25.05.2011, 13:06 #2
Knuddels API
-
25.05.2011, 13:08 #3
- Registriert seit
- 13.02.2011
- Beiträge
- 54
Thanked 79 Times in 49 PostsKnuddels API
Hmmm eigentlich ist es nicht seine API. Sondern die Microsoft API.
Vergleich mal Source.. da sind nur die Imports und die Constanten geblieben
-
25.05.2011, 13:11 #4
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!
-
25.05.2011, 13:14 #5
- Registriert seit
- 13.02.2011
- Beiträge
- 54
Thanked 79 Times in 49 PostsKnuddels API
Ich glaube der FensterContainer wird dir Gefallen^^
-
26.05.2011, 10:51 #6
Knuddels API
Jop da hast du recht!
Super Arbeit geleistet & sehr Newbie freundlich
-
26.05.2011, 13:55 #7
- Registriert seit
- 13.02.2011
- Beiträge
- 54
Thanked 79 Times in 49 PostsKnuddels 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, ""); }
-
29.05.2011, 21:19 #8
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();
}
}
}
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());
}
}
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
-
29.05.2011, 21:56 #9
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.
-
29.05.2011, 22:05 #10
Knuddels API
Sprich:
IntPtr wnd2 = APIs.FindWindowExA(hwnd, IntPtr.Zero, "SunAwtCanvas", "");
Oder?
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, "");
„Es sind nicht unsere Fähigkeiten, die zeigen, wer wir wirklich sind, es sind unsere Entscheidungen.“
- Albus Dumbledore, Harry Potter 2
/guestchat registerGuest
Ähnliche Themen
-
p1rates.in | Szene Blog rund um Knuddels und Knuddels Bots
Von Devon im Forum Knuddels Underground SzeneAntworten: 214Letzter Beitrag: 08.05.2014, 04:55 -
Knuddels.ch & Knuddels.de blicken in eine gemeinsame Zukunft
Von LaSombra im Forum Knuddels-NewsAntworten: 9Letzter Beitrag: 19.12.2012, 16:01
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.