How do I make the mouse cursor get a value..?

  • Thread starter Internetdomainowner
  • Start date
I

Internetdomainowner

Fellow programmers thank you for your time. I need some assistance...
I am trying to figure out how to get the mouse cursor select from text
from a specific x z cord and paste the value in a text box on my
userform. Here is some code I tried...

SetCursorPos 255, 413

Do Until UserForm1.TextBox1.Value = 521
DoEvents
Application.Run "mouscoords"
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&
SendKeys "^C", True
UserForm1.TextBox3.SetFocus
SendKeys "^V", True
mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
UserForm1.TextBox1.Value = UserForm1.TextBox1.Value + 1
SetCursorPos UserForm1.TextBox1.Value, 413
DoEvents
Loop

It doesn't seem to want to work... I'd imagine that this isn't the
best way of doing this but but I'm curious if anyone has gotten
something simlar to work. I was also wondering if it was possible for
Excel VBA to read the value of a mouse cord x z value... Any ideas?
There seems to be alot of brilliant people on this message board so I
look forward to see what the end result is.

Thank you ever so much!
 
R

RB Smissaert

I get the feeling there must be a simpler way to do what you want, but this
will get you the mouse coordinates:

Option Explicit
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos _
Lib "user32" (lpPoint As POINTAPI) As Long

Function GetCursorPosition() As Long()

Dim Point As POINTAPI
Dim arr(1 To 2) As Long

GetCursorPos Point

arr(1) = Point.x
arr(2) = Point.y

GetCursorPosition = arr

End Function


Sub test()

Dim arr() As Long

arr = GetCursorPosition()

MsgBox "x " & arr(1) & vbCrLf & _
"y " & arr(2), , "mouse coordinates"

End Sub


RBS
 
I

Internetdomainowner

I get the feeling there must be a simpler way to do what you want, but this
will get you the mouse coordinates:

Option Explicit
Private Type POINTAPI
  x As Long
  y As Long
End Type
Private Declare Function GetCursorPos _
                         Lib "user32" (lpPoint As POINTAPI) As Long

Function GetCursorPosition() As Long()

  Dim Point As POINTAPI
  Dim arr(1 To 2) As Long

  GetCursorPos Point

  arr(1) = Point.x
  arr(2) = Point.y

  GetCursorPosition = arr

End Function

Sub test()

  Dim arr() As Long

  arr = GetCursorPosition()

  MsgBox "x " & arr(1) & vbCrLf & _
         "y " & arr(2), , "mouse coordinates"

End Sub

RBS










- Show quoted text -

Thank you for your reply however, I'm already aware of how to get the
X Z cords... what I'm looking for it to do is select a range of text
in a given x z cordinate -- then copy it. My macro is programmed do
this but for whatever reason it's not. The process is explained
below...

'------------------- STARTING POSISTION OF HIGHLIGHT TEXT
SetCursorPos 255, 413
'------------------- END POSISTION OF TEXT is equal to 521, 413
Do Until UserForm1.TextBox1.Value = 521
DoEvents
'------------------- Grabs the current X Z values
Application.Run "mouscoords"
'------------------- LEFT CLICK THE MOUSE BUTTON
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&
'------------------- COPY THE CURRENT LETTER HIGHLIGHTED
SendKeys "^C", True
'------------------- SETFOCUS TO THE OUTPUT TEXT BOX ON THE USERFORM
UserForm1.TextBox3.SetFocus
'------------------- PASTE THE COPIED VALUE
SendKeys "^V", True
'------------------- RELEASE THE LEFT MOUSE CLICK
mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
'------------------- +1 to the X value so the cursor moves again
UserForm1.TextBox1.Value = UserForm1.TextBox1.Value + 1
'------------------- NEW CURSOR POSISTION
SetCursorPos UserForm1.TextBox1.Value, 413
'------------------- REPEAT THE WHOLE PROCESS OVER AGAIN
DoEvents
Loop
 
R

RB Smissaert

Well, you asked:
if it was possible for Excel VBA to read the value of a mouse cord x z
value...

I am sure what you want is possible, but it looks messy to me, particularly
Sendkeys, which
really should be your very last option. What situation in practical terms
are you trying to solve?

RBS


I get the feeling there must be a simpler way to do what you want, but
this
will get you the mouse coordinates:

Option Explicit
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos _
Lib "user32" (lpPoint As POINTAPI) As Long

Function GetCursorPosition() As Long()

Dim Point As POINTAPI
Dim arr(1 To 2) As Long

GetCursorPos Point

arr(1) = Point.x
arr(2) = Point.y

GetCursorPosition = arr

End Function

Sub test()

Dim arr() As Long

arr = GetCursorPosition()

MsgBox "x " & arr(1) & vbCrLf & _
"y " & arr(2), , "mouse coordinates"

End Sub

RBS










- Show quoted text -

Thank you for your reply however, I'm already aware of how to get the
X Z cords... what I'm looking for it to do is select a range of text
in a given x z cordinate -- then copy it. My macro is programmed do
this but for whatever reason it's not. The process is explained
below...

'------------------- STARTING POSISTION OF HIGHLIGHT TEXT
SetCursorPos 255, 413
'------------------- END POSISTION OF TEXT is equal to 521, 413
Do Until UserForm1.TextBox1.Value = 521
DoEvents
'------------------- Grabs the current X Z values
Application.Run "mouscoords"
'------------------- LEFT CLICK THE MOUSE BUTTON
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&
'------------------- COPY THE CURRENT LETTER HIGHLIGHTED
SendKeys "^C", True
'------------------- SETFOCUS TO THE OUTPUT TEXT BOX ON THE USERFORM
UserForm1.TextBox3.SetFocus
'------------------- PASTE THE COPIED VALUE
SendKeys "^V", True
'------------------- RELEASE THE LEFT MOUSE CLICK
mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
'------------------- +1 to the X value so the cursor moves again
UserForm1.TextBox1.Value = UserForm1.TextBox1.Value + 1
'------------------- NEW CURSOR POSISTION
SetCursorPos UserForm1.TextBox1.Value, 413
'------------------- REPEAT THE WHOLE PROCESS OVER AGAIN
DoEvents
Loop
 
I

Internetdomainowner

Well, you asked:
if it was possible for Excel VBA to read the value of a mouse cord x z
value...

I am sure what you want is possible, but it looks messy to me, particularly
Sendkeys, which
really should be your very last option. What situation in practical terms
are you trying to solve?

RBS

















Thank you for your reply however, I'm already aware of how to get the
X Z cords... what I'm looking for it to do is select a range of text
in a given x z cordinate -- then copy it. My macro is programmed do
this but for whatever reason it's not. The process is explained
below...

'------------------- STARTING POSISTION OF HIGHLIGHT TEXT
SetCursorPos 255, 413
'------------------- END POSISTION OF TEXT is equal to 521, 413
Do Until UserForm1.TextBox1.Value = 521
DoEvents
'------------------- Grabs the current X Z values
Application.Run "mouscoords"
'------------------- LEFT CLICK THE MOUSE BUTTON
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&
'------------------- COPY THE CURRENT LETTER HIGHLIGHTED
SendKeys "^C", True
'------------------- SETFOCUS TO THE OUTPUT TEXT BOX ON THE USERFORM
UserForm1.TextBox3.SetFocus
'------------------- PASTE THE COPIED VALUE
SendKeys "^V", True
'------------------- RELEASE THE LEFT MOUSE CLICK
mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
'------------------- +1 to the X value so the cursor moves again
UserForm1.TextBox1.Value = UserForm1.TextBox1.Value + 1
'------------------- NEW CURSOR POSISTION
SetCursorPos UserForm1.TextBox1.Value, 413
'------------------- REPEAT THE WHOLE PROCESS OVER AGAIN
DoEvents
Loop- Hide quoted text -

- Show quoted text -

The applications of code that does this endless... versus a normal
webquery imagine if you were able to read the value of text on any
program that doesn't normally allow you to copy it. Or if it was
possible having this as an option for websites that use frames (which
makes it so that a normal excel webquery doesn't work).

I got the program to select the text on a basic website but I can't
seem to get it to copy the text after it's highlighted...

Private Sub CommandButton1_Click()
SetCursorPos 255, 413 ' 552, 357

DoEvents
Application.Run "mouscoords"
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&
Do Until UserForm1.TextBox1.Value = 521
UserForm1.TextBox1.Value = UserForm1.TextBox1.Value + 5
SetCursorPos UserForm1.TextBox1.Value, 413
DoEvents
Loop

SendKeys "^C", True

mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
UserForm1.Spreadsheet1.ActiveCell.Paste

End Sub
 
R

RB Smissaert

Ah, you want the text from an external application!
In that case do some Googling for the SendMessage API and WM_GETTEXT.

RBS


Well, you asked:
if it was possible for Excel VBA to read the value of a mouse cord x z
value...

I am sure what you want is possible, but it looks messy to me,
particularly
Sendkeys, which
really should be your very last option. What situation in practical terms
are you trying to solve?

RBS

















Thank you for your reply however, I'm already aware of how to get the
X Z cords... what I'm looking for it to do is select a range of text
in a given x z cordinate -- then copy it. My macro is programmed do
this but for whatever reason it's not. The process is explained
below...

'------------------- STARTING POSISTION OF HIGHLIGHT TEXT
SetCursorPos 255, 413
'------------------- END POSISTION OF TEXT is equal to 521, 413
Do Until UserForm1.TextBox1.Value = 521
DoEvents
'------------------- Grabs the current X Z values
Application.Run "mouscoords"
'------------------- LEFT CLICK THE MOUSE BUTTON
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&
'------------------- COPY THE CURRENT LETTER HIGHLIGHTED
SendKeys "^C", True
'------------------- SETFOCUS TO THE OUTPUT TEXT BOX ON THE USERFORM
UserForm1.TextBox3.SetFocus
'------------------- PASTE THE COPIED VALUE
SendKeys "^V", True
'------------------- RELEASE THE LEFT MOUSE CLICK
mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
'------------------- +1 to the X value so the cursor moves again
UserForm1.TextBox1.Value = UserForm1.TextBox1.Value + 1
'------------------- NEW CURSOR POSISTION
SetCursorPos UserForm1.TextBox1.Value, 413
'------------------- REPEAT THE WHOLE PROCESS OVER AGAIN
DoEvents
Loop- Hide quoted text -

- Show quoted text -

The applications of code that does this endless... versus a normal
webquery imagine if you were able to read the value of text on any
program that doesn't normally allow you to copy it. Or if it was
possible having this as an option for websites that use frames (which
makes it so that a normal excel webquery doesn't work).

I got the program to select the text on a basic website but I can't
seem to get it to copy the text after it's highlighted...

Private Sub CommandButton1_Click()
SetCursorPos 255, 413 ' 552, 357

DoEvents
Application.Run "mouscoords"
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&
Do Until UserForm1.TextBox1.Value = 521
UserForm1.TextBox1.Value = UserForm1.TextBox1.Value + 5
SetCursorPos UserForm1.TextBox1.Value, 413
DoEvents
Loop

SendKeys "^C", True

mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
UserForm1.Spreadsheet1.ActiveCell.Paste

End Sub
 
I

Internetdomainowner

Ah, you want the text from an external application!
In that case do some Googling for the SendMessage API and WM_GETTEXT.

RBS









The applications of code that does this endless... versus a normal
webquery imagine if you were able to read the value of text on any
program that doesn't normally allow you to copy it. Or if it was
possible having this as an option for websites that use frames (which
makes it so that a normal excel webquery doesn't work).

I got the program to select the text on a basic website but I can't
seem to get it to copy the text after it's highlighted...

Private Sub CommandButton1_Click()
SetCursorPos 255, 413 ' 552, 357

DoEvents
Application.Run "mouscoords"
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&
Do Until UserForm1.TextBox1.Value = 521
UserForm1.TextBox1.Value = UserForm1.TextBox1.Value + 5
SetCursorPos UserForm1.TextBox1.Value, 413
DoEvents
Loop

SendKeys "^C", True

mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
UserForm1.Spreadsheet1.ActiveCell.Paste

End Sub- Hide quoted text -

- Show quoted text -

I can't seem to get this work or even grasp the concept of
WM_GETWINDOWTEXT.. I'm looking to get the selected text only not
everything. I appreciate your responce...


Thanks!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top