|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Да не нужем мне список окон, мне конкретное окно нужно,в редакторе Автолиспа. Не рамочное (дайте повыпендриваться), а дочернее, где лисп редактируется. Хочу туда из DLL тексты функций вставлять.
Вот сижу и перебираю все Windows API в поисках нужных функций. Стал через EnumWindows указатели смотреть, заодно глюки в лиспе из #37 решил подправить и призадумался на часок, который до сих пор продолжается. И какая разница из какого языка этими WinAPI пользоваться? Они же трансязыковые. Все равно, чтобы найти нужное окно, активировать его (если оно не активно) и т.д. и т.п. голыми пальцами это не сделать. Это проще всего, "сидеть на заборе" и кричать человеку, который что-то пытается сделать, но не получается - "Да брось ты!"; "Да оно тебе надо?"; "Вот нашел себе гиморрой!" и т.п. вместо того, чтобы взять и просто помочь. |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
|
|||
![]() |
|
||||
А где доказательства? Где ваши ворота? Где повествования, как и что надо сделать, чтобы добиться того-то и того-то?
Да, предположим я слеп. Вместо того, чтобы сказать мне "правее на столько-то" или левее вы констатируете все время факт - "ага!, опять не попал". Интересный однако факт. Вы ShaggyDoc, разделяете то убеждение, что VBA в Автокаде - "бородавка" на его теле. Я читал ваши посты на эту тему. Но в VBA есть доступ к использованию функций Windows API. А когда кто-то (не я придумал DynamicWrapperX, да и YMP, на сколько мне известно только свой вариант сделал, уже ранее придуманного) пытается уравнять возможности языка, вы это квалифицируете, как слепоту и ударение лбом в забор. Я давно хотел вас спросить, а не могли бы вы сами написать такой СОМ объект и его подарить всем желающим? Ведь вам, как мне это известно, такое по зубам. Может вы подскажете, как к дочернему окну через WinAPI добраться? Не через WinAPI, так через что? Этот же вопрос интересует не только меня, и не только для Автокада. Такие посты, как #39, #40, #42 и т.п. писать легко. Я тоже могу и очень хорошо умею "наводить тень на плетень". Последний раз редактировалось Supermax, 13.12.2008 в 18:47. |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Для того, чтобы открыть такие "секреты" ("повествования, как и что надо сделать") я специально написал книгу "САПР на базе AutoCAD - как это делается". Там достаточно примеров. В том числе вызов WinAPI и через ObjectARX, и через COM.
Доказывать что существуют "ворота" и излагать основы программирования в индивидуальном порядке, такому чрезвычайно самоуверенному "руководителю фирмы" у меня нет никакого желания. Садись за азбуку самостоятельно. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Supermax, а вот я (хотя и пьян прилично) выскажусь. Список окон в реальной жизни нужен как зайцу стоп-сигнал. Окно редактора может быть элементарно не запущено - ты об этом не думал?
Если тебе так уж невтерпеж работать с WinAPI - делай собственную dll, требуй ее регистрации в системе и работай дальше как с обычным СОМ-объектом. Примеров такой работы через VisualLISP - как у дурака фантиков - достаточно задать поиск по слову "get-or-create-object" (префикс не помню, а AutoCAD запускать лениво).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
ShaggyDoc,
Цитата:
Цитата:
Кулик Алексей aka kpblc, список окон мне (хоть я и трезв всегда) "ни за деньги не надь, ни даром не надь". Окно редактора не может быть не запущено, поскольку я уже в нем и из него пытаюсь определить его указатель. Про dll - ты предлагаешь мне написать свой СОМ для вызова функций Windows API? А то, что это уже сделал YMP с Серого форума не подойдет? Вернусь к проблеме, которая меня сейчас волнует. Не желающих мне помочь (хотя бы советом), просьба не беспокоить. Как известно, я не сторонник чистого лиспа. Очень часто применяю смешенный вариант написания программ, в частности VBScript+AutoLISP. Только такой сцепкой мне удалось реализовать работу с HTМL файлами и с созданием реактора объекта, который сам себя редактирует. Сейчас вот Windows API зацепил, и вообще, все функции из DLL-файлов. То, что у меня нет пока инструмента для создания структур, массивов, классов, объединений и пр. низкоуровневой лабуды, для полноценной работы с функциями из DLL - не беда. Скоро будет. Но есть одна проблема не языкового уровня. Как пример, я взял функцию EnumWindows. Только как пример! Пост #38. Мне надо в середине процесса выполнения лисп-программы выходить из нее, освобождая доступ к командной строке и возвращаться обратно, в то место,из которого я программу покинул. YMP, если ты читаешь эту тему. Все, абсолютно все экспортированные функции из DLL должны иметь один необязательный аргумент - указатель на функцию. В случае с такими функциями, как EnumWindows, получится два указателя на функцию. Один для EnumWindows, а второй - если он есть, то по окончании выполнения функции, экспортированной из DLL, выполняется эта функция. Только так я могу узнать, что работа низкоуровневой функции закончилась и можно продолжать выполнение высокоуровневой задачи. Понимаешь, мне, получается, надо останавливать работу автолиспа и ждать окончания работы низкоуровневой функции. А она,зараза, долго может работать. По многу раз она свои лисп-выражения запускает и только когда все окна перелопатит - дает знать, что работа окончена, вот тут и надо запустить вторую функцию, которая даст мне возможность продолжить прерванный процесс. Ей, никакие аргументы передавать не надо. Просто запускать, по окончании работы низкоуровневой функции (той, которая экспортирована). По поводу признака продолжения работы (см. пост #38) - тоже надо. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Supermax, ты зря обижаешься - я днюху праздновал. Свою днюху.
Теперь Цитата:
Цитата:
Ладно, это лирика была. Теперь по делу. Я сильно подозреваю (подозреваю, т.к. ни один из примеров не запускал; в коде "обертки" не копался и не собираюсь - даже если он открыт), что "остановить" выполнение API-шной функции "где-то посередке" невозможно. Ну или самостоятельно полностью перерабатывать API. Засим откланиваюсь - все равно нить рассуждений для меня в состоянии "и не находил".
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
А я и не обижаюсь, с чего это ты взял?
Да кто бы ни написал "обертку" и открыл код, копаться в чужом - полный мрак. Правда если с пояснениями, да еще в теме, с обсуждениями и спорами - другой базар. Даже интересно и познавательно. Я не Windows API намерен останавливать, а процесс лиспа. Читай внимательнее. Да что мы все время цепляемся к Windows API? "Обертка" дает возможность пользоваться экспортируемыми функциями DLL. Любых DLL, даже тех, которые ты написал сам. А что можно написать, зная, что это будет использовано в Автолиспе? Думаю очень много всего. Делать "обертку" на каждую, нужную функцию, да еще в СОМ ее интегрировать не так, как это в DynamicWrapperX реализовано, а скажем намертво вбивая обращение к ней специальным методом - фигня. Но меня по прежнему волнует глобальный вопрос - это хорошо или плохо, когда высокоуровневый язык получает доступ к низкоуровневым операциям, с помощью низкоуровневых функций и СОМ объектов? Вся эта тема создана только для того, чтобы выяснить отношение публики к вышеупомянутому вопросу. |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка нажатия CTRL в LISP в фоновом режиме(не grread) | BH | LISP | 10 | 22.08.2006 22:23 |
Программеры, где моя ошибочка? | {Smirnoff} | Программирование | 11 | 01.03.2004 11:08 |