Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818

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

22.09.2014, 23:34. Показов 5619. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
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
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru