2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Как изменить параметр в структуре в WinAPI?03.08.2021, 20:20. Показов 7706. Ответов 34
Метки delphi 5-7 (Все метки)
Использую Апи Avicap32 в Делфи. Но вот не задача там структура CaptureParms а в ней переменная Fyield, ее нужно изменить на true, а у меня не получается это сделать. Нашел в MSDN пример изменения другой переменной
0
|
03.08.2021, 20:20 | |
Ответы с готовыми решениями:
34
Как изменить все элементы в структуре одним действием Как изменить параметр в скрипте? Как изменить параметр процедуры? Как изменить параметр в программе |
2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
||||||||||||||||||||||||||
04.08.2021, 20:14 [ТС] | 3 | |||||||||||||||||||||||||
Вот константы сообщений:
Функция создания окна:
0
|
Native x86
5514 / 3273 / 934
Регистрация: 13.02.2013
Сообщений: 10,425
|
||||||
05.08.2021, 00:59 | 4 | |||||
Вы пытаетесь привести здоровенную структуру CAPTUREPARMS к 32/64-битному LPARAM. Естественно так ничего не будет работать.
В примере из MSDN к LPARAM приводится не CAPTUREPARMS, а LPCAPTUREPARMS, т.е. указатель на CAPTUREPARMS. Вот и вы пишите:
1
|
2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
|
09.08.2021, 12:39 [ТС] | 5 |
Получилось, эти 3 строчки работают без ошибок, но вот не задача, они не реализуются(как будто их не было). Проверял, при выполнении программы возвращают истину. И для каждого параметра нужно отправлять сообщение? Или можно написать несколько присвоений параметров и отправить 1 сообщение?
0
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 189
|
|
09.08.2021, 16:07 | 6 |
1
|
2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
|
10.08.2021, 20:25 [ТС] | 7 |
Реализовал эти три строчки как вы мне показали, но толку от них нет, думал сам додумаю как это решить но нет. В MSDN сказано, что изменив этот параметр FYield Авицап сам создаст отдельный поток и программа не зависнет, но этого не происходит. Я пробовал вписать другие параметры (fMakeUserHitOKToCapture) но так же реакции ни какой.
В чем может быть причина?
0
|
2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
|
11.08.2021, 14:14 [ТС] | 8 |
Пожалуйста подскажите, что с этим делать?
0
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 189
|
|
11.08.2021, 14:48 | 9 |
Два вопроса:
1. Если не трогать fYield, работает? 2. Если выводить не в файл, а в окошко, работает?
1
|
2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
|
11.08.2021, 16:48 [ТС] | 10 |
Работает, если я не использую сообщение изменения параметра и если использую как это описал quwy, оно запускается и работает абсолютно одинаково для обоих случаев. Пробовал убирать сообщение записи в файл, оставив только сообщение инициации захвата(зачем не знаю, с ним тоже работает). Дело в том что нет реакции приложения на измененный параметр(даже нескольких), оно работает так как будто нет этих строчек на изменение параметра.
0
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 189
|
|
11.08.2021, 17:07 | 11 |
Так, есть 4 возможных варианта:
1. Вывод в окошко при fYield = false. 2. Вывод в окошко при fYield = true. 3. Вывод в файл при fYield = false. 4. Вывод в файл при fYield = true. У Вас при запуске программы после любых манипуляций с полями CaptureParms1 работает всегда вариант 1?
0
|
2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
||||||
11.08.2021, 18:05 [ТС] | 12 | |||||
Вот такой код, ну и частично из предыдущих ответов
Да, работает только первый вариант.
0
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 189
|
||||||
11.08.2021, 18:46 | 13 | |||||
А не пробовали сообщение WM_CAP_FILE_SAVEAS отправлять ДО WM_CAP_SEQUENCE?
Добавлено через 8 минут И точно ли, что надо использовать WM_CAP_FILE_SAVEAS, а не WM_CAP_FILE_SET_CAPTURE_FILE? Добавлено через 13 минут Вот код на C, автор которого клянётся, что у него всё работает:
0
|
2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
|
11.08.2021, 20:30 [ТС] | 14 |
Не поверите не работает, я сделал по всем вашим рекомендациям, но нет. Как и было запускается, снимает, записывает, но пока это происходит зависает.
0
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 189
|
|
11.08.2021, 20:40 | 15 |
Стоп-стоп. В прошлый же раз Вы сказали, что работает исключительно вывод в окошко...
Попробуйте сделать тестовую программу вообще без кнопки. Пусть захват начинается просто по факту запуска программы. И ещё. Посмотрите отладчиком запись CaptureParms1, которую возвращает WM_CAP_GET_SEQUENCE_SETUP, - там осмысленные значения у полей?
0
|
2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
|
12.08.2021, 18:50 [ТС] | 16 |
Прошу прощения, я забыл указать третий вариант. В случае если код начинает выполнятся при создании формы(onCreate) окно приложения не появляется до щелчка мыши (это одна из настроек в CAPTUREPARMS, останавливает запись при нажатии на клавишу мыши). Я сделал из этого вывод, что оно по прежнему зависает во время записи. Еще пробовал запустить в новом эмбаркадеро делфи 10, но там тоже не работает.
0
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 189
|
|
12.08.2021, 19:00 | 17 |
До щелчка мыши по чему? Окна приложения же ещё на экране нет.
Я бы предложил в тестовую программу после строки с WM_CAP_SET_SEQUENCE_SETUP добавить ещё одну строку с WM_CAP_GET_SEQUENCE_SETUP и посмотреть отладчиком, правдоподобны ли значения, возвращаемые первым вызовом WM_CAP_GET_SEQUENCE_SETUP, и будет ли fYield = true в том, что вернёт второй вызов. Если будет, то попробовать для WM_CAP_SEQUENCE использовать не SEND, а POST.
0
|
2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
||||||||||||||||
13.08.2021, 14:24 [ТС] | 18 | |||||||||||||||
Добавил вот такой блок для проверки состояний параметров до и после WM_CAP_SET_SEQUENCE_SETUP
1 Mouse 0 Это очень странно, ведь в документации MSDN четко написано, что второй параметр по умолчанию True. После выполнения: 0 Mouse 0 (все таки я его переключал fAbortLeftMouse в False, что бы его отключить и запись не прекращалась по нажатию кнопки мыши(Кстати по этой причине в прошлый раз приложение появлялось по нажатию кнопки, запись прекращалась и omCreate выполнялось)). Я решил наоборот переключить fAbortLeftMouse в True, может тогда будет работать, но нет как было так и осталось. Попробовал использовать Post вместо Send, (так как второй обработчик я приписал после
Да кстати, пробовал приписать Post к другим сообщениям.
0
|
68 / 55 / 13
Регистрация: 26.07.2021
Сообщений: 189
|
|||||||||||
13.08.2021, 14:45 | 19 | ||||||||||
Сообщение было отмечено legat как решение
Решение
Не удивляет(настораживает), что в первой строке 1, когда согласно документации положено быть нулю?
А теперь подумайте, как согласуются обращения вида:
1
|
2 / 2 / 0
Регистрация: 02.08.2021
Сообщений: 51
|
||||||||||||||||
13.08.2021, 17:50 [ТС] | 20 | |||||||||||||||
Ох, блин, я их перепутал. До выполнения ноль после 1. Вот весь код:
Добавлено через 11 минут Хехе я наверно две недели парился над этой настройкой параметров, а окозалось все просто(я конечно так и думал но не знал как). Все го то нужно было поставить собачку в LPARAM и указвать не CAPTUREPARMS а TCAPTUREPARMS.
0
|
13.08.2021, 17:50 | |
13.08.2021, 17:50 | |
Помогаю со студенческими работами здесь
20
Как изменить не отображаемый параметр? Как изменить параметр Background в Grid? Как изменить шаблоне параметр в WordPress? Как изменить параметр дочернего обьекта? Пожалуйста подскажите как изменить параметр Параметр navigator.appName как изменить Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |