Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: VB.Net и мышь... Добавлено: 15.06.08 17:36  

Автор вопроса:  DLF
Подскажите начинающему как отследить нажатие кнопки мыши вне формы?

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 DLF



Вопросов: 9
Ответов: 53
 Профиль | | #1 Добавлено: 15.06.08 23:52
Раньше ниже приведенный пример работал в VB6.0.
В VB.Net 2008 не работает... Очень нужно. Подскажите
кто-нибудь.

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As KeyCodeConstants) As Integer
Public Function MButtonDown(btButton As Byte) As Boolean
Select Case btButton
Case Is = 1
MButtonDown = CBool(GetKeyState(vbKeyLButton) And &H8000)
Case Is = 2
MButtonDown = CBool(GetKeyState(vbKeyRButton) And &H8000)
Case Is = 3
MButtonDown = CBool(GetKeyState(vbKeyMButton) And &H8000)
End Select
End Function

Ответить

Номер ответа: 2
Автор ответа:
 DLF



Вопросов: 9
Ответов: 53
 Профиль | | #2 Добавлено: 15.06.08 23:54
Private Sub Form_Load()
If MButtonDown(1) Then MsgBox "Левая клавиша нажата!"
If MButtonDown(2) Then MsgBox "Правая клавиша нажата!"
If MButtonDown(3) Then MsgBox "Средняя клавиша нажата!"
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #3 Добавлено: 18.06.08 09:20

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

namespace Example
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (Win32.IsKeyPressed(Keys.LButton)) MessageBox.Show("Left mouse button is pressed";);
            if (Win32.IsKeyPressed(Keys.RButton)) MessageBox.Show("Right mouse button is pressed";);
            if (Win32.IsKeyPressed(Keys.MButton)) MessageBox.Show("Middle mouse button is pressed";);
        }
    }

    public class Win32
    {
        [;DllImport("user32", CharSet = CharSet.Auto)]
        private static extern short GetKeyState(Keys virtualKey);

        public static bool IsKeyPressed(Keys key)
        {
            return ((GetKeyState(key) & 256) == 256);
        }
    }
}

Ответить

Номер ответа: 4
Автор ответа:
 DLF



Вопросов: 9
Ответов: 53
 Профиль | | #4 Добавлено: 18.06.08 23:17
Спасибо, ника, но как это будет выглядеть
в Visual Basic Net?

Ответить

Номер ответа: 5
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #5 Добавлено: 19.06.08 06:57
так :)
Imports System
Imports System.Runtime.InteropServices
Imports System.Windows.Forms

Namespace Example
    Public Partial Class Form1
        Inherits Form
        Public Sub New()
            InitializeComponent()
        End Sub
        
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
            If Win32.IsKeyPressed(Keys.LButton) Then
                MessageBox.Show("Left mouse button is pressed";)
            End If
            If Win32.IsKeyPressed(Keys.RButton) Then
                MessageBox.Show("Right mouse button is pressed";)
            End If
            If Win32.IsKeyPressed(Keys.MButton) Then
                MessageBox.Show("Middle mouse button is pressed";)
            End If
        End Sub
    End Class
    
    Public Class Win32
        <;DllImport("user32", CharSet := CharSet.Auto)> _
        Private Shared Function GetKeyState(ByVal virtualKey As Keys) As Short
        End Function
        
        Public Shared Function IsKeyPressed(ByVal key As Keys) As Boolean
            Return ((GetKeyState(key) And 256) = 256)
        End Function
    End Class
End Namespace

Ответить

Номер ответа: 6
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #6 Добавлено: 19.06.08 09:26
 BG(Алексей), зачот! )))

Ответить

Номер ответа: 7
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #7 Добавлено: 19.06.08 17:05
Спасибо:)
Я просто раньше тебя попал на эту страницу после его последнего вопроса.

Ответить

Номер ответа: 8
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #8 Добавлено: 19.06.08 20:47
В любом случае у меня VB нету, так что правильно сделал, что перевел на понятный для него диалект.

Ответить

Номер ответа: 9
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #9 Добавлено: 20.06.08 22:14
ника, Дай свой е-маил, или напиши на мой.
Есть пара приватных вопросов.
alex33w@hotmail.com

Ответить

Номер ответа: 10
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #10 Добавлено: 21.06.08 16:02
Не люблю C#, какой-то он странный...
PS Ника, привет!

Ответить

Номер ответа: 11
Автор ответа:
 ника



Вопросов: 1
Ответов: 111


 Профиль | | #11 Добавлено: 21.06.08 17:04
Дай свой е-маил, или напиши на мой

Неее.. нифига.. никаких приватных вопросов! все общение через форум!

 Steel Brand, привет! ;-)

Ответить

Номер ответа: 12
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #12 Добавлено: 22.06.08 03:58
:)

Ответить

Номер ответа: 13
Автор ответа:
 DLF



Вопросов: 9
Ответов: 53
 Профиль | | #13 Добавлено: 27.06.08 22:13
Спасибо, BG!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам