Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
D-12
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 7
1

Программа по фиксированию состояния перемещения курсора

14.11.2014, 13:34. Просмотров 1044. Ответов 5
Метки нет (Все метки)

Здравствуйте! Есть проект, который связан с работой позиции указателя курсора. Вот пример кода:
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Timer2: TTimer;
    Timer3: TTimer;
    procedure Timer2Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
  private
    { Private declarations }
 
  protected
    m_lastPos : TPoint;
        
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  j:integer;
  
implementation
 
{$R *.dfm}
 
procedure TForm1.Timer2Timer(Sender: TObject);
var
  mousePos : TPoint;
begin
  mousePos := Mouse.CursorPos;
  if (mousePos.X <> m_lastPos.X) or (mousePos.Y <> m_lastPos.Y) then
  begin
    self.Invalidate;
    memo2.Lines.Add('Курсор перемещается');
    j:=0;
    m_lastPos := mousePos;
  end
  else
  begin
    self.Invalidate;
    timer3.Enabled:=true;
  end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
m_lastPos:=mouse.CursorPos;
end;
 
procedure TForm1.Timer3Timer(Sender: TObject);
var m:integer;
begin
m:=1000;
j:=m+j;
if j=5000 then
memo1.Lines.Add('Мышь заснула');
end;
 
end.
Всё работает, мемо1 отображает надпись при бездействии мыши 5 сек, Мемо2 отображает во время активности работы мыши, т.е. перемещается указатель курсора. Но возникла проблема, в момент работы этого проекта, я запустил другую программу(ну например AIDA64) и в этот момент срабатывает как бы система защиты "Контроль учетных записей пользователей". Сразу же срабатывают сигналы оповещения об ошибках, через каждые секунды, пока не нажал на кнопку "Да", программа запускается, сигналы исчезают, а в окне этого проекта (не AIDA) высвечивает надпись "System error code:5 Отказано в доступе", несколько штук таких сообщений.
Программа по фиксированию состояния перемещения курсора

Как избавиться от этого? Есть какие-то коды, чтобы проект обходил при запуске "Контроль учетных записей пользователей"? И еще, как вызвать перехват сообщений при переходе в ждущий режим? А то такая же ошибка высвечивается "System error code:5 Отказано в доступе" по несколько штук
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2014, 13:34
Ответы с готовыми решениями:

Запрет перемещения курсора
Как запретить перемещение между Edit-ами с помощью клавиши TAB?

Программа для отслеживания перемещения грузов
Пишу программу для отслеживания перемещения грузов перевозчиком имеется http:...

Шифрование методом Цезаря/простого перемещения/двойного перемещения/простой замены
Всем привет, так случилось что мне задали за пару дней сделать программу...

Программа следящая за положением курсора
Программа следящая за положением курсора на форме, и выводящая его координаты...

Перемещения курсора мыши
Здравствуйте. Подскажите пожалуйста. Кто знает какие способы для перемещения...

5
D-12
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 7
15.11.2014, 11:58  [ТС] 2
Неужели никто не сталкивался с такой с проблемой?
0
саша40
-111 / 293 / 47
Регистрация: 14.08.2012
Сообщений: 2,573
15.11.2014, 17:31 3
D-12, а другие программы? Которые не требуют прав админа?
0
D-12
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 7
16.11.2014, 12:49  [ТС] 4
на другие программы без прав админа работает без проблем, даже щас, когда пишу вам ответ(с мозилы), всё работает, но стоит запустить AIDA64, Reg Organizer, то вот такая фишка....

Добавлено через 18 часов 27 минут
Ковырялся вот и думаю, почему высвечивает окно "System error code:5 Отказано в доступе", оказывается (я так думаю), дело в типе TPoint, это как тип записи, который содержит целочисленные значения X и Y. Выходит, что "Контроль учетных записей пользователей" не дает записать/хранить координаты? Если да, то как обойти или есть другие коды/типы, которые могут брать координаты экрана?
0
cotseec
Пишу на Delphi...иногда
1408 / 1267 / 285
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
16.11.2014, 14:38 5
Лучший ответ Сообщение было отмечено D-12 как решение

Решение

Цитата Сообщение от D-12 Посмотреть сообщение
дело в типе TPoint,
дело в методе класса TMouse, начинаем копаться и видим такой геттер:
Delphi
1
2
3
4
5
6
7
8
9
10
11
function TMouse.GetCursorPos: TPoint;
begin
  Win32Check(Windows.GetCursorPos(Result));
end;
 
 
function Win32Check(RetVal: BOOL): BOOL;
begin
  if not RetVal then RaiseLastOSError;
  Result := RetVal;
end;
, т.е. если не получилось получить координаты курсора, то вызываем последнюю системную ошибку, а координаты как раз и не получить (и много чего еще простому приложению), когда ОС запрашивает подтверждение на админ. права
используй сразу GetCursorPos function проверяй результат и не выводи ошибку
1
D-12
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 7
16.11.2014, 23:58  [ТС] 6
Цитата Сообщение от cotseec Посмотреть сообщение
используй сразу GetCursorPos function
Точно, проблема решилась, окно с ошибкой больше не выводится, даже при переводе ноута в спящий режим ошибок нету. Большое спасибо)
0
16.11.2014, 23:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2014, 23:58

Мониторинг перемещения курсора по x y
Какая программа есть для отслеживания перемещения курсора по x y ?

Перемещения курсора мыши
Доброго времени суток! Возможно ли реализовать перемещения курсора мыши по...

Увеличить зону перемещения курсора
Сейчас минимальное положение курсора 0:0, максимальное 3840x2160. Некоторые...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru