| 
| 
 | Вопрос # 5 387/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Возможно ли заставить исчезнуть курсор мыши в чужом приложении?
 Возможно есть аналог ShowCursor для чужих приложений?
 PS В данном случае чужое приложение - браузер Opera в котором проигрывается флеш.
 
|  |   Вопрос задал: Ins (статус: 1-ый класс)Вопрос отправлен: 8 июня 2011, 01:10
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: ierihon1 Здравствуйте, Игорь Александрович!
 Всё таки я нашёл способ решения этой проблемы, вместо того чтобы совсем прятать курсор он будет убираться в такой угол в котором он не будет вден и это поможет избежать проблем с его появлением. на форме должны быть два таймера я задал первому интервал 7000 а второму 500.
 вот обработчики события OnTime:
 
 procedure TForm2.Timer1Timer(Sender: TObject);
var Point:TPoint;
begin
GetCursorPos(Point);
X1:=point.X;
Y1:=point.Y;
timer2.Enabled:=True;
Timer1.Enabled:=False;
end;
 
procedure TForm2.Timer2Timer(Sender: TObject);
var Point:TPoint;
begin
GetCursorPos(Point);
X2:=point.X;
Y2:=point.Y;
if (X1=X2) and (Y1=Y2) then
SetCursorPos(Screen.Width-1,0)
else
Timer1.Enabled:=True;
end; 
|  | Ответ отправил: ierihon1 (статус: 1-ый класс)Время отправки: 8 июня 2011, 11:28
 Оценка за ответ: 4
 Комментарий к оценке: Прошу прощения, но это совсем не то что я хочу сделать. Если просто перемещать - то вполне хватает и одного таймера. Ставлю 4 за желание помочь) |  
 Мини-форум вопросаВсего сообщений: 23; последнее сообщение — 15 июня 2011, 01:37; участников в обсуждении: 4. Страницы: [1] [2] [Следующая »]  
|   | ierihon1 (статус: 1-ый класс), 8 июня 2011, 09:58 [#1]:А нужно чтобы он исчез именно когда открывается флещ проигрыватель? |  
|   | Вадим К (статус: Академик), 8 июня 2011, 10:14 [#2]:Заставить то исчезнуть можно, но зачем? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | ierihon1 (статус: 1-ый класс), 8 июня 2011, 10:17 [#3]:наверно чтобы видео не мешал смотреть)) |  
|   | Ins (статус: 1-ый класс), 8 июня 2011, 10:36 [#4]:Вы правы, что бы не мешал смотреть ^^ Идея весьма незамысловата. Каждые n секунд будут проверятся координаты мыши. Если не изменились - скрыть курсор. Про движении мыши показать.
 |  
|   | ierihon1 (статус: 1-ый класс), 8 июня 2011, 10:40 [#5]:ну это хорошая идея... но всё равно придётся проверять заголовок окна а для этого нужно проверять заголовок активного окна.. для этого есть специальная функция, сейчас попробую что нибудь настрочить) |  
|   | Ins (статус: 1-ый класс), 8 июня 2011, 10:46 [#6]:получить хендл - не есть проблема. Не знаю как заставить исчезнуть. Можно конечно нацарапать свой браузер, но не хочется "изобретать велосипед" |  
|   | ierihon1 (статус: 1-ый класс), 8 июня 2011, 10:50 [#7]:а как называется сайт на котором будет просматриваться видео? для браузера это очень важно.. |  
|   | Вадим К (статус: Академик), 8 июня 2011, 10:52 [#8]:Никогда подобной проблемы не возникало - курсор сам пропадает. Но кто мешает менять не курсор для приложения, а общесистемый и менять его на специально заготовленный пустой курсор?
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | ierihon1 (статус: 1-ый класс), 8 июня 2011, 11:30 [#9]:Игорь Александрович:  И еще.. совсем забыл написать это в ответе: второй таймер должен быть выключен по умолчанию его будет включать первый таймер. И ещё не мало важное переменный X1,X2,Y1,Y2 должы быть объявлены как глобальные переменные челочисленного типа.
 |  
|   | Ins (статус: 1-ый класс), 8 июня 2011, 11:43 [#10]:Адрес сайта значения не имеет. Как я уже писал получить хендл или заголовок окна - не проблема. Вадим К:
 Если Вы имеете ввиду функцию SetSystemCursor то если честно не особо понял как с ее помощью убрать курсор..
 |  
|   | Ins (статус: 1-ый класс), 8 июня 2011, 11:46 [#11]:ierihon1 прошу прощения, но как организовать проверку я и сам знаю. Интересует как убрать курсор в чужом окне или сделать его невидимым |  
|   | Вадим К (статус: Академик), 8 июня 2011, 11:52 [#12]:Посмотрел в msdn - и вспомнил - там есть специальная функция ShowCursor. Казалось бы, а где функция HideCursor? а она и не нужна, потому что просто нужно правильно передать параметр. ShowCursor(True); показать курсор
 ShowCursor(False); скрыть курсор
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | ierihon1 (статус: 1-ый класс), 8 июня 2011, 12:08 [#13]:ShowCursor скрывает кусор только в пределах окна приложения... на сколько я знаю... я пытался это использовать.. |  
|   | Ins (статус: 1-ый класс), 8 июня 2011, 12:10 [#14]:ierihon1: Вот моё решение подобным образом 
 procedure TForm109.Timer1Timer(Sender: TObject);
Var
pt:TPoint;
x,y:integer;
begin
GetCursorPos(pt);
if (pt.X<>x) and (pt.y<>y) then
    Begin
    x:=pt.X;
    y:=pt.Y;
    End                    else
SetCursorPos(Screen.Width-1,0);
end; |  
|   | Ins (статус: 1-ый класс), 8 июня 2011, 12:12 [#15]:Вадим К: Действительно данная функция действует только на свое приложение ( |  
|   | ierihon1 (статус: 1-ый класс), 8 июня 2011, 12:52 [#16]:Нужно искать функцию которая вообще отключит курсор.. а эта делает его всего лишь невидимым.. |  
|   | Вадим К (статус: Академик), 8 июня 2011, 13:01 [#17]:Если курсор отключить - то уже нельзя будет получать его координаты. Вы уверенны, что Вам это нужно? Но так и не понятно, зачем это делать. Проверил у себя - при полноэкранном режиме просмотра флеша, курсор сам скрывается.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | ierihon1 (статус: 1-ый класс), 8 июня 2011, 13:21 [#18]:ну так сначала определяются координаты а потом уже отключается курсор, значит и не нужны координаты после его выключения, только будет одна проблема... как его включить обратно... |  
|   | ierihon1 (статус: 1-ый класс), 8 июня 2011, 13:23 [#19]:вот кое что нагуглил 
 //Выключение курсора
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);
bnd; |  
|   | Ins (статус: 1-ый класс), 8 июня 2011, 13:33 [#20]:ierihon1: Если он станет невидимым - меня это вполне устроит Вадим К: К сожалению у меня он не скрывается =\
 |  Страницы: [1] [2] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |