SALVAR POSIçãO DO MOUSE

 Tópico anterior Próximo tópico Novo tópico

SALVAR POSIçãO DO MOUSE

C#

 Compartilhe  Compartilhe  Compartilhe
#498737 - 09/12/2021 15:07:05

COQUITO
BELO HORIZONTE
Cadast. em:Junho/2014


 Anexos estao visíveis somente para usuários registrados

olá pessoal
alguem sabe como consigo pegar a posição do mouse no monitor e gravar no listbox?
tenho este forms ele está funcionando no posicionamento mais não consigo colocar no listbox





#498755 - 10/12/2021 20:10:00

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


 Anexos estao visíveis somente para usuários registrados

COQUITO,

   Montei um código rápido aqui... talvez isso possa te ajudar:


using System;
using System.Windows.Forms;

namespace wfaMouse
{
    public partial class FrmCursor : Form
    {
        public FrmCursor()
        {
            InitializeComponent();
        }

        private void BtnGravar_Click(object sender, EventArgs e)
        {
            String StrCursorX = '';
            String StrCursorY = '';

            StrCursorX = 'X:' + LblX.Text;
            StrCursorY = 'Y:' + LblY.Text;

            LstCursor.Items.Add(StrCursorX + ' ' + StrCursorY);
        }

        private void FrmCursor_MouseMove(object sender, MouseEventArgs e)
        {
            //SOMENTE PARA SEU CONHECIMENTO:
            //Point Posicao = Cursor.Position;
            //Posicao = Cursor.Position;

            LblX.Text = Cursor.Position.X.ToString();
            LblY.Text = Cursor.Position.Y.ToString();
        }
    }
}



[]'s,
Tunusat.

Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanue

#498759 - 12/12/2021 19:45:58

COQUITO
BELO HORIZONTE
Cadast. em:Junho/2014


 Anexos estao visíveis somente para usuários registrados

Citação:
:
COQUITO,

   Montei um código rápido aqui... talvez isso possa te ajudar:


using System;
using System.Windows.Forms;

namespace wfaMouse
{
    public partial class FrmCursor : Form
    {
        public FrmCursor()
        {
            InitializeComponent();
        }

        private void BtnGravar_Click(object sender, EventArgs e)
        {
            String StrCursorX = '';
            String StrCursorY = '';

            StrCursorX = 'X:' + LblX.Text;
            StrCursorY = 'Y:' + LblY.Text;

            LstCursor.Items.Add(StrCursorX + ' ' + StrCursorY);
        }

        private void FrmCursor_MouseMove(object sender, MouseEventArgs e)
        {
            //SOMENTE PARA SEU CONHECIMENTO:
            //Point Posicao = Cursor.Position;
            //Posicao = Cursor.Position;

            LblX.Text = Cursor.Position.X.ToString();
            LblY.Text = Cursor.Position.Y.ToString();
        }
    }
}



[]'s,
Tunusat.


problema que tenho nessa solução somente funciona dentro do forms, o que preciso é que pegue as posições dentro do monitor, digamos que se trabalhas com 2 monitores preciso saber qual é a posição onde estou apontando, veja o novo exemplo
fiz nova posição em alguma parte do circulo são as coordenadas qe esta capturando so que eu mexo nele a posição muda e nao conisgo capturar.




#498832 - 18/12/2021 10:14:30

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


Última edição em 18/12/2021 10:34:37 por TUNUSAT

 Anexos estao visíveis somente para usuários registrados

COQUITO,

    Pesquisei e achei algo promissor... uma API chamada de 'GetAsyncKeyState'. Mas não está completamente certa... de qualquer forma talvez possa te ajudar.
    Modifiquei o código e ficou assim:

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace wfaMouse
{
    public partial class FrmCursor2 : Form
    {
        #region Libraries

        [DllImport('user32.dll')]
        //static extern ushort GetAsyncKeyState(int vKey);
        public static extern short GetAsyncKeyState(UInt16 virtualKeyCode);
        private const UInt16 VK_MBUTTON = 0x04;//middle mouse button
        private const UInt16 VK_LBUTTON = 0x01;//left mouse button
        private const UInt16 VK_RBUTTON = 0x02;//right mouse button

        #endregion

        public FrmCursor2()
        {
            InitializeComponent();
        }

        private void BtnGravar_Click(object sender, EventArgs e)
        {
            String StrCursorX = '';
            String StrCursorY = '';

            LblX.Text = MousePosition.X.ToString();
            LblY.Text = MousePosition.Y.ToString();

            StrCursorX = 'X:' + LblX.Text;
            StrCursorY = 'Y:' + LblY.Text;

            LstCursor.Items.Add(StrCursorX + ' ' + StrCursorY);
        }

        private void FrmCursor2_MouseClick(object sender, MouseEventArgs e)
        {
            //if (GetAsyncKeyState(VK_LBUTTON) == 0x01)
            //{
            //    if ((MousePosition.X < FrmCursor2.ActiveForm.Left) || (MousePosition.X > (FrmCursor2.ActiveForm.Left + FrmCursor2.ActiveForm.Width))
            //        || (MousePosition.Y > FrmCursor2.ActiveForm.Top) || (MousePosition.Y > (FrmCursor2.ActiveForm.Top + FrmCursor2.ActiveForm.Height)))
            //    {
            //        MessageBox.Show('Clicou fora do form!');
            //    }
            //}
        }
    }
}



    Links que eu pesquisei:

=========================================
[Dúvida]Como Pegar Posição do Mouse fora do Form
Por Sagittarius,
22 de abril de 2010 em Pascal/Delphi

https://www.clubedohardware.com.br/forums/topic/727530-resolvido-d%C3%BAvidacomo-pegar-posi%C3%A7%C3%A3o-do-mouse-fora-do-form/

=========================================
GetAsyncKeyState - this.Show [C#]

https://social.msdn.microsoft.com/Forums/vstudio/pt-BR/604c3f6b-d598-4932-bf5f-9050f1c07c5c/getasynckeystate-thisshow-c?forum=netfxbcl
=========================================
Create pageGetAsyncKeyState (user32)

http://pinvoke.net/default.aspx/user32/GetAsyncKeyState.html
=========================================
GetAsyncKeyState VK_LBUTTON. Name does not exist in current context

https://stackoverflow.com/questions/15944586/getasynckeystate-vk-lbutton-name-does-not-exist-in-current-context
=========================================
Control.IsKeyLocked(Keys) Method

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.control.iskeylocked?view=windowsdesktop-6.0
=========================================

[]'s,
Tunusat.


Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanue

#498841 - 19/12/2021 07:40:58

PROGRAMADORVB6
LISBOA
Cadast. em:Janeiro/2004


Olá TUNUSAT , Bom dia como fazer isso para VB.Net?

Obrigado desde já pela atenção.
ProgramadorVB6

______________________________________________________________________________

Que minha coragem seja maior que meu medo e que minha fora seja to grande quanto minha f.


#498843 - 20/12/2021 10:04:33

PROGRAMADORVB6
LISBOA
Cadast. em:Janeiro/2004


 Anexos estao visíveis somente para usuários registrados

Olá pessoal aproveitando a embalagem fiz aqui um programa que indica a posição do rato e suas coordenadas mas não queria usar o controlo timer, pois é muito limitado ,tentei fazer de outra maneira , mas estou com dificuldade em para-lo como aconteceu com o controlo Timer , pois não o consegui para-lo , existe alguma solução ?
Grato desde já pela vossa atenção.
ProgramadorVB6
Deixo aqui até onde parei.

______________________________________________________________________________

Que minha coragem seja maior que meu medo e que minha fora seja to grande quanto minha f.


#498845 - 20/12/2021 12:48:36

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


PROGRAMADORVB6,

   Você pode usar conversores de código na internet C# -> VB.Net) e o que não funcionar pesquisar na internet para adaptar. Exemplos:

----------------------------------------------------------
Telerik Code Converter

https://converter.telerik.com/

----------------------------------------------------------
Code Translator for .Net

https://www.carlosag.net/tools/codetranslator/

----------------------------------------------------------
Mind Fusion

https://www.mindfusion.eu/convert-cs-vb.html

----------------------------------------------------------

[]'s,
Tunusat.

Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanue

#498936 - 02/01/2022 14:24:29

COQUITO
BELO HORIZONTE
Cadast. em:Junho/2014


Pessoal consegui fazer uma gambiarra, e está funcionando por agora
obg.
Citação:
          private void  TrackerMouse()

        {
                  
            while (true)
            {
                if (MouseButtons == MouseButtons.Left)
                 {
                    StrValores = MousePosition.X + ',' + MousePosition.Y;
                    BolHab_Valores = true;
                }

            }
          

        }


        private void tmr_Leitura_Tick(object sender, EventArgs e)
        {
            if (BolHab_Valores)
            {
                tmr_Leitura.Stop();
               BolHab_Valores = false;
                this.Text = string.Format('Posição do mouse: {0}', StrValores) ;
                string[] XY = StrValores.Split(',');

                txtmouse_X.Text = XY[0];
                txtmouse_Y.Text = XY[1];

                tmr_Leitura.Start();
                
            }


      


        }





#498945 - 03/01/2022 18:23:20

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


Última edição em 03/01/2022 19:01:02 por TUNUSAT

Beleza Coquito!

Onde você colocou o 'TrackerMouse'?

Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanue

#498953 - 05/01/2022 02:06:45

LITTLEBOY
FEIRA DE SANTANA
Cadast. em:Maio/2006


Citação:
:
:
COQUITO,

   Montei um código rápido aqui... talvez isso possa te ajudar:


using System;
using System.Windows.Forms;

namespace wfaMouse
{
    public partial class FrmCursor : Form
    {
        public FrmCursor()
        {
            InitializeComponent();
        }

        private void BtnGravar_Click(object sender, EventArgs e)
        {
            String StrCursorX = '';
            String StrCursorY = '';

            StrCursorX = 'X:' + LblX.Text;
            StrCursorY = 'Y:' + LblY.Text;

            LstCursor.Items.Add(StrCursorX + ' ' + StrCursorY);
        }

        private void FrmCursor_MouseMove(object sender, MouseEventArgs e)
        {
            //SOMENTE PARA SEU CONHECIMENTO:
            //Point Posicao = Cursor.Position;
            //Posicao = Cursor.Position;

            LblX.Text = Cursor.Position.X.ToString();
            LblY.Text = Cursor.Position.Y.ToString();
        }
    }
}



[]'s,
Tunusat.

problema que tenho nessa solução somente funciona dentro do forms, o que preciso é que pegue as posições dentro do monitor, digamos que se trabalhas com 2 monitores preciso saber qual é a posição onde estou apontando, veja o novo exemplo
fiz nova posição em alguma parte do circulo são as coordenadas qe esta capturando so que eu mexo nele a posição muda e nao conisgo capturar.

não sei especificamente como vc quer capiturar isso, mas posto uma solução mais elegante se for apenas capiturar o local do ponteiro:

Crie esta Classe no projeto  
  using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace System.Windows.Forms
{
    public sealed class KeyboardHotKeys : IDisposable
    {
        #region Class Code
        // Registers a hot key with Windows.
        [DllImport('user32.dll')]
        private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
        // Unregisters the hot key with Windows.
        [DllImport('user32.dll')]
        private static extern bool UnregisterHotKey(IntPtr hWnd, int id);

        /// <summary>
        /// Represents the window that is used internally to get the messages.
        /// </summary>
        private class Window : NativeWindow, IDisposable
        {
            private static int WM_HOTKEY = 0x0312;

            public Window()
            {
                // create the handle for the window.
                this.CreateHandle(new CreateParams());
            }

            /// <summary>
            /// Overridden to get the notifications.
            /// </summary>
            /// <param name='m'></param>
            protected override void WndProc(ref Message m)
            {
                base.WndProc(ref m);

                // check if we got a hot key pressed.
                if (m.Msg == WM_HOTKEY)
                {
                    // get the keys.
                    Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF);
                    ModifierKeys modifier = (ModifierKeys)((int)m.LParam & 0xFFFF);

                    // invoke the event to notify the parent.
                    if (KeyPressed != null)
                        KeyPressed(this, new KeyPressedEventArgs(modifier, key));
                }
            }

            public event EventHandler<KeyPressedEventArgs> KeyPressed;

            #region IDisposable Members

            public void Dispose()
            {
                this.DestroyHandle();
            }

            #endregion
        }

        private Window _window = new Window();
        private int _currentId;

        public KeyboardHotKeys()
        {
            // register the event of the inner native window.
            _window.KeyPressed += delegate(object sender, KeyPressedEventArgs args)
            {
                if (KeyPressed != null)
                    KeyPressed(this, args);
            };
        }

        /// <summary>
        /// Registers a hot key in the system.
        /// </summary>
        /// <param name='modifier'>The modifiers that are associated with the hot key.</param>
        /// <param name='key'>The key itself that is associated with the hot key.</param>
        public void RegisterHotKey(ModifierKeys modifier, Keys key)
        {
            // increment the counter.
            _currentId = _currentId + 1;

            // register the hot key.
            if (!RegisterHotKey(_window.Handle, _currentId, (uint)modifier, (uint)key))
                throw new InvalidOperationException('Couldn’t register the hot key.');
        }

        /// <summary>
        /// A hot key has been pressed.
        /// </summary>
        public event EventHandler<KeyPressedEventArgs> KeyPressed;

        #region IDisposable Members

        public void Dispose()
        {
            // unregister all the registered hot keys.
            for (int i = _currentId; i > 0; i--)
            {
                UnregisterHotKey(_window.Handle, i);
            }

            // dispose the inner native window.
            _window.Dispose();
        }

        #endregion

        #region Others

        /// <summary>
        /// Event Args for the event that is fired after the hot key has been pressed.
        /// </summary>
        public class KeyPressedEventArgs : EventArgs
        {
            private ModifierKeys _modifier;
            private Keys _key;

            internal KeyPressedEventArgs(ModifierKeys modifier, Keys key)
            {
                _modifier = modifier;
                _key = key;
            }

            public ModifierKeys Modifier
            {
                get { return _modifier; }
            }

            public Keys Key
            {
                get { return _key; }
            }
        }

        /// <summary>
        /// The enumeration of possible modifiers.
        /// </summary>
        [Flags]
        public enum ModifierKeys : uint
        {
            Alt = 1,
            Control = 2,
            Shift = 4,
            Win = 8
        }
        #endregion
        #endregion
        #region Singleton
        private static KeyboardHotKeys _Current;
        public static KeyboardHotKeys Current
        {
            get
            {
                if (_Current == null)
                    _Current = new KeyboardHotKeys();
                return _Current;
            }
        }
        #endregion
    }
}


Este codigo define um comando de teclas global, funcionando mesmo fora do form
no construtor do form  adicione:
  public Form1()
        {
            InitializeComponent();
            KeyboardHotKeys.Current.KeyPressed += Current_KeyPressed;
            KeyboardHotKeys.Current.RegisterHotKey(KeyboardHotKeys.ModifierKeys.Control | KeyboardHotKeys.ModifierKeys.Alt, Keys.T);

        }  

adicione o metodo
       private void Current_KeyPressed(object? sender, KeyboardHotKeys.KeyPressedEventArgs e)
        {
            if (e.Modifier == (KeyboardHotKeys.ModifierKeys.Control | KeyboardHotKeys.ModifierKeys.Alt))
            {
                if (e.Key == Keys.T)
                {
                    String StrCursorX = '';
                    String StrCursorY = '';

                    label1.Text = Cursor.Position.X.ToString();
                    label2.Text = Cursor.Position.Y.ToString();
                    StrCursorX = 'X:' + label1.Text;
                    StrCursorY = 'Y:' + label2.Text;

                    listBox1.Items.Add(StrCursorX + ' ' + StrCursorY);
                }
            }
        }

Lembre-se de defini as teclas de combinação. ocodigo define ai ctrl+alt+t. faça teste e veja se resolve seu problema.

Spiral. Aplicaes Web e Desktop



#498997 - 09/01/2022 18:57:00

COQUITO
BELO HORIZONTE
Cadast. em:Junho/2014


Citação:
:
Beleza Coquito!

Onde você colocou o 'TrackerMouse'?



Citação:
  


   private void frmLocalizacao_Load(object sender, EventArgs e)
        {
        
                Tr_Mouse = new Thread(TrackerMouse);
                Tr_Mouse.Start();

      
          
        }







 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por COQUITO em 09/01/2022 19:10:33