[C#]PostMessage problem.

01/16/2014 15:30 LetsPlayPixelz#1
Ich bin gerade dabei einen kleinen Bot für ein Spiel (DirectX App) zu schreiben.

Code:
        [DllImport("user32", EntryPoint = "PostMessageA", CharSet = CharSet.Ansi, SetLastError = true,
               ExactSpelling = true)]
        public static extern int PostMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam);

        [DllImport("kernel32.dll")]
        static extern uint GetLastError();

        public static Process[] processes = Process.GetProcessesByName("game.bin");



        public static void PressKey()
        {
            PostMessage(processes[0].MainWindowHandle, 0x0100, (int)Keys.Tab, 0);
            PostMessage(processes[0].MainWindowHandle, 0x0101, (int)Keys.Tab, 0);
            PostMessage(processes[0].MainWindowHandle, 0x0100, (int)Keys.D1, 0);
            PostMessage(processes[0].MainWindowHandle, 0x0101, (int)Keys.D1, 0);
        }
Der Bot sollte eigentlich Tab und danach 1 klicken, jedoch tut er das nicht.
Könnte mir einer weiterhelfen?
01/16/2014 16:32 tolio#2
[Only registered and activated users can see links. Click Here To Register...]
01/16/2014 17:10 LetsPlayPixelz#3
Funktioniert immernoch nicht mit dem InputManager.
Der Skill der auf der Taste 1 liegt wird nicht gedrückt, aber in der Chatbox vom Spiel tippt er 1 ein.

Code:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using InputManager;

namespace AuraKBotCSharp
{
    public class PxlKey
    {
        [DllImport("user32", EntryPoint = "PostMessageA", CharSet = CharSet.Ansi, SetLastError = true,
               ExactSpelling = true)]
        public static extern int PostMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam);

        [DllImport("kernel32.dll")]
        static extern uint GetLastError();

        public static Process[] processes = Process.GetProcessesByName("game.bin");



        public static void PressKey()
        {
//            PostMessage(processes[0].MainWindowHandle, 0x0100, (int)Keys.Tab, 0);
//            PostMessage(processes[0].MainWindowHandle, 0x0101, (int)Keys.Tab, 0);
//            PostMessage(processes[0].MainWindowHandle, 0x0100, (int)Keys.D1, 0);
//            PostMessage(processes[0].MainWindowHandle, 0x0101, (int)Keys.D1, 0);
            Keyboard.KeyDown(Keys.D1);
            Keyboard.KeyUp(Keys.D1);
        }
    }
}
01/16/2014 17:15 Crossside#4
ohne zu wissen für welches game kann man dir schlecht helfen,
01/16/2014 17:16 LetsPlayPixelz#5
Quote:
Originally Posted by Crossside View Post
ohne zu wissen für welches game kann man dir schlecht helfen,
Aura Kingdom Online
01/16/2014 17:44 Crossside#6
Hmm.. Kenne ich nicht das Spiel, leider noch nicht gezockt.
Musst du am besten schauen ob es eventuell mit keybd_event() klappt - manche Spiele haben einen Fokus auf bestimmte Elemente (wie chat zb), sollte das hier der Fall sein musst du schauen wie du es am besten lösen kannst.

Glaube das einfachste wäre du hookst die funktion die für die auren zuständig ist und rufst die funktion direkt auf, ohne den umweg zu gehen das ganze per simulierten tastendruck zu lösen. So müsstest du auch nicht ständig das Spiel im Vordergrund haben für das ganze.
01/16/2014 18:05 LetsPlayPixelz#7
Hat alles nicht geholfen.