Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 19.07.2014
Сообщений: 39
1

Подскажите пожалуйста со скан кодами

24.09.2015, 21:27. Показов 1328. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят такое дело сделал вот такой код . захватывает окно и посылает клавиши но они не работают
. Как вместо клавиш записать его скан код помогите вот код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
            timer1.Enabled = true;
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            string pName = textBox1.Text;
 
 
            //Get Processes
            Process[] processes = Process.GetProcessesByName(pName);
 
            //Main part
            foreach (Process p in processes)
                if (p.ProcessName == (string)pName)
                {
                    
                    
                    
                    PostMessage(p.MainWindowHandle, WM_KEYDOWN, (int)Keys.A, 0);
                  
                    PostMessage(p.MainWindowHandle, WM_KEYDOWN, (int)Keys.D1, 0);
                    PostMessage(p.MainWindowHandle, WM_KEYDOWN, (int)Keys.D2, 0);
                  
                }
 
 
        }
    }
тоесть как вместо
C#
1
(int)Keys.A,
записать его скан код помогите .
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2015, 21:27
Ответы с готовыми решениями:

Подскажите пожалуйста)))
1)удаляю папки и файлы... те которые не удалось удалить надо вывести в отдельный список!как я...

Подскажите пожалуйста
Подскажите пожалуйста как поднять ТИЦ и ПР. И что нужно делать что б раскрутить сайт и сколько...

подскажите пожалуйста
вот код программы... ________________ #include <iostream.h> #include <math.h> int A,B,n,N;...

Подскажите, пожалуйста.
Делаю что-то похожее на авторизацию. Имеется 2 Эдита и Баттон. Я создал запись: type ...

10
127 / 121 / 68
Регистрация: 27.08.2015
Сообщений: 232
25.09.2015, 14:58 2
Скан код вам вряд ли поможет, тем более он записывается не в wParam, а в lParam: https://msdn.microsoft.com/en-... 85%29.aspx
lParam
16-23 The scan code. The value depends on the OEM.
Приложение, которому вы посылаете WM_KEYDOWN может не отрабатывать его (например, осуществляя ввод через Directx - DirectInput), или отрабатывать сообщение может не главное окно приложения, а его дочернее окно. Посмотрите пример с Блокнотом - запустите его и выполните код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    class Program
    {
        [return: MarshalAs(UnmanagedType.Bool)]
        [DllImport("user32.dll", SetLastError = true)]
        static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 
        [DllImport("user32.dll", SetLastError = true)]
        public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
 
        const int WM_KEYDOWN = 0x100;
        const int WM_KEYUP = 0x101;
 
        static void Main(string[] args)
        {
            IntPtr hwnd = FindWindow("Notepad", null);
            IntPtr hwndChild = FindWindowEx(hwnd, IntPtr.Zero, "Edit", null);
 
            PostMessage(hwndChild, WM_KEYDOWN, (IntPtr)Keys.A, IntPtr.Zero);
        }
    }
Само окно не отрабатывает WM_KEYDOWN, а его контрол Edit - да.

Попробуйте, если ещё не делали, изучить как отрабатываются сообщения с помощью Spy++.

Добавлено через 10 минут
Возможно, вам подойдёт использование класса SendKeys:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    class Program
    {
        [DllImport("User32.dll")]
        static extern int SetForegroundWindow(IntPtr point);
 
        static void Main(string[] args)
        {
            Process[] p = Process.GetProcessesByName("notepad");
            if (p.Length >= 1)
            {
                IntPtr h = p[0].MainWindowHandle;
                SetForegroundWindow(h);
                SendKeys.SendWait("a");
            }
        }
    }
0
0 / 0 / 0
Регистрация: 19.07.2014
Сообщений: 39
25.09.2015, 19:41  [ТС] 3
нет Send не пойдет
0
127 / 121 / 68
Регистрация: 27.08.2015
Сообщений: 232
25.09.2015, 20:56 4
А в какое приложение вам нужно отправить нажатие? Что-то распространённое? Может что-нибудь придумаем.
0
0 / 0 / 0
Регистрация: 19.07.2014
Сообщений: 39
26.09.2015, 12:08  [ТС] 5
в игру вот сылка на игру http://arena.ru/
я делаю все работает но только в окне чата . но не в самой игре .
0
127 / 121 / 68
Регистрация: 27.08.2015
Сообщений: 232
26.09.2015, 17:28 6
Игра использует DirectX, может быть поэтому не получается. Можете покопать ещё в сторону использования SendInput. Правда посылает опять же только в активное окно (если это вам подойдёт). Для .NET есть обёртка http://inputsimulator.codeplex.com/
0
0 / 0 / 0
Регистрация: 19.07.2014
Сообщений: 39
28.09.2015, 22:23  [ТС] 7
можно пример использование этой функции ? А то я не очень пока умею разбираться.
0
127 / 121 / 68
Регистрация: 27.08.2015
Сообщений: 232
28.09.2015, 22:38 8
На вышеприведённой странице http://inputsimulator.codeplex.com/ аж много примеров сразу. Оттуда:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void ShoutHello()
{
  // Simulate each key stroke
  InputSimulator.SimulateKeyDown(VirtualKeyCode.SHIFT);
  InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_H);
  InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_E);
  InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_L);
  InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_L);
  InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_O);
  InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_1);
  InputSimulator.SimulateKeyUp(VirtualKeyCode.SHIFT);
 
  // Alternatively you can simulate text entry to acheive the same end result
  InputSimulator.SimulateTextEntry("HELLO!");
}
1
0 / 0 / 0
Регистрация: 19.07.2014
Сообщений: 39
28.09.2015, 23:06  [ТС] 9
можно пример использование этой функции ? А то я не очень пока умею разбираться. Как установить это расширение подскажите пожалуйста у меня Визуал студия 2010
0
127 / 121 / 68
Регистрация: 27.08.2015
Сообщений: 232
28.09.2015, 23:37 10
1. Скачиваете архив с сайта. В архиве две директории Debug и Release. Забираете InputSimulator.dll например из Release директории и распаковываете куда-нибудь (лучше всего в директорию своего приложения).
2. В своём проекте в SolutionExplorer щелкаете правой кнопкой на References->Add Reference. Далее идёте в Browse -> щелкаете кнопку Browse... и выбираете наш InputSimulator.dll
3. В общем-то всё готово. Добавляем using WindowsInput; и пишем код
C#
1
2
3
4
5
6
7
8
9
10
11
12
using WindowsInput;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            InputSimulator.SimulateKeyDown(VirtualKeyCode.SHIFT);
        }
    }
}
Миниатюры
Подскажите пожалуйста со скан кодами  
1
0 / 0 / 0
Регистрация: 19.07.2014
Сообщений: 39
29.09.2015, 08:53  [ТС] 11
Спасибо огромное

Добавлено через 1 час 44 минуты
Все хорошо отлично . Но в виртуальной машине не работает
0
29.09.2015, 08:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2015, 08:53
Помогаю со студенческими работами здесь

Подскажите пожалуйста
Передомной стоит задание, написать программу которая будет делить изображение на пиксели,...

Подскажите пожалуйста!!!
Написал код на dev-c++ и на коде написал по русски например: "Введите число: " потом компилировал...

Подскажите пожалуйста
Подскажите пожалуйста как вставить кнопку "сохранить".. За ранее большое спасибо

Подскажите пожалуйста.
Скоро ходить на курсы и поступать в университет. Хочу стать web программистом. Что для этого нужно?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru