|
Вопрос # 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] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|