8 / 8 / 3
Регистрация: 24.02.2015
Сообщений: 60

Преобразование Keys в IntPtr

08.12.2015, 16:35. Показов 2175. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
Использую :
C#
1
2
int WM_KEYDOWN = 256;
PostMessage(hWind, WM_KEYDOWN, key, IntPtr.Zero);
Как правильно конвертировать экземпляр класса System.Windows.Forms.Keys в экземпляр класса System.IntPtr, чтобы для всех клавиш было правильное значение?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2015, 16:35
Ответы с готовыми решениями:

Преобразование типа string в System.IntPtr
Привет всем, как можно преобразование типа "string" в "System.IntPtr". Я новенький в этом деле ещё и 1 недели не прошло как я перешел на...

IntPtr не находится (The type or namespace name 'IntPtr' could not be found)
при компиляции вылезает вот что: error CS0246: The type or namespace name 'IntPtr' could not be found (are you missing a using directive or...

Как скопировать IntPtr в IntPtr
Здравствуйте. Собственно сабж. Хотелось бы иметь что то вроде memcpy(IntPtr,IntPtr,int); получилось только это: ...

5
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18307 / 14231 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 1
08.12.2015, 17:44
quantumbox, у IntPtr есть конструктор принимающий int:
C#
1
2
int WM_KEYDOWN = 256;
PostMessage(hWind, new IntrPtr(WM_KEYDOWN), key, IntPtr.Zero);
0
8 / 8 / 3
Регистрация: 24.02.2015
Сообщений: 60
08.12.2015, 19:52  [ТС]
Нет, я не про int.. WM_KEYDOWN я просто туда написал. Мне что то такое:
C#
1
Keys key = Keys.A;
C#
1
IntPtr keyPtr = (IntPtr)key;
Но я не уверен, будет ли правильно работать.(Или вообще - будет работать?) Для всех ли клавиш?
Может есть какой нибудь "супер правильный вариант" преобразования Keys в IntPtr?
("Правильный", - имеется ввиду именно для "PostMessage".)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18307 / 14231 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 1
08.12.2015, 20:01
Лучший ответ Сообщение было отмечено quantumbox как решение

Решение

quantumbox, я бы создал перегрузку PostMessage специально для Keys
C#
1
2
3
4
5
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int PostMessage(IntPtr hwnd, int wMsg, Keys wParam, IntPtr lParam);
 
int WM_KEYDOWN = 256;
PostMessage(hWind, WM_KEYDOWN, key, IntPtr.Zero);
Или опять же с помощью конструктора IntPtr
C#
1
2
int WM_KEYDOWN = 256;
PostMessage(hWind, WM_KEYDOWN, new IntPtr((int)key), IntPtr.Zero);
1
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
08.12.2015, 21:00
Цитата Сообщение от OwenGlendower Посмотреть сообщение
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int PostMessage(IntPtr hwnd, int wMsg, Keys wParam, IntPtr lParam);
Разве это будет работать на x64? Keys это int в рантайме (4 байта), а IntPtr - 8 байт на x64...
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18307 / 14231 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 1
08.12.2015, 21:11
Цитата Сообщение от Someone007 Посмотреть сообщение
Разве это будет работать на x64?
Пожалуй что не будет. Нужно использовать вариант с IntrPtr.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.12.2015, 21:11
Помогаю со студенческими работами здесь

If (e.KeyData & Keys.Control) == Keys.Control)
Здравствуйте, друзья. Не знаю, как можно назвать данную тему, и поэтому решил озаглавить ее таким вот образом. Дело в...

преобразование ref byte в byte[] или в IntPtr без использования неуправляемого кода
есть COM интерфейс с методом: virtual /* */ HRESULT STDMETHODCALLTYPE OnReceivePacket( /* */ long dwSize, ...

String в IntPtr
Добрый вечер. В функции нужно представить адресс как (IntPtr)0x0D75084 , програмно я получаю десятичное значение 14110852, перевожу...

ToInt32+IntPtr = OverflowException
Здрасте! моя ос Win7 64bit скопипастил код на просторах интернета который демонстрирует работу сканера памяти приведу часть кода ...

Enum и сложения IntPtr
Раньше все выглядело вот так IntPtr address = 0x1541640 + 0x78 + ... Т.к. программа стала расширятся и адреса со смещениями...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru