![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| BpIstorick |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
Столкнулся с проблемой, что не знаю как передать указатель (Pointer) на структуру в API функция
Ситуация: Есть функция
в которую передается указатель на структуру pPrinter, ради получания информации о принтере! Проблема: не могу инициализировать Цель: научите меня эти структуры инициализировать, хочу понять, чтоб не только эту функцию мог выполнить, но и с другими все получилось, лучше сами но если пошлете на книгу или статью, то всирано спасиб! |
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 2 Всего: 16 |
Сами структуры PRINTER_INFO без особого труда найдёшь в C:\Program Files\Borland\Delphi6\Source\Rtl\Win\WinSpool.pas Надеюсь из этого описания всё понятно? Это не указатель на структуру, это указатель на байтовый массив, который будет хранить в себе структуру, вообщем читай описания, там всё подробно описано. |
|||
|
||||
| BpIstorick |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
BUGOR,
Я знаю на какую структуру мне нужно передать указатель, я не знаю как правильно это сделать все эти функции я успешно нашел в MSDN, собственно оттуда я и взял описание функции GetPrinter для своего вопроса
то есть указатель на буффер "a PRINTER_INFO_* structure", то есть буффер болжен быть просто массивом байт нужного размера (допустим buffer: array [0..Size] of byte), а потом мы передаем этот буфер соответствующей структуре или buffer должен быть сразу типа PPrinterInfo2? в DRKB есть пример как добавить принтер с помощью API функции AddPrinter, НО мы сами создаем в этом примере и заполняем структуру А МНЕ НУЖНО ПОЛУЧИТЬ структуру из GetPrinter p.s. повторю что мне интересен подход и методика, чтобы в будущем не спрашивать по каждой функции разъяснений ;) |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
что-то вроде этого.
Так в P мы получим и результат, который уже будет иметь размер NewStrSize Добавлено @ 11:00 Т.е. это уже будет другая структура с другими данными. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| BpIstorick |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
т.е. нам нужно как бы инициализировать каждое поле записи типа TPrinterInfo1 (или любой другой нужной). попробую
А если Тип состоит из 30 и до бесконечности количества полей, то нужно будет каждое инициализировать отдельно??? |
|||
|
||||
| BpIstorick |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
Нашел ответ опять же в DRKB, статья называется "Как изменить порт для принтера?" (хотя там подобного материала как оказалось навалом, просто или не попадалось на глаза, или не обращал внимание)
код, написанный мной для проверки работает и выглядит следующим образом
как оказалось все просто и непросто (если не знаешь как делать 1. первым вызовом получаем необходимое количесвто байт по структуру pInfo 2. выделяем необходимое количество байт 3. получаем саму структуру |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |