![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| FatherFrost |
|
||||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
Вот нашел в Инете примерно такой код:
Основная задача класса определять статус принтера. Видел похожее использование WinAPI и на С++. Но в качестве кода статуса всегда возвращает 0, т.е. Ready... Чтоя делаю не так. Обращаюсь к классу:
-------------------- Задаю много глупых вопросов.... |
||||
|
|||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
FatherFrost, крутой вопрос.
Я, если честно, пасанул перед 445 строчками кода P.S. По-моему тут тоже API. Вон сколько dllImport стоит |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
ivashkanet, да тут используется winAPI работы со спулером. Я имле в виду, что схожий код на С++ вроде как рабочий... Большиство из этого кода - описание структур данных. Там всего 2 метода в конце, где все происходит. Я вот никак не разберусь, почему принтер всегда готов?
-------------------- Задаю много глупых вопросов.... |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Это я заметил, даже пришел к методу GetPrinter. До него вроде все хорошо, если не обращать внимание на Может в них ошибка. Короче, ищи описалово не GetPrinter в winspool.Drv Добавлено @ 11:06 А может он у тебя пионер |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
Похоже на то. А по поводу структур данных, все проверил. Нашел их описание в MSDN и сравнилЮ вроде все ок. -------------------- Задаю много глупых вопросов.... |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Попробуй проинициализировать int intRet не нулем, а, например, единицей. Что будет? |
|||
|
||||
| FatherFrost |
|
||||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
Это ни к чему не приведет, т.к:
Здесь переменная intRet служит для хранения статуса, т.е. все равно каким значением я ее проинициализирую. В конце, если все ОК с открытием принтера, я получаю принтер и структуру инфы о принтере PRINTER_INFO_2, которая имеет int параметр статус. Вот его в intRet и кидаем. -------------------- Задаю много глупых вопросов.... |
||||
|
|||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
А если bolRet = false, или OpenPrinter(PrinterName, out hPrinter, ref defaults) возвращает false.
В общем, ты проходился по коду дебагером? |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
да. Все с boolRet нормально. Принтер виден, поэтому результат GetPrinter>0, что соответствует true...
-------------------- Задаю много глупых вопросов.... |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Только что запустил твою программулину.
Все работает, имя принтера выдает, состояние его тоже нормально показывает (кол-во заданий например). Но статус у моего все равно 0. Правда я установил несуществующий принтер и не смог изменить его статус. Вечером дома попробую на своем, он у меня когда не включен Not Available. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Вот я дома.
Стал гонять свой принтер. Он то же всегда готов, но на изменении были словлен параметр Attributes. Причем так: 1088 --- если принтер включен 64 --- выключен Больше ни на чем выходная структура Info2 словлена не была. Я и крышку принтера открывал, и катридж доставал, и бумагу вынимал. Молчит Мое мнение -- что-то тут с выходной структурой намутили, где-то ошибка P.S. Еще были замечены в изменении pSecurityDescriptor и pDevMode, но по какому принципу они менялись я так и не понял |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
|
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
ivashkanet, интересные наблюдения... Я на это не обратил внимания. Посмотрим и в эту сторону.
-------------------- Задаю много глупых вопросов.... |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
В выходной структуре есть такой параметр
По его описанию, это опять небольшая структура. Как IntPtr узнает сколько ему захапывать данных И еще
по описанию dword, т.е. слово, 2 байта = 16 бит, а uint =32 бита? может по этому идет сдвиг Вердикт: Перепиши структуру pSecurityDescriptor как надо, MSDN тебе в руки. И попробуй uint заменить на usort |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
Ок ща посмотрю
-------------------- Задаю много глупых вопросов.... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |