08.10.2003, 09:18 | #1 |
Участник
|
Обертки к системным и своим функциям (WriteFile)
Здравствуйте!
Существует необходимость в использовании системных функций, таких как CreateFile и WriteFile. Первую по образу и подобию обертки, уже имеющейся в аксапте, смог для себя приспособить (тот вариант, что был - слишком уж урезан). Но разобраться окончательно - не смог. Подскажите, как обернуть функцию WriteFile из библиотеки Kernel32.dll? |
|
08.10.2003, 20:48 | #2 |
Участник
|
Посмотрите на класс WinAPI
В частности на метод WinAPI::createFile Хотя я бы посоветовал воспользоваться классами BinaryIO, AsciiIO, CommaIO и т.п. Их описание можно найти в ветке AOT \ System Documentation \ Classes |
|
09.10.2003, 06:14 | #3 |
Участник
|
Обертка к WriteFile уж очень нужна.
Именно из WinAPI::createFile я и скопировал обертку к CreateFile, внеся все необходимые коррективы.
Но то же самое сделать для функции WriteFile не получается. Видимо я не до конца понял механизм изготовления таких оберток. Пробовал сделать так: PHP код:
Сама функция: PHP код:
|
|
09.10.2003, 09:54 | #4 |
Участник
|
Может вместо BOOL написать INT?
|
|
09.10.2003, 10:59 | #5 |
Участник
|
Требуется совет опытного программиста Аксапты
Я пробовал разные варианты и пришел к единственному выходу - это сделает только тот, кто умеет, а не тот, кто догадывается...
Надеюсь, что такой человек здесь появится... |
|
09.10.2003, 11:58 | #6 |
Участник
|
Могу лишь заметить, что в Axapta есть обертка для функции:
PHP код:
PHP код:
|
|
09.10.2003, 12:01 | #7 |
Участник
|
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _writeFile = new DLLFunction(_winApiDLL, 'WriteFile'); _writeFile.returns(ExtTypes:Word); _writeFile.arg(ExtTypes:Word); _writeFile.arg(ExtTypes::Pointer); _writeFile.arg(ExtTypes:Word); _writeFile.arg(ExtTypes::Pointer); _writeFile.arg(ExtTypes::Pointer); |
|
09.10.2003, 12:11 | #8 |
Участник
|
Не помогло...
Придется писать свою DLL. |
|
09.10.2003, 14:30 | #9 |
Участник
|
Просто из любопытства.
а BinaryIO вас чем не устраивает? |
|
09.10.2003, 14:52 | #10 |
Участник
|
mazzy, Если Вы способны написать пример записи через BinaryIO в LPT? - буду очень благодарен.
|
|
09.10.2003, 15:00 | #11 |
Участник
|
Вместо смайлик-word естественно должно быть dword. Скрипт накосячил.
|
|
09.10.2003, 15:47 | #12 |
Участник
|
Я так понимаю, что пример из хелпа вы уже делали
PHP код:
придет человек, проверим на его нормальном компьютере. А в чем проблемы? |
|
10.10.2003, 06:18 | #13 |
Участник
|
mazzy, Попробовал предложенное - ошибок нет, но и результата никакого нет...
|
|
11.10.2003, 00:54 | #14 |
Участник
|
у нас тоже протестировать не получилось поскольку lpt-принтер отсутствует.
код что-то посылает на lpt и ждет ответа с линии. Если ответа нет, то lpt считается занятым (busy). Аксапта в этот момент ждет и не отвечает. Ведет себя также как команда DOS copy file lpt1: У кого есть lpt принтер? Желательно матричный. Проверьте, пожалуйста. Не забудьте поставить перевод строки. PHP код:
|
|
11.10.2003, 00:57 | #15 |
Участник
|
Цитата:
Изначально опубликовано Wing
mazzy, Попробовал предложенное - ошибок нет, но и результата никакого нет... Или у вас какое то свое устройство на lpt повешено? |
|
13.10.2003, 06:28 | #16 |
Участник
|
Устройство не освсем обычное, но и не особо от принтеров отличающееся: термопринтер для печати этикеток.
Вот это пробовал: PHP код:
|
|
13.10.2003, 07:26 | #17 |
Участник
|
Задача изменилась!
Поскольку принтер будет стоять в строго определенном месте, а сама аксапта будет стартовать с тучи разных расположений, было решено сделать сервер для принтера и отсылать ему по сети задачи на печать.
Сервер уже есть и есть рабочая DLL для отправки серверу. Теперь необходимо реализовать одно из двух:
Напрямую с сокетами аксапта работать может? С подключением библиотеки я пока не справился... аксапта падает вот код: PHP код:
Stackdump exit code 487 (Попытка обращения к неверному адресу) кстати int внутри returns не понимается... там понимается только ExtTypes. |
|
13.10.2003, 07:28 | #18 |
Участник
|
Сразу поправлюсь:
пути аксапта понимает только с двумя "\\", но этот форум почемуто заменяет 2 на 1. |
|
13.10.2003, 12:54 | #19 |
Участник
|
Про сокеты. посмотрите tutorial_TicTacToe
подробно не разбирался. Но сокеты там используются. Про задачу. Подореваю, что это не последнее изменение вашей задачи. Не торопитесь исполнять ее в таком виде. |
|
13.10.2003, 14:09 | #20 |
----------------
|
Пример
Смотрим класс WinAPI
PHP код:
DWORD GetFileAttributes(LPCTSTR lpFileName) Делаем вывод, что для передачи в качестве параметра указателя на строку надо использовать arg(ExtTypes::STRING) |
|
Теги |
winapi, файл |
|
Похожие темы | ||||
Тема | Ответов | |||
Документация по функциям | 1 | |||
Что передается функциям, ссылки или значения? | 4 | |||
поиск по ветвям "доступ к функциям" | 2 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|