Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2022, 08:01   #1
zoor
Новичок
Джуниор
 
Регистрация: 26.06.2015
Сообщений: 1
По умолчанию может кто сталкивался? warcraft-3

добрый день
может кто сталкивался из программистов насчет игры warcraft-3 . на подобии iccup.com
ищу программиста который мог бы помочь с передачей данных в игру и обратно

попытался написать hotkey- горячие клавиши для игры, вроде бы норм получилось на языке C#
теперь не могу разобраться с отправкой текста.
Код:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace WarKey
{
    public class Keyboard
    {
        private const int WM_KEYDOWN = 0x100;    
        private const int WM_KEYUP = 0x101;    
        private const int WM_SYSKEYDOWN = 0x104;
        private const int WM_SYSKEYUP = 0x105;

        private IKeyDownEventHandler handler;

        public Keyboard(IKeyDownEventHandler handler)
        {
            this.handler = handler;
            Start();
        }

        private static IntPtr hKeyboardHook = IntPtr.Zero;

      
        public const int WH_KEYBOARD_LL = 13;

        public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);

     
        private HookProc KeyboardHookProcedure;

        /// <summary>  
        /// 
        /// </summary>  
        [StructLayout(LayoutKind.Sequential)]
        public class KeyboardHookStruct
        {
            public int vkCode;      
            public int scanCode;     
            public int flags;
            public int time;
            public int dwExtraInfo;
        }

        [DllImport("kernel32.dll")]
        public static extern IntPtr GetModuleHandle(string lpModuleName);
      
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
    
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int CallNextHookEx(IntPtr hhk, int nCode, Int32 wParam, IntPtr lParam);
       
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int UnhookWindowsHookEx(IntPtr hhk);

        private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            if (nCode < 0)
                return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);

            KeyboardHookStruct MyKBHookStruct = (KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct));

            if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN)
            {
                Keys keyData = (Keys)MyKBHookStruct.vkCode;
                KeyEventArgs e = new KeyEventArgs(keyData);

                if (handler.Handle(e) == false)
                    return 1;
            }

            return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
        }

        public void Start()
        {
            if (hKeyboardHook == IntPtr.Zero)
            {
                KeyboardHookProcedure = new HookProc(KeyboardHookProc);

                using (System.Diagnostics.Process curProcess = System.Diagnostics.Process.GetCurrentProcess())
                using (System.Diagnostics.ProcessModule curModule = curProcess.MainModule)
                    hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, GetModuleHandle(curModule.ModuleName), 0);

                if (hKeyboardHook == IntPtr.Zero)
                    Stop();
            }
        }

        public void Stop()
        {
            if (hKeyboardHook != IntPtr.Zero)
            {
                UnhookWindowsHookEx(hKeyboardHook);
                hKeyboardHook = IntPtr.Zero;
            }
        }


        ~Keyboard()
        {
            Stop();
        }
    }
}
zoor вне форума Ответить с цитированием
Старый 21.06.2022, 08:34   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А что передавать то надо?? Или просто клацать кнопками в нужный момент?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Может кто сталкивался с проблемой ? Litarius ASP.NET 0 24.04.2013 16:57
font-face - может кто сталкивался? DmitS HTML и CSS 2 19.09.2011 10:12
Не могу разобраться в себе, может кто-то сталкивался с пободным? MirtMacline Свободное общение 4 05.08.2011 07:42
Помогите создать БД в Делфе. Может кто-нить сталкивался с таким? Politex Фриланс 13 26.01.2009 14:26
Помогите создать БД в Делфе. Может кто-нить сталкивался с таким? Politex Помощь студентам 3 19.01.2009 20:28