Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
8 / 8 / 3
Регистрация: 24.02.2015
Сообщений: 60

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

08.12.2015, 16:35. Показов 2158. Ответов 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
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 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
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 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
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru