|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Функция GetFocus
Описание: function GetFocus: HWnd; Считывает окно, котоpое в данный момент имеет фокус ввода. Возвpащаемое значение: В случае успешного завеpшения - идентификатоp окна; 0 - в пpотивном случае. функция находится в файле user32.dll Код:
|
||||
|
||||
Инженер-строитель Регистрация: 15.08.2007
Киров
Сообщений: 2,204
|
Кстати, как выяснилось, метод GetMessageTime возвращает значение, которое соответствует значению недокументированной системной переменной MILLISECS. Помнится её в своё время так и не смогли расшифровать.
Код:
Цитата:
|
|||
|
||||
(vlax-get-or-create-object "DynamicWrapperX") запускать надо один раз для всех трансляций функций.
Трансляцию функции типа вот этого - (vlax-invoke-method svr "Register" "user32.dll" "GetMessageTime" "r=l") надо делать один раз для всех последующих вызовов функций. Вызывать функции можно уже любое количество раз, типа - (vlax-invoke-method svr "GetMessageTime"). Сколько в "DynamicWrapperX" влезает этих трансляций - пока не знаю, надо на Сером форуме спросить. Но я впихивал уже больше 20. |
||||
|
||||
Торжественный момент!
Лисп, определяющий параметры всех процессов в компьютере. PID Потоки Имя файла Это классический пример, который практически реализован на всех языках, а теперь и на AutoLISP. Данные выводятся прямо в блокнот, минуя создание файла! Благодаря помощи YMP и моральной поддержке alexii с Серого форума http://forum.script-coding.info/view...hp?id=2523&p=2 Код:
Последний раз редактировалось Supermax, 03.12.2008 в 11:32. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Побуду "тупицей": а теперь то же самое, но без сторонних библиотек и языков
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Ну, без библиотек никуда, хоть местные, хоть сторонние. И в частности без СОМ "DynamicWrapperX" тоже. Все эти библиотеки использовались самими создателями Автокада, так что то, что мы видим, делается с их использованием, только на более низком уровне.
А вот на счет языков - тут чужих нет (в отличии от работы с реакторами). |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Makswell, нда? А вот попробуй сделать то же самое, но учти, что (vlax-get-or-create-object "DynamicWrapperX") возвращает nil Ну нету у клиента на машине этого класса! Нету!
При этом обращение к WinAPI другими методами (типа через VBA / C++) выполняется нормально.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Честно говоря, мне сейчас лень разбираться с тем, что лично мне понадобится очень не скоро. 6-я студия на работе не установлена, поэтому только часть объявлений (которые, кстати, тянутся еще с 98-х Windows):
Код:
Почему-то кажется, что функции "CreateToolhelp32Snapshot", "Process32First" и "Process32Next" пришли вместе с .NET (в MSDN для 2002-й студии они уже упоминаются по крайней мере)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Я честно, VBA не знаю и поэтому глупый вопрос: В VBA со структурами можно работать напрямую? Или при передачи имени переменной, в которой записана строка, функции, в качестве аргумента, копия ей передается, или сама строка? (я на эти грабли наступил на Сером форуме). И вообще, ты что, против Автолиспа имеешь? Такое расширение функционала народу подарили!, а ты недоволен.
|
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Со структурами? Вообще-то можно, насколько мне известно. Передача данных может быть как по ссылке, так и по значению.
Цитата:
Цитата:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Я уже как-то тебе говорил, что то, что ты уже имеешь у тебя никто не отберет. И подарить тебе, то, что ты имеешь, никто не запрещает. А думать, что завтра прийдут большевики и поставять всх к стенке не нужно. Прийдут, поставят, расстреляют, ну и пусть, а думать об этом все равно не нужно. Скорее всего завтра будет так: У меня есть, а у тебя нет. |
||||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Наивно радоваться, что кто-то "подарил рыбу". Надо учится "ловить рыбу", потому что подаренная рыба завтра протухнет. Или выяснится, что она с глистами.
Надо просто научиться делать такие "обертки" самому, на это уйдет гораздо меньше времени, а пользы будет неимоверно больше. Создавать такие "wrapper-ы" можно в любой современной среде программирования. "Подумаешь, бином Ньютона "(С) Незачем лезть и специально именно в низкоуровневый WinAPI. Да и не нужны все эти несколько тысяч функций. Функции из этих DLL часто могут оказаться непригодными для использования в скриптовых языках, к которым относится LISP. Использование "голого API" часто является своеобразным фанатизмом. Чтоб как следует помучиться. В любой хорошей среде программирования имеется множество библиотек, которые сами используют WinAPI, но оборачивают в более удобный вид, скрывая детали реализации. Очень полезно бывает посмотреть, что там дополнительно делается. Часто в них реализован еще и визуальный интерфейс. Естественно, для серьезного использования надо иметь все библиотеки в исходных текстах. |
|||
|
||||
Смутно догадываюсь, что меня сильно ругать не будут.
Я согласен, что уметь делать и то и се, нужно. И голый AutoLISP тоже является своеобразным фанатизмом. И интерфейсы тоже нужны и еще много чего. И компилировать в fas тоже нужно очень часто, так что все, что прибыло не есть плохо. Про исходные тексты вообще молчу. Нужно. |
||||
|
||||
Новый прикол!
Лисп, показывающий список окон. Здесь реализована передача аргументов функции Windows API EnumWindows, функции AutoLISP. Есть такие функции в Windows API, аргументами которых являются указатели на другие функции, которым они передают результаты свой работы. Я транслировал через VBScript эти аргументы функции AutoLISP-a Код:
Последний раз редактировалось Supermax, 04.12.2008 в 13:31. |
||||
|
||||
Некоторые данные по текущему состоянию DynamicWrapperX.
В этой версии, ссылка на которую в первом посте, есть следующие недостатки. Не выгружаются библиотеки. Тобишь все запрошенные ресурсы. Это сейчас в процессе реализации и скоро (надеюсь) будет готово. Выгружаться будут и выборочно, через специальный метод и все скопом, при уничтожении СОМ объекта DynamicWrapperX. Транслированные функции дают возврат не в конце выполнения функции, а в начале. Поясню. Вот вы подаете команду - запустить функцию. Можно получить эхо - да, запущена, а можно - да, функция выполнена. Вот тут происходит именно первый вариант. В частности с функцией EnumWindows. Эта функция опрашивает все открытые окна, а это процесс не быстрый и получается, что строчка (см. пост #37) Код:
С одной стороны это хорошо, поскольку лисп быстро закончился и командная строка освободилась, что дает возможность туда посылать запуск функций "Proba" и я не представляю, как бы работал лисп, если бы Код:
А с другой стороны, как определить, что функция EnumWindows закончила листать окна? Код-то надо дальше толкать. Проблема, однако. Вставить признак в метод, чтобы пользователь сам назначал условия возврата данных можно, и даже нужно, но проблему это не решает. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Вот скажи, а зачем тебе иметь в лиспе (!) список окон (!)? Специально повторяю - окон! А не приложений.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка нажатия CTRL в LISP в фоновом режиме(не grread) | BH | LISP | 10 | 22.08.2006 22:23 |
Программеры, где моя ошибочка? | {Smirnoff} | Программирование | 11 | 01.03.2004 11:08 |