powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Кликнуть мышью
13 сообщений из 13, страница 1 из 1
Кликнуть мышью
    #39926273
Cytrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Стоит простая задача.
Кликнуть левой кнопкой мыши в центре экрана.
Как такое реализовать?
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926277
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получить дескриптор окна, получить его размеры, послать необходимое сообщение (пару) в это окно, передав нужные параметры...
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926297
Cytrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser , мне надо просто сделать эмуляцию клика по центру экрана. Без окон.
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926308
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в гугле забаннили?
Код: 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.
using System;
using System.Runtime.InteropServices;
using System.Threading.Tasks;

namespace MouseSimulator
{
    class Program
    {
        static void Main(string[] args)
        {
            MouseOperations.SetCursorPosition(200, 200);
            MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.RightDown);
            Task.Delay(100).Wait();
            MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.RightUp);
        }
    }


    public class MouseOperations
    {
        [Flags]
        public enum MouseEventFlags
        {
            LeftDown = 0x00000002,
            LeftUp = 0x00000004,
            MiddleDown = 0x00000020,
            MiddleUp = 0x00000040,
            Move = 0x00000001,
            Absolute = 0x00008000,
            RightDown = 0x00000008,
            RightUp = 0x00000010
        }

        [DllImport("user32.dll", EntryPoint = "SetCursorPos")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool SetCursorPos(int x, int y);

        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool GetCursorPos(out MousePoint lpMousePoint);

        [DllImport("user32.dll")]
        private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);

        public static void SetCursorPosition(int x, int y)
        {
            SetCursorPos(x, y);
        }

        public static void SetCursorPosition(MousePoint point)
        {
            SetCursorPos(point.X, point.Y);
        }

        public static MousePoint GetCursorPosition()
        {
            MousePoint currentMousePoint;
            var gotPoint = GetCursorPos(out currentMousePoint);
            if (!gotPoint) { currentMousePoint = new MousePoint(0, 0); }
            return currentMousePoint;
        }

        public static void MouseEvent(MouseEventFlags value)
        {
            MousePoint position = GetCursorPosition();

            mouse_event
                ((int)value,
                 position.X,
                 position.Y,
                 0,
                 0)
                ;
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct MousePoint
        {
            public int X;
            public int Y;

            public MousePoint(int x, int y)
            {
                X = x;
                Y = y;
            }
        }
    }
}
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926316
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cytrus
мне надо просто сделать эмуляцию клика по центру экрана. Без окон.

вызвать WindowFromPoint

при неудаче получить дескриптор десктопа - GetDesktopWindow

ЗЫ какого экрана - их несколько бывает
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926319
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
в гугле забаннили?


highly likely
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926358
Cytrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes , не работает ваш пример.

Код: c#
1.
2.
3.
Error 1  The type or namespace name 'Tasks' does not exist in the namespace 'System.Threading'
(are you missing an assembly reference?)
Project2 Col 24  Line 3   C:\Program\Visual\Projects\Project2\Project2\CodeFile1.cs
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926380
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cytrus,

(are you missing an assembly reference?)
однако так и есть
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926397
Cytrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил, нет у меня в списке таких пространств имён.
System.Threading;
System.Threading.Tasks;

Выделил всё. И всё, и всё добавил. Та же ошибка.

Framework 3.5.
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926401
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tasks начинаются в 4.0, await - в 4.5
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926421
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cytrus, ну вы это... гуглите хоть...
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926422
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cytrus
Framework 3.5.

Код: c#
1.
Thread.Sleep

с версии 1.1 доступен
...
Рейтинг: 0 / 0
Кликнуть мышью
    #39926457
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cytrus
Roman Mejtes , не работает ваш пример.

Код: c#
1.
2.
3.
Error 1  The type or namespace name 'Tasks' does not exist in the namespace 'System.Threading'
(are you missing an assembly reference?)
Project2 Col 24  Line 3   C:\Program\Visual\Projects\Project2\Project2\CodeFile1.cs

боюсь, что тогда мне не чем вам помочь, если вы не осилили. советую для начала изучить основы программирования.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Кликнуть мышью
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]