Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.04.2010
Сообщений: 3

Отправка сообщений в окно

19.04.2010, 17:13. Показов 3936. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть проблемы в том, что не могу отправить сообщение о том, что я нажал кнопку F1, F2, F3, F4, F5, ...
Тестирую на блокноте. Если в блокноте нажать на F5 то в нем будет время и дата.
Но при отправке якобы нажатой системной кнопки в блокноте пишется символ. На сколько я помню, у системных кнопок 2 кода. Но я не помню какие и как их отправлять.
Бьюсь над этой проблемой дня 3 - 4. Ассемблер уже даже читал(про клавиатуру).
Вот код отправки сообщения. Пишу я на C#.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//**********WinAPI функции*********
 
    [DllImport("user32.dll", EntryPoint = "FindWindow")] 
    private static extern IntPtr FindWindow(string _ClassName, string _WindowName); 
 
    [DllImport("user32.dll", EntryPoint = "FindWindowEx")] 
    private static extern IntPtr FindWindowEx(IntPtr hwndPrnt, IntPtr hwndChildAfter, string _ClassName, string _WindowName); 
 
    [DllImport("user32.dll", CharSet = CharSet.Auto)] 
    public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
 
    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
 
    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    public static extern int DestroyWindow(IntPtr hWnd);
 
    
 
//*********/WinAPI функции*********
 
 
//**********WinAPI константы*********
    const int BM_SETSTATE = 243; 
    const int WM_LBUTTONDOWN = 513; 
    const int WM_LBUTTONUP = 514; 
    const int WM_KEYDOWN = 256; 
    const int WM_CHAR = 258; 
    const int WM_KEYUP = 257; 
    const int WM_SETFOCUS = 7; 
    const int WM_SYSCOMMAND = 274; 
    const int SC_MINIMIZE = 32;
    const int WM_CLOSE = 0x0010;
    const int VK_F1 = 0x70;   //F1 key 
    const int VK_F2 = 0x71;   //F2 key 
    const int VK_F3 = 0x72;   //F3 key 
    const int VK_F4 = 0x73;   //F4 key 
    const int VK_F5 = 0x74;   //F5 key 
    const int VK_F6 = 0x75;   //F6 key 
    const int VK_F7 = 0x76;   //F7 key 
    const int VK_F8 = 0x77;   //F8 key 
    const int VK_F9 = 0x78;   //F9 key 
    const int VK_F10 = 0x79;   //F10 key 
    const int VK_F11 = 0x7A;   //F11 key 
    const int VK_F12 = 0x7B;   //F12 key
    const int VK_0 = 0x30;   //0 key 
    const int VK_1 = 0x31;   //1 key 
    const int VK_2 = 0x32;   //2 key 
    const int VK_3 = 0x33;   //3 key 
    const int VK_4 = 0x34;   //4 key 
    const int VK_5 = 0x35;   //5 key 
    const int VK_6 = 0x36;    //6 key 
    const int VK_7 = 0x37;    //7 key 
    const int VK_8 = 0x38;   //8 key 
    const int VK_9 = 0x39;    //9 key
 
 
//*********/WinAPI константы*********
 
 
 
private void button1_Click(object sender, EventArgs e)
{
    IntPtr hWnd = FindWindow(null, comboBox1.SelectedItem.ToString()); 
    IntPtr t1;
    if (hWnd == IntPtr.Zero) 
    { 
        MessageBox(new IntPtr(0), "Not found main", "Error", 0);
        return; 
    }
    IntPtr hEdit = FindWindowEx(hWnd, IntPtr.Zero, "Button", "5");
    if (hEdit == IntPtr.Zero)
    {
        MessageBox(new IntPtr(0), "Not found child", "Error", 0);
        return;
    } 
   
        t1 = (IntPtr)116;
     // Scan-код символа "9" (F1 = 112, F2 = 113, F3 = 114 ... F10 = 121)
    IntPtr nul = IntPtr.Zero; 
    int retValue;
 
    retValue = SendMessage(hEdit, WM_SETFOCUS, nul, nul);
    retValue = SendMessage(hEdit, WM_KEYDOWN, t1, nul);
    //retValue = SendMessage(hEdit, WM_CHAR, t1, nul);
    retValue = SendMessage(hEdit, WM_KEYUP, t1, nul);
}
Если раскоментить WM_CHAR и отпавить код символа, то он появится в блокноте.
Читал, что вроде как системные клавиши нужно отправить через SendInput. Но с ним заковырялся.

Если кто знает, подскажите в чем ошибка.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.04.2010, 17:13
Ответы с готовыми решениями:

Отправка сообщений ProgressBar
Здравствуйте. Столкнулся с такой проблемой. В диаллоге имеется прогресс бар. Пытаюсь отослать ему сообщения, но компилятор ругается ...

Отправка сообщений в браузерное приложение
Здравствуйте. Есть браузерное flash приложение (игра если угодно), необходимо отправить в него сообщение типа WM_KEYDOWN. Я пытался...

Передача сообщений в окно приложения
Добрый день. Есть приложение, которое запускается моей программой. Далее это приложение выдает окно для ввода пароля. Хочу сделать так,...

3
0 / 0 / 0
Регистрация: 19.04.2010
Сообщений: 3
17.05.2010, 09:38  [ТС]
Терзают смутные сомнения, что тут редко кто отвечает =(
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
17.05.2010, 13:40
А вы пробовали что нибудь типа
C#
1
keybd_event(VK_F1, 0, 0, 0);
Функция keybd_event
0
0 / 0 / 0
Регистрация: 19.04.2010
Сообщений: 3
20.05.2010, 14:41  [ТС]
Я через PostMessage реализовал.
Спасибо за то, что откликнулись!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2010, 14:41
Помогаю со студенческими работами здесь

Отправка сообщений
Добрый день ув. форумчане. Нужна ваша помощь!!!! Имеется программа написана на Delphi 7 с применением базы данных Oracle. Стоит задача...

Отправка сообщений
Здравствуйте форумчане! Я собственно, человек тут самый новый, и сразу к Вам с просьбой о помощи. Утром сдавать проект, а самое главное не...

Отправка сообщений
Помогите Плииз с программой.. Мне нужен код для отправки сообщения на email того, кто авторизовался, я просто много ссылок пересмотрел,,...

Отправка сообщений
Здравствуйте. Есть ли у кого код на ЧИСТОМ с++ который отправляет письмо на почту-это пока) если разберусь с кодом то доработаею. Самого...

Отправка сообщений
имеется код <? // ----------------------------конфигурация-------------------------- // $adminemail="moy@meta.ua"; //...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru