www.map-info.ru :: Просмотр темы - Инициализация массива
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  
На страницу Пред.  1, 2
 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
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).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
FedorinoFF



Зарегистрирован: 01.02.2007
Сообщения: 272
Откуда: Санкт-Петербург

СообщениеДобавлено: Вт Сен 09, 2014 7:25 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Nick4 писал(а):
Basic не компилируется, тем не менее, там есть возможность передать адрес функции.

Пример можно?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Ср Сен 10, 2014 8:50 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

FedorinoFF писал(а):
Nick4 писал(а):
Basic не компилируется, тем не менее, там есть возможность передать адрес функции.

Пример можно?


Пожалуйста.
http://msdn.microsoft.com/ru-ru/library/y72ewk2b.aspx
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
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 не заложили такой возможности.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
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. интересно стало.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
На страницу Пред.  1, 2
Страница 2 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru