Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2008, 17:10   #1
idealul
Новичок
Джуниор
 
Регистрация: 28.07.2008
Сообщений: 2
По умолчанию Макрос для Visual Studio 2005

Нужно написать функцию(остальное уже написал) для макроса которая будет считывать позицию кусора и возрашать слово на котором он находиться.
Все примеры которые нашел видимо написаны на более старых версиях бэйзика и вижуалка считает что там есть даже синтаксические ошибки ни то чтоб оно еще и работало.

Вот код который написал на базе примера :

Код:
Private Structure POINTAPI
Dim X As Long
Dim Y As Long
End Structure

Private Declare Function GetCursorPos Lib "user32.dll" (ByVal lpPoint As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As POINTAPI) As Long
Public Function RichWordOver(ByVal X As Single, ByVal Y As Single) As String
Dim pt As POINTAPI
Dim pos As Integer
Dim start_pos As Integer
Dim end_pos As Integer
Dim ch As String
Dim txt As String
Dim txtlen As Integer
pt.X = X
pt.Y = Y
X = GetForegroundWindow
pos = SendMessage(GetForegroundWindow, EM_CHARFROMPOS, 0&, pt)
If pos <= 0 Then Exit Function
txt = GetForegroundWindow.Text
For start_pos = pos To 1 Step -1
ch = Mid$(GetForegroundWindow.Text, start_pos, 1)
If Not ((ch >= "0" And ch <= "9") Or (ch >= "a" And ch <= "z") Or (ch >= "A" And ch <= "Z") Or ch = "_") Then Exit For
Next start_pos
start_pos = start_pos + 1
txtlen = Len(txt)
For end_pos = pos To txtlen
ch = Mid$(txt, end_pos, 1)
If Not ((ch >= "0" And ch <= "9") Or (ch >= "a" And ch <= "z") Or (ch >= "A" And ch <= "Z") Or ch = "_") Then Exit For
Next end_pos
end_pos = end_pos - 1
If start_pos <= end_pos Then RichWordOver = Mid$(txt, start_pos, end_pos - start_pos + 1)
End Function
но он к сожелению возврщает всегда позицию курсора 0,0 а при посылке сообщения и вовсе выдает ошибку.

Последний раз редактировалось merax; 28.07.2008 в 17:52.
idealul вне форума Ответить с цитированием
Старый 28.07.2008, 17:14   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Это Basic?
merax вне форума Ответить с цитированием
Старый 28.07.2008, 17:25   #3
idealul
Новичок
Джуниор
 
Регистрация: 28.07.2008
Сообщений: 2
По умолчанию

Цитата:
Сообщение от merax Посмотреть сообщение
Это Basic?
Да, это Basic.
idealul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Studio 2005 amelie Win Api 19 06.09.2008 12:40
visual studio.net 2005 zub Помощь студентам 1 11.03.2008 07:29
Помогите с Visual Studio 2005 Поночка Visual C++ 1 08.03.2008 15:34
Visual studio 2005 и C++ oleg kutkov Visual C++ 7 09.01.2008 20:18
visual studio 2005 }{@KeRnutyi Свободное общение 1 30.10.2007 15:36