Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2011, 03:49   #1
sergeant.coolagin
 
Регистрация: 04.05.2011
Сообщений: 5
По умолчанию Блокировка курсора мыши.

Необходимо заблокировать курсор мыши на тех координатах, на которых он в данный момент находится по нажатию кнопки на мыши. А по отпусканию кнопки, чтобы курсор мыши разблокировался. Пробовал это сделать через прогу AutoHotKey - не получилось. Вот что у меня получилось в Autohotkey(я знаю, что форум про Delphi):
Код:
*$Lbutton:: 
{
BlockInput, MouseMove
}
Return
*$lbutton up::
{
BlockInput, MouseMoveOff
}
Return
Скрипт то работает, но мне это нужно для игр. А игры вроде как используют Direct Input. А еще этот Mouse hook. Хотя я могу и не то что-то говорить... А эта команда как раз в таких приложениях и не работает. Но есть ведь другие программы. Я в delphi полный ноль. Только что установил себе его. Вот нарыл пару кодов:
Код:
//Выключение курсора
procedure TForm1.Button1Click(Sender: TObject);
var
  CState: Integer;
begin
  CState := ShowCursor(True);
  while Cstate >= 0 do
    Cstate := ShowCursor(False);
end;

//Включение курсора
procedure TForm1.Button2Click(Sender: TObject);
var
  Cstate: Integer;
begin
  Cstate := ShowCursor(True);
  while CState < 0 do
    CState := ShowCursor(True);
end;
Этот код вроде как по логике отключает сам курсор, но не блокирует его.
Код:
rundll32 mouse,disable
А вот это не знаю, вырубает мышь. Надеюсь это будет работать. Думаю, включить будет примерно так:
Код:
rundll32 mouse, enable
Но мне нужно привязать это, например, к левой кнопке мыши и скомпилировать скрипт. Помогите, пожалуйста. Может где-то написана статья, как по нажатию кнопок запускать скрипты и т.д. Я уже разберусь. А то действительно 10 мин. назад установил себе этот delphi.
sergeant.coolagin вне форума Ответить с цитированием
Старый 04.05.2011, 04:40   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

1)
Код:
var
  Form1: TForm1;
  gx,gy:integer;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
     gx:=Round(Mouse.CursorPos.X * (65535 / Screen.Width));
     gy:=Round(Mouse.CursorPos.Y * (65535 / Screen.Height));
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
     if (gx>0)and(gy>0) then
     begin
          x:=gx;
          y:=gy;
          Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE,gx, gy, 0, 0);
     end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
     gx:=-1;
     gy:=-1;
end;
2)
Код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var r: TRect;
begin
     r.Left:=X;
     r.Top:=Y;
     r.Right:=X;
     r.Bottom:=Y;
     ClipCursor(@r);
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
     ClipCursor(nil);
end;
пс: 2й вариант не проверял - доктор веб удаляет скомпилированные приложения.
псс: актуально для приложений WinForms.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 04.05.2011, 16:43   #3
sergeant.coolagin
 
Регистрация: 04.05.2011
Сообщений: 5
По умолчанию

Я погуглил, почитал. Вычитал, что delphi не будет запускать скрипты и компилировать их на 64 битной ОС. А у меня как раз windows 7 64-bit.
Вот что выдает RAD Studio 2010 на первый и второй коды:

Код:
Checking project dependencies...
Compiling Package1.dproj (Debug configuration)
[DCC Error] Unit1.pas(2): E2029 'UNIT' expected but 'VAR' found
[DCC Error] Unit1.pas(3): E2003 Undeclared identifier: 'TForm1'
[DCC Error] Unit1.pas(6): E2029 '.' expected but 'IMPLEMENTATION' found
[DCC Warning] Unit1.pas(6): W1011 Text after final 'END.' - ignored by compiler
[DCC Fatal Error] Package1.dpk(31): F2063 Could not compile used unit 'Unit1.pas'
Failed
Elapsed time: 00:00:00.1

Код:
Checking project dependencies...
Compiling Package1.dproj (Debug configuration)
[DCC Error] Unit1.pas(1): E2029 'UNIT' expected but 'PROCEDURE' found
[DCC Error] Unit1.pas(1): E2029 ';' expected but '.' found
[DCC Error] Unit1.pas(3): E2003 Undeclared identifier: 'TRect'
[DCC Error] Unit1.pas(5): E2066 Missing operator or semicolon
[DCC Error] Unit1.pas(6): E2066 Missing operator or semicolon
[DCC Error] Unit1.pas(7): E2066 Missing operator or semicolon
[DCC Error] Unit1.pas(8): E2066 Missing operator or semicolon
[DCC Error] Unit1.pas(9): E2003 Undeclared identifier: 'ClipCursor'
[DCC Error] Unit1.pas(12): E2004 Identifier redeclared: 'TForm1'
[DCC Error] Unit1.pas(15): E2003 Undeclared identifier: 'ClipCursor'
[DCC Error] Unit1.pas(18): E2029 Declaration expected but end of file found
[DCC Fatal Error] Package1.dpk(31): F2063 Could not compile used unit 'Unit1.pas'
Failed
Elapsed time: 00:00:00.1
Что делать? Может я что-то не так делаю? По школе из паскаля помнится вроде все правильно .
sergeant.coolagin вне форума Ответить с цитированием
Старый 04.05.2011, 18:53   #4
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

А чего NOD32 ругается на эту страницу, находя на ней BAT/MouseDisable Троянская программа?
Он что паскалевские исходники, выложенные на странице, считает угрозой?
*PB* вне форума Ответить с цитированием
Старый 23.03.2014, 18:17   #5
sergvirus77
Новичок
Джуниор
 
Регистрация: 23.03.2014
Сообщений: 1
По умолчанию

Кто нибудь может скинуть готовую программу exe. Заранее спасибо!
sergvirus77 вне форума Ответить с цитированием
Старый 23.03.2014, 20:29   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

sergeant.coolagin, это плохой тон в программировании, не нужно так делать.
*PB*, он rundll32 mouse, disable палит
Изображения
Тип файла: jpg 8ovMmtWSY5k.jpg (24.4 Кб, 66 просмотров)

Последний раз редактировалось eoln; 23.03.2014 в 20:31.
eoln вне форума Ответить с цитированием
Старый 23.03.2014, 21:25   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
eoln
Теме три года
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление курсора мыши к скриншоту Pavel_S Мультимедиа в Delphi 2 20.04.2011 20:46
Перемещение курсора мыши по экрану Илья2204 Общие вопросы C/C++ 1 08.12.2010 13:34
Подсказка при наведении курсора мыши Syltan JavaScript, Ajax 2 23.04.2010 15:31
Перемещение курсора мыши UNREALcv Помощь студентам 1 11.04.2010 11:39
блокировка клавиатуры и мыши Var17 Win Api 6 14.04.2008 15:30