Вызов функций Windows API из AutoLISP
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Вызов функций Windows API из AutoLISP

Вызов функций Windows API из AutoLISP

Ответ
Поиск в этой теме
Непрочитано 28.11.2008, 21:39 #1
Вызов функций Windows API из AutoLISP
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

Оказывается, что функции Windows API, экспортируемые библиотеками DLL можно вызывать и из AutoLISP-a.

Для начала надо установить СОМ объект DynamicWrapperX

http://forum.script-coding.info/viewtopic.php?id=2214

Все хелпы там.


Список API-функций DLL можно посмотреть так:

http://forum.script-coding.info/viewtopic.php?id=2457

Надо? Могу на AutoLISP перегнать.
Просмотров: 9660
 
Непрочитано 28.11.2008, 23:08
#2
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Хм, на свой страх и риск! А Вы рисковый Supermax, в полном соответствии с ником
Baldares вне форума  
 
Автор темы   Непрочитано 29.11.2008, 14:13
#3
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ну, первый раз всегда стремно, но когда знаешь, что проверено и мин нет - все становится не так страшно. Наличие исходников, тоже стрем снимает.
Supermax вне форума  
 
Непрочитано 30.11.2008, 16:12
#4
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Вот бы еще примерчик, как этим всем воспользоваться из AutoLISP. Скажем, вызвать все ту же банальную MessageBoxW.
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Автор темы   Непрочитано 30.11.2008, 16:50
#5
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ща, попробую. Только в ванну поплавать схожу и займусь.
Supermax вне форума  
 
Автор темы   Непрочитано 30.11.2008, 17:04
#6
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Код:
[Выделить все]
(setq svr (vlax-get-or-create-object "DynamicWrapperX"))
(vlax-invoke-method svr "Register" "user32.dll" "MessageBoxW" "i=hwwu" "r=l")
(vlax-invoke-method svr "MessageBoxW" 0 "Hello, world!" "Test" 4)
Получите и распишитесь!

Так до ванной и не дошел.
Supermax вне форума  
 
Автор темы   Непрочитано 30.11.2008, 20:56
#7
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Очень рекомендую к использованию.
http://www.script-coding.info/LangMF.html
Весьма полезная для Автокада вещ!
Supermax вне форума  
 
Автор темы   Непрочитано 01.12.2008, 10:37
#8
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Кто знает полезные функции из DLL - кидайте сюда, пощупать охота.
Supermax вне форума  
 
Непрочитано 01.12.2008, 15:35
#9
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Все?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 17:00
#10
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


А что, все сюда загрузить можешь? Да выбери, что поинтересней.
Supermax вне форума  
 
Непрочитано 01.12.2008, 18:06
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


В архиве - шедший в составе MS VS 6.0 API Text Viewer с файлами данных
Вложения
Тип файла: rar Winapi.rar (158.6 Кб, 113 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 18:28
#12
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


А поконкретнее, плииз! Какую функцию и из какой dll достать? Очень хочется разных интерфейсов наковырять, функций по работе с процессами или памятью. и т. п.
Supermax вне форума  
 
Непрочитано 01.12.2008, 18:48
#13
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Для VB вытащить объявления можно. Например:
Код:
[Выделить все]
Public Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long

Public Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function GetVersion Lib "kernel32" Alias "GetVersion" () As Long

Public Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Ну и т.д. Работать с WinAPI таким образом мне практически не доводилось.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 19:33
#14
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Одну скажи. И передаваемые ей данные какие надо? Где польза? Что бестолку справочными данными обмениваться? Любой оконный интерфейс или что еще. Только не кидайся кучами!
Supermax вне форума  
 
Автор темы   Непрочитано 01.12.2008, 19:44
#15
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


GetVersion - Считывает номеp текущей веpсии Windows

Код:
[Выделить все]
(setq svr (vlax-get-or-create-object "DynamicWrapperX"))
(vlax-invoke-method svr "Register" "kernel32.dll" "GetVersion" "r=l")
(vlax-invoke-method svr "GetVersion")
Полезно если скомпилировать файл в котором работа только для указанного номера версии Windows и номер процессора еще узнать - и все.
Supermax вне форума  
 
Автор темы   Непрочитано 01.12.2008, 19:48
#16
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


WinAPI по-русски - БОЛЬШОЙ справочник

http://develab.narod.ru/api/16.htm
Supermax вне форума  
 
Непрочитано 01.12.2008, 20:05
#17
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Ага, только "справочник" написан для применения в Delphi
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 20:10
#18
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Супер!

GetMessagePos - Считывает положение куpсоpа для последнего сообщения, полученного из GetMessage. Тобишь, в момент запуска функции GetMessagePos, получаем цифры 32047168 определяющие положение курсора

Код:
[Выделить все]
(setq svr (vlax-get-or-create-object "DynamicWrapperX"))
(vlax-invoke-method svr "Register" "user32.dll" "GetMessagePos" "r=l")
(vlax-invoke-method svr "GetMessagePos" )
Supermax вне форума  
 
Автор темы   Непрочитано 01.12.2008, 20:13
#19
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


GetMessageTime - Считывает вpемя, пpошедшее с момента пеpезагpузки системы, для последнего сообщения, полученного из GetMessage.


Код:
[Выделить все]
(vlax-invoke-method svr "Register" "user32.dll" "GetMessageTime" "r=l")
(vlax-invoke-method svr "GetMessageTime" )
Supermax вне форума  
 
Автор темы   Непрочитано 01.12.2008, 20:26
#20
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Функция GetDriveType

Описание:
function GetDriveType(Drive: Integer): Word;
Опpеделяет, является ли накопитель Drive съемным, фиксиpованным или удаленным.
Паpаметpы:
Drive: Пpовеpяемый накопитель, то есть, A: это 0, B: это 1 и т.д.
Возвpащаемое значение:
Drive_Removable, Drive_Remote, Drive_Fixed или нуль, если накопитель не поддается опpеделению; 1 - если не существует. См. pаздел "Типы накопителей, Drive_" в главе 1. http://develab.narod.ru/api/11.htm
функция находится в файле kernel32.dll


Код:
[Выделить все]
(setq svr (vlax-get-or-create-object "DynamicWrapperX"))
(vlax-invoke-method svr "Register" "kernel32.dll" "GetDriveType" "i=l" "r=l")
(vlax-invoke-method svr "GetDriveType" 0); проверяет диск А
Supermax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Вызов функций Windows API из AutoLISP



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка нажатия CTRL в LISP в фоновом режиме(не grread) BH LISP 10 22.08.2006 22:23
Программеры, где моя ошибочка? {Smirnoff} Программирование 11 01.03.2004 11:08