Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.06.03;
Скачать: CL | DM;

Вниз

Не работает Beep. Не всегда. Закономерности не вижу.   Найти похожие ветки 

 
AV ©   (2012-02-03 09:29) [0]

простой код
procedure TFormAN.WM_FFN(var Message: TMessage);
begin
 Application.MainForm.BringToFront;
 FlashWindow(Application.MainForm.Handle,true);
 Beep;
 Sleep(300);
 Beep;
 OC.CloseOrder;
end;
призван сообщить о некотором событии
программка моя, висит постоянно на моей машине, что бы мне оперативнее отреагировать - проследить как выполнится  OC.CloseOrder;
OC.CloseOrder выполняется - вижу по логу, но иногда не бибикает

Так вот она то бибикает, то не бибикает.
Отчего такое поведение? Почему может не бибкать?


 
AV ©   (2012-02-03 09:36) [1]

уточнение - если перестало бибикать, то начинает обычно только после перезагрузки


 
И. Павел ©   (2012-02-03 09:54) [2]

> [0] AV ©   (03.02.12 09:29)

Посмотрите в момент следующего отключения — не отключен ли динамик (диспетчер устройств —> системные устройктва —> встроенный динамик)


> то начинает обычно только после перезагрузки

Программы или системы?


 
AV ©   (2012-02-03 10:37) [3]


> Программы или системы?

Системы.
Комп перезагружать надо, короче.
Пуск, Завершение работы, Перезагрузка.

Встроенный динамик - ОК, Конфликты не обнаружены.


 
AV ©   (2012-02-03 10:41) [4]

Нашел на одном форуме, что надо ввести команду
wmic.exe sysdriver where name="beep" get name, state

вывод:
Name  State
Beep  Running

т.е. работает драйвер, насколько понимаю


 
AV ©   (2012-02-03 10:45) [5]

так
 Beep;
 Sleep(300);
 MessageBeep(5000);
тоже тихо


 
Псарь   (2012-02-03 14:31) [6]

Пиши свой beep через waveOutWrite.


 
AV ©   (2012-02-03 14:49) [7]


> Псарь   (03.02.12 14:31) [6]

через колонки/наушники?
На работе это не приветствуется.

попробовал проследить
все чего-то делают-делают, несущественное, и вызывают что-то глубже..
добрел до ntdll.KiFastSystemCall
после этого идет в обратном порядке, до самой моей программы.
Кто из них, собственно, пищать собирается - непонятно.

ntdll.KiFastSystemCall
7C90E510 8BD4             mov edx,esp
7C90E512 0F34             sysenter
7C90E514 C3               ret

тут
http://opcode0x90.wordpress.com/2007/05/18/kifastsystemcall-hook/
пишут

> Each version of Windows have different syscall mechanism.
>  For Windows 2000 and older, the syscall mechanism is as
> shown below.
>
>     MOV EAX, SyscallNumber ; requested syscall number
>     LEA EDX, [ESP+4] ; EDX = params...
>     INT 2Eh ; throw the execution to the KM handler
>     RET 4*NUMBER_OF_PARAMS ; return
>
> Each syscall number is moved into EAX and invoked through
> INT 2Eh. In Windows XP and later, the syscall mechanism
> had changed.
>
>     MOV EAX, 101h ; syscall number: NtTerminateProcess
>     MOV EDX, 7FFE0300h ; EDX = 7FFE0300h
>     CALL EDX ; call 7FFE0300h
>     RETN 8
>
> Notice the difference. Instead of INT 2Eh, now it is replaced
> by CALL EDX which leads us to ntdll.KiFastSystemCall, a
> tiny stub containing the SYSENTER instruction.
>
>     MOV EDX, ESP
>     SYSENTER
>     RETN
>
> This is where KiFastSystemCall hook came in. We can install
> hook on the stub to catch all syscalls made by the process,
>  including undocumented NtUser*, NtGdi* syscalls.

т.е. получается в заглушку уперся?


 
AV ©   (2012-02-03 14:52) [8]

или просто дальше отладчик не пустил?
(или ставлю не правильный вопрос?)


 
AV ©   (2012-02-03 15:05) [9]

Крис Касперски объяснил так


> Задумаемся, – а куда SYSENTER передает управление? Ведь
> целевой адрес нигде явным образом не указан. Курим мануал
> от Intel и выясняем, что SYSENTER принимает три скрытых
> аргумента, передаваемые через MSR-регистры.
>
> SYSENTER_CS_MSR (174h):
>
> CS регистр для перехода на уровень нулевого кольца;
>
> SYSENTER_ESP_MSR (175h):
>
> ESP регистр для перехода на уровень нулевого кольца;
>
> SYSENTER_EIP_MSR (176h):
>
> EIP регистр для перехода на уровень нулевого кольца;
>
> Селектор стека (регистр SS) получается путем сложения константы
> 08h со значением MSR-регистра SYSENTER_CS_MSR, так что SYENTER
> позволяет задавать не только CS:EIP, но и SS:ESP.


а да ну-ка его...
не бибикает и не бибикает :)


 
SergeyIT ©   (2012-02-03 15:19) [10]

Забавный диалог в списке тем
Павел, AV, AV, AV, Псарь, AV, AV, AV


 
icelex ©   (2012-02-03 16:04) [11]


> SergeyIT ©   (03.02.12 15:19) [10]
> Забавный диалог в списке тем
> Павел, AV, AV, AV, Псарь, AV, AV, AV

не говоря о том, что веер не работает...


 
Димка На   (2012-02-03 18:31) [12]

Так спикером попробуй бикать указывая частоту и время задержки у beep



Страницы: 1 вся ветка

Текущий архив: 2012.06.03;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.007 c
15-1328246954
AV
2012-02-03 09:29
2012.06.03
Не работает Beep. Не всегда. Закономерности не вижу.


15-1328127890
Псарь
2012-02-02 00:24
2012.06.03
Constant 0 converted to NIL,


4-1257507611
Валигози
2009-11-06 14:40
2012.06.03
Как программно добавить пароль в "хранилище паролей"?


2-1327576110
Сергей
2012-01-26 15:08
2012.06.03
проблема с десятичным разделителем в дробях


2-1327407726
Nucer
2012-01-24 16:22
2012.06.03
try .. finally внутри try .. except