С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/104: Рейтинг темы: голосов - 104, средняя оценка - 4.62
49 / 49 / 3
Регистрация: 15.11.2009
Сообщений: 372

Управление мышью

17.09.2010, 01:20. Показов 20735. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Кто-нибудь может подсказать, как сделать такую программу:
пользователь запускает приложение и курсор мыши начинает двигаться сам к кнопке "Пуск", затем выбирает команду "Выключить" и затем выключается комп, причём во время работы проги пользователь не может управлять мышью ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.09.2010, 01:20
Ответы с готовыми решениями:

Управление мышью в консольном приложении
Возможно тема поднималась где то в разделе С/C++ и долго думая решил все же тут создать тему. Кто ни будь играл в текстовую консольную...

Блокировать клики мышью?
Суть. Имеется WF приложение, прозрачная форма (пропускает клики и не сбивает фокус с основного окна). Реализация примерно такая: ...

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

12
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.09.2010, 01:30
Вам надо вырубить комп или именно мышью двигать?
0
49 / 49 / 3
Регистрация: 15.11.2009
Сообщений: 372
17.09.2010, 08:27  [ТС]
именно мышью двигать)
ну то есть, после запуска приложения пользователь перестаёт контролировать мышь, но курсор начинает двигаться от точки в которой запустили приложение до точки, где находится кнопка "пуск", затем передаётся команда на нажатие левой кнопки, открывается меню, затем курсор движется на кнопку "выключить" и когда он достиг кнопки посылается опять команда левой кнопки и комп выключается
очень интересно, как это можно реализовать)
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.09.2010, 12:27
Для управления мышью используйте API SetCursorPos, для эмуляции нажатия мыши используйте либо mouse_event, либо SendMessage с параметрами WM_LBUTTONDOWN(UP).

p.s. по эмуляции могу выложить класс чуть позже...
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
17.09.2010, 16:02
Helios1.618, а не проще в автозагрузку сунуть прогу, которая просто вырубает комп без всяких заморочек с мышкой?
0
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
17.09.2010, 17:11
не забудь читать из реестра где находится эта кнопка пуск=) и есть ли она вообще=)
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.09.2010, 17:38
не забудь читать из реестра где находится эта кнопка пуск
Можно через FindWindow найти.
0
49 / 49 / 3
Регистрация: 15.11.2009
Сообщений: 372
17.09.2010, 17:42  [ТС]
SSTREGG, буду благодарен за любую помощь)
nio, это тож прикольно, но а если вставить такую прогу в автозагрузку, то получится типа вируса и как потом можно будет её отключить ?
gGrn-7DA, а как это сделать ?

Добавлено через 1 минуту
SSTREGG, а можете в пример привести код, статью или хоть что-нибудь ?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.09.2010, 17:49
Это класс эмуляции нажатий кнопок клавиатуры и мыши:
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
public static class NativeMethods
{
    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
 
    static int GetWParamFromButton(MouseButton btn)
    {
        switch (btn)
        {
            case MouseButton.Left: return 0x0001;
            case MouseButton.Middle: return 0x0010;
            case MouseButton.Right: return 0x0002;
            default: throw new Win32Exception("Невозможно преобразовать значение!");
        }
    }
    /// <summary>
    /// Эмуляция нажатия и отпускания кнопок мыши.
    /// </summary>
    /// <param name="hWnd">Дескриптор окна в которое будет послано сообщение.</param>
    /// <param name="btn">Кнопка мыши.</param>
    /// <param name="x">Координата X (относительно экрана).</param>
    /// <param name="y">Координата  Y (относительно экрана).</param>
    public static void MouseClick(IntPtr hWnd, MouseButton btn, int x, int y)
    {
        int xyPoint = NativeMacros.MAKELONG(x, y);
        int wParam = GetWParamFromButton(btn);
 
        SendMessage(hWnd, (int)btn, wParam, xyPoint);
        SendMessage(hWnd, (int)btn + 1, wParam, xyPoint);
    }
    /// <summary>
    /// Эмуляция нажатия кнопок мыши.
    /// </summary>
    /// <param name="hWnd">Дескриптор окна в которое будет послано сообщение.</param>
    /// <param name="btn">Кнопка мыши.</param>
    /// <param name="x">Координата X (относительно экрана).</param>
    /// <param name="y">Координата  Y (относительно экрана).</param>
    /// <returns>Возвращает результат работы функции SendMessage.</returns>
    public static int MouseDown(IntPtr hWnd, MouseButton btn, int x, int y)
    {
        int xyPoint = NativeMacros.MAKELONG(x, y);
        int wParam = GetWParamFromButton(btn);
 
        return SendMessage(hWnd, (int)btn, wParam, xyPoint);
    }
    /// <summary>
    /// Эмуляция отпускания кнопок мыши.
    /// </summary>
    /// <param name="hWnd">Дескриптор окна в которое будет послано сообщение.</param>
    /// <param name="btn">Кнопка мыши.</param>
    /// <param name="x">Координата X (относительно экрана).</param>
    /// <param name="y">Координата  Y (относительно экрана).</param>
    /// <returns>Возвращает результат работы функции SendMessage.</returns>
    public static int MouseUp(IntPtr hWnd, MouseButton btn, int x, int y)
    {
        int xyPoint = NativeMacros.MAKELONG(x, y);
        int wParam = GetWParamFromButton(btn);
 
        return SendMessage(hWnd, (int)btn + 1, wParam, xyPoint);
    }
    /// <summary>
    /// Нажатие или отпускание определенной клавиши клавиатуры.
    /// </summary>
    /// <param name="hWnd">Дескриптор окна в которое будет послано сообщение.</param>
    /// <param name="keys">Клавиша.</param>
    /// <param name="up">FALSE если кнопка нажата, иначе TRUE.</param>
    /// <returns>Возвращает результат работы функции SendMessage.</returns>
    public static int KeyPress(IntPtr hWnd, Keys keys, bool up)
    {
        int WM_KEY = up ? 0x0101 /* WM_KEYUP */ : 0x0100 /* WM_KEYDOWN */;
 
        return SendMessage(hWnd, WM_KEY, (int)keys, 0);
    }
}
 
public struct NativeMacros
{
    /// <summary>
    /// C++ макрос для GET_X_LPARAM.
    /// </summary>
    public static int GET_X_LPARAM(int x)
    {
        return x & 0xffff;
    }
    /// <summary>
    /// C++ макрос для GET_Y_LPARAM.
    /// </summary>
    public static int GET_Y_LPARAM(int x)
    {
        return (x >> 16) & 0xffff;
    }
    /// <summary>
    /// C++ макрос для MAKELONG.
    /// </summary>
    public static int MAKELONG(int x, int y)
    {
        return (x & 0xffff) | ((y & 0xffff) << 16);
    }
}
 
public enum MouseButton : int
{
    Left = 0x201, // WM_LBUTTONDOWN
    Right = 0x204, // WM_RBUTTONDOWN
    Middle = 0x207 // WM_MBUTTONDOWN
}
Он может не работать, зависит от того как окно обрабатывает сообщение. Декларирование API можно смотреть на pinvoke.net. Понадобятся FindWindow(Ex), mouse_event (возможно) и SendMessage. Ещё проблема может быть в том, что когда появляется окно завершения работы, выбранный Вами метод может не работать...
4
49 / 49 / 3
Регистрация: 15.11.2009
Сообщений: 372
17.09.2010, 17:57  [ТС]
Цитата Сообщение от SSTREGG Посмотреть сообщение
Ещё проблема может быть в том, что когда появляется окно завершения работы, выбранный Вами метод может не работать...
а как это можно решить ?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.09.2010, 19:30
Это я в отношении выключения имел ввиду ), остальное должно работать.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
19.09.2010, 22:13
Цитата Сообщение от Helios1.618 Посмотреть сообщение
это тож прикольно, но а если вставить такую прогу в автозагрузку, то получится типа вируса
Даже, если ты хочешь перехватывать управление мышкой, то прога эта сама не запустится, ее тож в автозагрузку ставить нужно

Цитата Сообщение от Helios1.618 Посмотреть сообщение
и как потом можно будет её отключить ?
если на совсем отключить - убрать с автозагрузки.
если нужно предотвратить выключение разово, то пажалуй следует сделать некое ожидание ввода какой-нить команды, если команда не была введена, комп вырубается.
0
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 7
24.02.2011, 21:29
Может кто по подробнее обьяснить,как программа управляет мышью? что нужно прописать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.02.2011, 21:29
Помогаю со студенческими работами здесь

Как отключить управление мышью в ScrollViewer?
Понадобилось отключить возможность скроллинга в ScrollViewer (колёсико понадобится для зума). Возможно ли это сделать или надо делать свой...

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

Рисование на Canvas мышью
Как можно реализовать рисование мышью)как в паинте что бы можно было рисовать?мне бы идею,я уже реализовал одну идею с помощью отлавливать...

Работа с мышью
Вопрос наверно очень нубский но всьотаки .... как мне в C# как определить была нажата левая или правая кнопка мыши??? На пустой форме. ...

Работа с мышью в консоли
Здравствуйте... Подскажите пожалуйста как в консоли управлять мышью? Хочу написать консольный сапер)) (в плане обучения).... И надо чтобы...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru