Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Пн Сен 01, 2014 8:40 pm Заголовок сообщения: Re: Ну кто бы мог подумать |
|
|
Nick4 писал(а): |
Описание функции на VBA, в том числе и на сайте Microsoft
http://support.microsoft.com/kb/152970/ru
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
Как говорится из песни слов не выкинешь. |
ну да, описание к примеру...
Microsoft Excel does not have the built-in functionality to access the computer's current user name. However, you can use the Declare statement in a Visual Basic for Applications macro to call a Microsoft Windows function that will return the current user name.
Nick4 писал(а): |
Возможно поможете с передачей адреса функции? Допустим когда надо перехватить определенное событие и требуется передача адреса функции обработчика. |
Не совсем понял. что, где, когда, зачем? а там подумаем... |
|
Вернуться к началу |
|
|
Nick4
Зарегистрирован: 15.10.2011 Сообщения: 95
|
Добавлено: Пт Сен 05, 2014 12:24 pm Заголовок сообщения: |
|
|
Передача адреса функции: как передать в функцию set timer, последний параметр?
Declare PtrSafe Function SetTimer Lib "user32" Alias "SetTimer" (ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Пт Сен 05, 2014 9:48 pm Заголовок сообщения: |
|
|
Nick4 писал(а): |
Передача адреса функции: как передать в функцию set timer, последний параметр?
Declare PtrSafe Function SetTimer Lib "user32" Alias "SetTimer" (ByVal hWnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr |
Для начала, вспоминаем про компиляторы и интерпретаторы http://prog-school.ru/2010/02/raznica-mezhdu-interpretiruemymi-i-kompi
Сразу понимаем, что получить адрес функции/процедуры из программы Mapbasic не получится. Единственный вариант -написать свою dll, которая инициализируется из программы MapBasic, запускает таймеры, и дергает в обратную сторону функции из приложения MapBasic или выполняет какие-то действия прямо в "своей" инстанции Mapinfo (в той, из которой запущено приложение MapBasic). Разделы документации: Интегрированная картография, функция SystemInfo(), ну а дальше по обстоятельствам... |
|
Вернуться к началу |
|
|
Nick4
Зарегистрирован: 15.10.2011 Сообщения: 95
|
Добавлено: Вт Сен 09, 2014 12:37 pm Заголовок сообщения: |
|
|
Компиляторы и интерпретаторы здесь не при чем. Basic не компилируется, тем не менее, там есть возможность передать адрес функции. Что касается dll, спасибо, но этот вариант я уже реализовывал в 2011 году (как видели по теме hook). |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Вт Сен 09, 2014 7:25 pm Заголовок сообщения: |
|
|
Nick4 писал(а): |
Basic не компилируется, тем не менее, там есть возможность передать адрес функции. |
Пример можно? |
|
Вернуться к началу |
|
|
Nick4
Зарегистрирован: 15.10.2011 Сообщения: 95
|
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Ср Сен 10, 2014 5:26 pm Заголовок сообщения: |
|
|
А что значила фраза "Basic не компилируется...."?
Разве после компиляции проекта на VisualBasic не получается файла *.exe (в машинных кодах)? или приложение, собранное в VisualBasic, запускается на выполнение в каком-то специальном приложении-интерпретаторе? я просто про современный VisualBasic не знаю, потому и спрашиваю. |
|
Вернуться к началу |
|
|
Nick4
Зарегистрирован: 15.10.2011 Сообщения: 95
|
Добавлено: Чт Сен 11, 2014 3:06 pm Заголовок сообщения: |
|
|
VBA Excel - интерпретатор. Создание exe невозможно, хотя dll можно. Изначально Basic разрабатывался как интерпретатор. Но время на месте не стоит. Итог: VBA Excel - интерпретатор определяет адрес функции. MapBasic - компилятор не определяет. Не важно компилятор или интерпретатор, просто разработчики MB не заложили такой возможности. |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Пт Сен 12, 2014 8:13 am Заголовок сообщения: |
|
|
Nick4 писал(а): |
VBA Excel - интерпретатор. Создание exe невозможно, хотя dll можно. |
раз dll, значит генерятся машинные коды. раз есть машинные коды, значит совершенно уместно работать с адресами не только переменных, но и функций. |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Пт Сен 12, 2014 5:39 pm Заголовок сообщения: |
|
|
Nick4 писал(а): |
VBA Excel - интерпретатор. Создание exe невозможно, хотя dll можно. |
Не подскажете, как создавать dll при помощи VBA из Excel? может ссылочку на How-to. интересно стало. |
|
Вернуться к началу |
|
|
|