Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818

Подключение user32 для доступа к ее функциям

22.09.2014, 23:34. Показов 5670. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как я понял есть она только как dll-ка. Смотрел много примеров где используют ее методы например

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string className, string windowName);
 
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 
        [DllImport("User32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
 
        [DllImport("User32.dll")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);
 
        [DllImport("User32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
Мне что все ее методы переписовать так же?
мне бы еще найти аналоги
C++
1
2
3
4
        POINT pt;
        HWND hwnd;
        LPARAM lParam;
        RECT rect;
подозреваю они там же, но не знаю как их вызвать... Просветите меня может можно просто подключить пространство имен что бы просто вызивать эти методы а не обяви то не знаю что
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.09.2014, 23:34
Ответы с готовыми решениями:

Подключение user32.dll для работы в Windows XP
Вот сам код void __fastcall TForm3::MyFunc() { // химичу, запуска на ХР. Надо библиотеку загружать динамически. typedef...

Скорость доступа к виртуальным функциям в сложной иерархии
Если компилятор не знает адрес виртуального метода, он по указателю ищет в таблице виртуальных методов подходящий для вызова метод. Мне...

создать метод доступа к функциям класса-наследника
Допустим, есть базовый класс Фигура и наследники "Треугольник", "Квадрат". Мне нужно создать метод доступа к функциям наследника. ...

10
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
23.09.2014, 00:05
Лучший ответ Сообщение было отмечено Lynatik001 как решение

Решение

Цитата Сообщение от Lynatik001 Посмотреть сообщение
Мне что все ее методы переписовать так же?
Зачем все? Что нужно то и берите.
Цитата Сообщение от Lynatik001 Посмотреть сообщение
POINT
Point
Цитата Сообщение от Lynatik001 Посмотреть сообщение
HWND
IntPtr
Цитата Сообщение от Lynatik001 Посмотреть сообщение
LPARAM
IntPtr
Цитата Сообщение от Lynatik001 Посмотреть сообщение
RECT
Нет аналога. По размеру подходит Rect, но по смыслу поля будут отличаться. RECT structure.

Всё есть на MSDN, главное искать.
2
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
23.09.2014, 02:18  [ТС]
Цитата Сообщение от NickoTin Посмотреть сообщение
Всё есть на MSDN, главное искать.
Где можно посмотреть все методы user32.dll
что бы вызивать их правильно. а то боюсь накосячу с параметрами
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
23.09.2014, 02:21
Цитата Сообщение от Lynatik001 Посмотреть сообщение
не работает не видит его
Ошибку, которую Вам компилятор выводит, напишите.
Цитата Сообщение от Lynatik001 Посмотреть сообщение
GetCursorPos(pt);
Если Вы объявляете GetCursorPos(out Point, то куда пропал out при вызове?
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
23.09.2014, 02:24  [ТС]
Цитата Сообщение от NickoTin Посмотреть сообщение
Если Вы объявляете GetCursorPos(out Point, то куда пропал out при вызове?
все решил, давно не юзал сшарп вопрос еще. видел пару вариаций с ref - по ссылке а out это что означает? А еще
Цитата Сообщение от Lynatik001 Посмотреть сообщение
Где можно посмотреть все методы user32.dll
что бы вызивать их правильно. а то боюсь накосячу с параметрами
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
23.09.2014, 02:28
ref - переменная должна быть инициализирована до вызова функции, out - функция сама заботится об инициализации переменной, т.е. можно просто объявить переменную и не присваивать её какое-либо значение. Оба ключевых слова передают аргумент по ссылке.

ref & out via MSDN.
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
23.09.2014, 02:36  [ТС]
Цитата Сообщение от Lynatik001 Посмотреть сообщение
Сообщение от Lynatik001
Где можно посмотреть все методы user32.dll
что бы вызивать их правильно. а то боюсь накосячу с параметрами
Последний раз редактировалось Lynatik001; Сегодня в 03:28.
я так понял негде значит не посмотреть?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
23.09.2014, 02:45

Не по теме:

Lynatik001, не редактируйте сообщения если ответ уже дан, смысл теряется...


Цитата Сообщение от Lynatik001 Посмотреть сообщение
я так понял негде значит не посмотреть?
MSDN + поиск = список документированных функций с описанием;
DependecyWalker или DumpBin - получите список всех экспортируемых функций, а дальше поиск по MSDN.

Добавлено через 3 минуты
Забыл, еще сайт pinvoke.net, но я им не пользуюсь...
2
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
24.09.2014, 00:41  [ТС]
Цитата Сообщение от NickoTin Посмотреть сообщение
MSDN + поиск = список документированных функций с описанием;
DependecyWalker или DumpBin - получите список всех экспортируемых функций, а дальше поиск по MSDN.
Добавлено через 3 минуты
Забыл, еще сайт pinvoke.net, но я им не пользуюсь...
Слушай а ты случаем не знаешь как мне сделать параметры идентичными


Вот в игрушке захотел сделать идентичное емулирование нажатия клавиш, все ок но есть несколько отлечительных параметров, как мне их тоже индетичными сделать? См скрин (первое нажатие и 2 отжатие человеческие), 3 и 4 программы отличия только в cRepeat , fRepeat, Up. как мне сделать их идентичными?

C++
1
2
3
4
5
6
7
    Sleep(200);
    int ScanCode = MapVirtualKey(button, 0);
    lParam = ScanCode << 16;
    
    PostMessage(hwnd, WM_SYSKEYDOWN, button, lParam);
    Sleep(100);
    PostMessage(hwnd, WM_SYSKEYUP, button, lParam);
спрашивал в С++ разделе не ответили, так как пишу уже ее на C# что бы не плодить аналогов спрошу тут


PostMessage идентичное нажатие что и человек

скрин
Миниатюры
Подключение user32 для доступа к ее функциям  
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
24.09.2014, 13:08
Цитата Сообщение от Lynatik001 Посмотреть сообщение
(первое нажатие и 2 отжатие человеческие), 3 и 4 программы
А может всё-таки наоборот? Первые 2 сообщения Ваши, судя по C++ коду, а вот следующие 2 нажатия "человеческие".

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
        [DllImport("user32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool PostMessage(
            IntPtr hWnd,
            uint Msg,
            IntPtr wParam,
            IntPtr lParam
            );
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern int MapVirtualKey(
            int uCode,
            int uMapType
            );
 
 
        static void Main(string[] args)
        {
            IntPtr hWnd = (IntPtr)0x00C9091E;
            const uint WM_SYSKEYDOWN = 0x0104;
            const uint WM_SYSKEYUP = 0x0105;
 
            int ScanCode = MapVirtualKey((int)Keys.F10, 0);
            int lParamDown = 1 | (ScanCode << 16);
            int lParamUp = lParamDown |
                            (1 << 30) |
                            (1 << 31);
 
 
            PostMessage(hWnd, WM_SYSKEYDOWN, (IntPtr)Keys.F10, (IntPtr)lParamDown);
            Thread.Sleep(100);
            PostMessage(hWnd, WM_SYSKEYUP, (IntPtr)Keys.F10, (IntPtr)lParamUp);
        }
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
24.09.2014, 17:39  [ТС]
Цитата Сообщение от NickoTin Посмотреть сообщение
А может всё-таки наоборот? Первые 2 сообщения Ваши, судя по C++ коду, а вот следующие 2 нажатия "человеческие".
ну да наоборот*

Добавлено через 1 час 55 минут
Цитата Сообщение от NickoTin Посмотреть сообщение
int ScanCode = MapVirtualKey((int)Keys.F10, 0);
* * * * * * int lParamDown = 1 | (ScanCode << 16);
* * * * * * int lParamUp = lParamDown |
* * * * * * * * * * * * * * (1 << 30) |
* * * * * * * * * * * * * * (1 << 31);
можете просветить как мы добиваемся этими манипуляциями все делать. Я знаю что такое побитовые операции и побитовый сдвиг, но все ровно непонятно)

просто для кнопок ниже ф10 или то ф9
действеут уже не sys а просто

C#
1
2
        int WM_KEYDOWN = 0x0100;
        int WM_KEYUP = 0x0101;
при подставлении вашего примера к моему коду выходит что кнопка только посылает отжатие(а нажатие на кнопку не приисходит) Spy++ видно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.09.2014, 17:39
Помогаю со студенческими работами здесь

Получение доступа к функциям диалога из другого потока (mfc)
Всем доброго дня Возникла такая проблема. В классе диалогового окна создаем экземпляр класса для расчетов. Передаем данные и запускаем...

Проблема доступа к функциям-членам одного класса из другого
Есть два класса, A и B: class B { }; class A { private:


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

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

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
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
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru