Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];

Вниз

Не работает 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
15-1327869002
Юрий
2012-01-30 00:30
2012.06.03
С днем рождения ! 30 января 2012 понедельник


2-1327484341
петр
2012-01-25 13:39
2012.06.03
проверить нажата ли кнопка


15-1327945903
Dimka Maslov
2012-01-30 21:51
2012.06.03
Мордокнига и законы физики


15-1327682610
tesseract
2012-01-27 20:43
2012.06.03
По поводу совместимости Delphi


15-1327573619
>|<
2012-01-26 14:26
2012.06.03
Как правильно обновляться программу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский