Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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


Ответ
 
Опции темы
Старый 15.11.2008, 23:32   #1
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию Отловить движение курсора, диалоговые сообщения.

1.Как отловить перемещение курсора вне программы, и узнать его положение?
2.Как предотвратить появление окна об ошибке если знать его заголовок и текст сообщения?
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 15.11.2008, 23:45   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
1.Как отловить перемещение курсора вне программы, и узнать его положение?
Попробуйте так, я этот код написал на скорую руку. Если понадобится, то оптимизируйте его:
Код:
Var
X,Y: Integer;
T: TPoint;
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
GetCursorPos(T);
Edit1.Text:=IntToStr(T.X);
Edit2.Text:=IntToStr(T.Y);
If (T.X=X) And (T.Y=Y) Then
Begin
Label1.Caption:='Курсор не двигается';
End;
If (T.X<>X) And (T.Y<>Y) Then
Begin
Label1.Caption:='Курсор двигается';
End;
End;
Procedure TForm1.Timer2Timer(Sender: TObject);
Begin
X:=T.X;
Y:=T.Y;
End;
Цитата:
2.Как предотвратить появление окна об ошибке если знать его заголовок и текст сообщения?
Можно сделать так:
Код:
Var
H: HWnd;
Begin
H:=FindWindow(Nil, 'Заголовок окна');
If H=0 Then
Exit;
ShowMessage('Окно появилось');
End;
Всегда рад помочь!

Последний раз редактировалось Terran; 15.11.2008 в 23:51.
Terran вне форума Ответить с цитированием
Старый 16.11.2008, 00:06   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
Можно сделать так:
По-моему это не сработает. Самое лучшее средство это заNOPить MessageBoxA прям в экзешнике.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2008, 00:20   #4
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Что значит заNOPить?
А как-нибудь с помощью tmessage можно один из этих вопросов решить?
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.

Последний раз редактировалось Deight; 16.11.2008 в 00:23.
Deight вне форума Ответить с цитированием
Старый 16.11.2008, 00:25   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
1.Как отловить перемещение курсора вне программы, и узнать его положение?
Вам уже дали правильный ответ.
Цитата:
2.Как предотвратить появление окна об ошибке если знать его заголовок и текст сообщения?
"знать его заголовок и текст сообщения" совершенно не обязательно. То место в программе, где возможно появление ошибки, обложите try..except.
mihali4 вне форума Ответить с цитированием
Старый 16.11.2008, 00:36   #6
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Ошибка не в моей программе возникает.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 16.11.2008, 00:45   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
Что значит заNOPить?
Ну изменить код Экзешника, убрав вызов процедуры отображения сообщения...
Цитата:
А как-нибудь с помощью tmessage можно один из этих вопросов решить?
Для начала узнай класс окна того сообщения скажем с помошью WinSight или SpyXX. Потом уж можно будет ему посылать нажатие клавиши если оно вылезет.

Но подумай коли программа неверно работает то и результат может давать неверный, разве это хорошо? Тряси автора дабы он ее переработал
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2008, 00:55   #8
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

А возможно не закрывать уже открывшееся сообщение, так я уже делал, а не дать ему вообще появиться или хотя-бы от звука характерного избавиться.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 16.11.2008, 11:08   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
а не дать ему вообще появиться или хотя-бы от звука характерного избавиться.
Ок. расскажу как делаю я.
Есть у нас одна прожка, которая малость достает своими окнами сообщений, причем не ошибками а пустячными сообшениями. Ессно она в Экзе файле. Я беру OllyDebuger, открываю ее в нем, и нахожу вызов функции MessageBoxA. Вид которого будет примерно такой:

Код:
/*4040F6*/  PUSH    0
/*4040F8*/  PUSH    d21.0045E074
/*4040FD*/  PUSH    d21.0045E054
/*404102*/  PUSH    0
/*404104*/  CALL    <JMP.&user32.MessageBoxA>
Это вызов пресловутого окна сообшений.
Начинаю редактировать и вместо этих команд пишу команды NOP (ниче не делать) сабо самой после сохранения файла сообщение исчезает, как будто его и не было.

P.S. На всякий случай скажу - это не хакерство и не взлом, просто когда у авторов ручки кривые, а пользователи потом с мигренью и подарками ко мне приходят (типа выручай, ато апстену пора) я ну очень добренький становлюсь
I'm learning to live...

Последний раз редактировалось Stilet; 16.11.2008 в 11:14.
Stilet вне форума Ответить с цитированием
Старый 16.11.2008, 12:09   #10
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Лабогадорю, Можно только ссылочку на olldebuger, если не сложно.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отловить значение из таблицы? mik Microsoft Office Excel 5 27.10.2008 16:34
Как зделать обычные диалоговые окна? Editor Общие вопросы Delphi 1 03.05.2008 08:07
Отловить нажатие кнопок Sanek_ntsk Паскаль, Turbo Pascal, PascalABC.NET 2 12.03.2008 17:38
Как отловить имена таблиц? mik Microsoft Office Excel 1 18.11.2007 17:02
Отловить копирование на листе SAndrus Microsoft Office Excel 4 05.09.2007 11:29


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя