Mausbewegung mit vbs Script abfragen
Ist es möglich mit vbs die mausbewegung abzufragen?
Wie kann man unter vbs script die mausbewegungen abfragen.
Also um zu sehen ob die maus bewegt wird oder nicht.
Script sollte eine Rückantowrt liefern
Ich hätte nähmlich gerne gesehen ob sich jamnd am Computer befindet oder nicht.
Wie kann man unter vbs script die mausbewegungen abfragen.
Also um zu sehen ob die maus bewegt wird oder nicht.
Script sollte eine Rückantowrt liefern
Ich hätte nähmlich gerne gesehen ob sich jamnd am Computer befindet oder nicht.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 82578
Url: https://administrator.de/contentid/82578
Ausgedruckt am: 23.11.2024 um 11:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo versuch das mal
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace StringPerf
{
public partial class PopupPanel : Form
{
private Boolean doDrag = false;
private Int32 offsetX = 0;
private Int32 offsetY = 0;
public PopupPanel()
{
InitializeComponent();
}
void Parent_MouseMove(object sender, MouseEventArgs e)
{
}
private void PopupPanel_MouseDown(object sender, MouseEventArgs e)
{
doDrag = true;
offsetX = e.X;
offsetY = e.Y;
}
private void PopupPanel_MouseUp(object sender, MouseEventArgs e)
{
doDrag = false;
}
private void PopupPanel_MouseMove(object sender, MouseEventArgs e)
{
if (doDrag)
{
this.Location = new Point(MousePosition.X - offsetX, MousePosition.Y- offsetY);
}
}
}
}
@SvenGuenter
Ich muss gestehen, das ist eines der interessantesten VBScripts seit jenem hier ...
Grüße
bastla
Ich muss gestehen, das ist eines der interessantesten VBScripts seit jenem hier ...
Grüße
bastla
Ich muss gestehen, das ist eines der interessantesten VBScripts
Hehe, wirklich nettes VBScript Dann würd Dir das hier sicher auch gefallen, bastla:
<System.Runtime.InteropServices.ComVisible(True)> _
<Microsoft.VisualBasic.ComClass()> Public Class MousePosition
Private m_Point As POINTAPI
Private m_LastPoint As POINTAPI
Private m_Interval As Double
Private m_HasMoved As Boolean
Private WithEvents t As System.Timers.Timer
Private Structure POINTAPI
Public x As Int32
Public y As Int32
End Structure
Private Declare Auto Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Int32
Public Sub New()
GetCursorPos(m_Point)
m_LastPoint = m_Point
m_Interval = 3000
m_HasMoved = True
t = New System.Timers.Timer(m_Interval)
't.Start() 'ggfls. automatisch starten
End Sub
Public ReadOnly Property X() As Int32
Get
GetCursorPos(m_Point)
Return m_Point.x
End Get
End Property
Public ReadOnly Property Y() As Int32
Get
GetCursorPos(m_Point)
Return m_Point.y
End Get
End Property
Public ReadOnly Property HasMoved() As Boolean
'Gibt an ob sich die Mauscursor-Position im angegebenen Intervall verändert hat.
Get
Return m_HasMoved
End Get
End Property
Public Property Interval() As Single
Get
Return m_Interval
End Get
Set(ByVal value As Single)
m_Interval = value
t.Interval = m_Interval
End Set
End Property
Public Sub StartMouseWatcher()
t.Start()
End Sub
Public Sub StopMouseWatcher()
t.Stop()
End Sub
Private Sub t_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles t.Elapsed
GetCursorPos(m_Point)
If (m_Point.x <> m_LastPoint.x) Or (m_Point.y <> m_LastPoint.y) Then
m_HasMoved = True
Else
m_HasMoved = False
End If
GetCursorPos(m_LastPoint)
End Sub
End Class
Jaja, ist kein Script, sondern kann in eine VB2005 [Express] Klassenbibliothek eingefügt werden die man dann mit regasm.exe [filename] /tlb registriert. So kann man dann aus beliebigen COM-Clients Objekte davon instanzieren-->CreateObject("AssemblyName.AssemblyProduct")
PS: Vorzugsweise natürlich vorh noch mit einem StrongName versehen und mit dem Schalter /Codebase registrieren.
Registrieren von Assemblys mit COM
BG, Felix -misterdemeanor-
Edited: Anfangs war ja nur die Koordinatenermittlung implementiert...
Hallo misterdemeanor!
@freysup
Da VBS auf einen ganz anderen Verwendungszweck ausgerichtet ist, wird eine Umsetzung Deines Vorhabens damit wohl nicht möglich sein ...
Grüße
bastla
Dann würd Dir das hier sicher auch gefallen, bastla
Tut es auch ... ... ist kein Script, sondern kann in eine VB2005 [Express] Klassenbibliothek eingefügt werden ...
... weil es (wenn auch nicht exakt der ursprünglichen Fragestellung entsprechend) als alternative Variante deklariert und mit "Gebrauchsanleitung" versehen ist - so sehe ich es als ernst zu nehmenden Lösungsvorschlag an.@freysup
Da VBS auf einen ganz anderen Verwendungszweck ausgerichtet ist, wird eine Umsetzung Deines Vorhabens damit wohl nicht möglich sein ...
Grüße
bastla
Hallo bastla,
zugegeben, "Anleitung" ist keineswegs ausführlich und man müsste sich schon noch mit auseinandersetzen. Aber da wäre ich sicher auch noch für Rückfragen da gewesen.
Sicherlich ist es auch so keineswegs eine saubere "COM"-Umsetzung. Vom Fragetext her eine "ernst zu nehmende" Antwort, da stimme ich Dir zu Für diese Einschätzung fühle ich mich sogar wirklich geehrt, sie kommt von Dir!
Für das eigentliche Vorhaben freysup´s --> eine Benutzeraktivität zu ermitteln, sicher auch nicht stolperfrei...genau gesagt ein Mienenfeld.
Was mich aber interessieren würde, wäre Deine generelle Meinung zu meinem "Lösungsansatz"-->.Net ([D]COM) Einsatz in (z.B.) vbScript. Als Batch und Script Guru der Du zweifellos bist würde mich das sehr interessieren. Habe mit Scripting zwar wenig am Hut (größtenteils hier bei Fragen), es wwürde mich wie geschrieben sehr interessieren.
Hoffe das ist Dir nicht zu sehr Off Topic!
BG, Felix -misterdemeanor-
zugegeben, "Anleitung" ist keineswegs ausführlich und man müsste sich schon noch mit auseinandersetzen. Aber da wäre ich sicher auch noch für Rückfragen da gewesen.
Sicherlich ist es auch so keineswegs eine saubere "COM"-Umsetzung. Vom Fragetext her eine "ernst zu nehmende" Antwort, da stimme ich Dir zu Für diese Einschätzung fühle ich mich sogar wirklich geehrt, sie kommt von Dir!
Für das eigentliche Vorhaben freysup´s --> eine Benutzeraktivität zu ermitteln, sicher auch nicht stolperfrei...genau gesagt ein Mienenfeld.
Was mich aber interessieren würde, wäre Deine generelle Meinung zu meinem "Lösungsansatz"-->.Net ([D]COM) Einsatz in (z.B.) vbScript. Als Batch und Script Guru der Du zweifellos bist würde mich das sehr interessieren. Habe mit Scripting zwar wenig am Hut (größtenteils hier bei Fragen), es wwürde mich wie geschrieben sehr interessieren.
Hoffe das ist Dir nicht zu sehr Off Topic!
BG, Felix -misterdemeanor-
Hallo misterdemeanor!
Deinen Ansatz habe ich zwar nicht getestet, finde ihn aber sinnvoll, da eben VBS der unmittelbare Zugriff auf Windows-APIs fehlt und aufgrund der freien Verfügbarkeit der VisualStudio-"Express"-Versionen eine Umsetzung Deines Vorschlages auch durchaus "kostengünstig" ist ...
Auch wenn es sicherlich für Fragesteller angenehmer ist, mit bereits installierten Komponenten (also CMD + ev VBS) auszukommen und nicht selbst "Hand anlegen" zu müssen, zeigt aber gerade diese Problemstellung hier (welche ich gar nicht näher kommentieren möchte ), dass es eben für die genannten "einfachen" Mittel Grenzen gibt.
Damit aber die Hürde nicht zu hoch wird, könntest Du ja (wenn Dir einmal besonders langweilig sein sollte ) das Thema in Form eines ("Schritt für Schritt"- ) Tutorials noch ein wenig aufbereiten und damit leichter umsetzbar machen ...
Grüße
bastla
P.S.: Brich Dir keine Verzierungen (wie "Guru") ab - wie meinem Nick zu entnehmen, bin ich ja, im Gegensatz zu Dir, noch nicht einmal Programmierer, sondern nur ein (Basic-)Bastler , der vom einzigen "Guru" hier (Biber), ein wenig "batchen" gelernt hat ...
Deinen Ansatz habe ich zwar nicht getestet, finde ihn aber sinnvoll, da eben VBS der unmittelbare Zugriff auf Windows-APIs fehlt und aufgrund der freien Verfügbarkeit der VisualStudio-"Express"-Versionen eine Umsetzung Deines Vorschlages auch durchaus "kostengünstig" ist ...
Auch wenn es sicherlich für Fragesteller angenehmer ist, mit bereits installierten Komponenten (also CMD + ev VBS) auszukommen und nicht selbst "Hand anlegen" zu müssen, zeigt aber gerade diese Problemstellung hier (welche ich gar nicht näher kommentieren möchte ), dass es eben für die genannten "einfachen" Mittel Grenzen gibt.
Damit aber die Hürde nicht zu hoch wird, könntest Du ja (wenn Dir einmal besonders langweilig sein sollte ) das Thema in Form eines ("Schritt für Schritt"- ) Tutorials noch ein wenig aufbereiten und damit leichter umsetzbar machen ...
Grüße
bastla
P.S.: Brich Dir keine Verzierungen (wie "Guru") ab - wie meinem Nick zu entnehmen, bin ich ja, im Gegensatz zu Dir, noch nicht einmal Programmierer, sondern nur ein (Basic-)Bastler , der vom einzigen "Guru" hier (Biber), ein wenig "batchen" gelernt hat ...