Mausgeschwindigkeit + Zugriff auf Prozesse

Afritus

Mitglied
Hi Leute,

wollte heute zwei Sachen testen.
1. Die Mausgeschwindigkeit (Geschwindigkeit des Mauszeigers) messen (Nicht SystemInformation.Mousespeed sondern wenn möglich die derzeitige Mausgeschwindigkeit in km/h oder m/s). Da ich keine einfache Methode finden konnte, habe ich mir die Formal v=s/t zur Hand genommen. Aber ich bin leider nicht draufgekommen, wie ich den zurückgelegten Weg s in VB.NET berechnen kann... Eventuell könnte mir da jemand helfen, sodass das Programm mir am Ende immer die derzeitige Mausgeschwindigkeit in km/h, m/s oder einer sonstigen Einheit anzeigt.

2. Auslesen, welche weiteren Prozesse/Programme auf einen vordefinierten Prozess Zugriff ausüben/mit diesem kommunizieren. Also ich sage zum Beispiel dem Programm, es soll den Prozess "xyz.exe" überprüfen und das Programm schreibt mir in eine Listbox alle Prozesse/Programme, die mit "xyz.exe" kommunizieren.

Ich würde mich über eine hilfreiche Antwort sehr freuen,
Markus
 
Kay vielen Dank, habs nun doch ziemlich einfach gelöst:

Code:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Timer1.Enabled = True

    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        TextBox1.Text = MousePosition.X
        TextBox2.Text = MousePosition.Y

        Timer2.Enabled = True

    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

        Timer2.Enabled = False
        TextBox3.Text = MousePosition.X
        TextBox4.Text = MousePosition.Y

        TextBox5.Text = (System.Math.Sqrt((TextBox3.Text - TextBox1.Text) ^ 2 + (TextBox4.Text - TextBox2.Text) ^ 2))
        If TextBox5.Text > 1300 Then
            MsgBox("Alert!", vbCritical, "Warning")
        End If

    End Sub

Pythagoras kann man doch überall verwenden ;) Die Ausgabe dürfte in Pixel pro 0.1 Sekunden sein. Eine Frage hätte ich trotzdem, angenommen der Mauszeiger ist in der Mitte fixiert (wie bei Ego-Shootern, beispielsweise Counter-Strike), wie könnte ich dann die Geschwindkeit der Maus ermitteln?
Btw, das lässt sich doch so auf jeden Computer oder? Da ja die Pixel wahrscheinlich überall die gleiche Größe haben?

Zu 2. habe ich leider noch immer nichts gefunden... Jedenfalls vielen Dank.

MfG
Markus
 
Zuletzt bearbeitet:
Hallo Afritus,

das klingt für mich fast nach einem Anticheat was du da Programmieren möchtest :)

Ich habe hier ein stück alten Code gefunden, der sollte genau das machen was du suchst. Er is allerdings in C#, sollte aber problemlos in VB.NET konvertiert werden können.

Code:
static void Main(string[] args)
        {
            Console.Write("Enter your process: ");
            string proc = Console.ReadLine();
            Process myProcess = new Process();
            // Get the process start information of notepad.
            ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(proc);
            // Assign 'StartInfo' of notepad to 'StartInfo' of 'myProcess' object.
            myProcess.StartInfo = myProcessStartInfo;
            // Create a notepad.
            myProcess.Start();
            System.Threading.Thread.Sleep(1000);
            ProcessModule myProcessModule;
            // Get all the modules associated with 'myProcess'.
            ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
            Console.WriteLine("Base addresses of the modules associated "
               + "with " + proc + " are:");
            // Display the 'BaseAddress' of each of the modules.
            for (int i = 0; i < myProcessModuleCollection.Count; i++)
            {
                myProcessModule = myProcessModuleCollection[i];
                Console.WriteLine(myProcessModule.ModuleName + " : "
                   + myProcessModule.BaseAddress);
            }
            // Get the main module associated with 'myProcess'.
            myProcessModule = myProcess.MainModule;
            // Display the 'BaseAddress' of the main module.
            Console.WriteLine("The process's main module's base address is: "
               + myProcessModule.BaseAddress);
            myProcess.CloseMainWindow();
            Console.Read();
        }

Mfg
 
Du hast richtig geraten, napstermania ;)
Ich programmiere EML-Umbrella, das Anti-Cheat-Programm der EML (http://www.esport-masters.com). Die wichtigsten Funktionen stehen schon, sogar der Login mit dem Account funktioniert. Und nun bin ich eben dabei, ein paar neue Erkennungsmethoden hinzuzufügen :)
Vielen Dank für den Code, ich habe ihn nun so umgeschrieben, dass er Kommunikationen von einem schon gestarteten Prozess ausliest :)
Also 2. ist erledigt. Bleibt nur noch offen, wie ich nun die Mausgeschwindkeit in einem Ego-Shooter messe, bei dem der Mauszeiger ja in der Mitte fixiert ist...
 
Zuletzt bearbeitet:
Ich helfe gerne wenn es um sowas geht :)

Allerdings wirst du mit dieser methode einen "gut" programmierten cheat nicht finden, da diese sich selbst wieder aus der Modulliste löschen. Sprich er wird in dieser Liste nicht auftachen. Um solche Software zu erkennen musst schon etwas tiefer in die Software gehen als nur die Prozessmodule zu betrachten.

In den meisten Fällen werden sogennante inline Hook's verwendet um die Software (in deinem Fall CSS) zu manipulieren. Ich habe hier zwei links für dich, welche du dir mal zu gemüte führen soltlest. Hier wird beschrieben wie man diese "Inline-Hooks" ausfindig machen kann. Damit packst du das über an der Wurzel :)

http://www.diamondcs.com.au/dse/detection/code-modifications.php
http://www.diamondcs.com.au/dse/detections.php

Ich hoffe ich konnte dir da etwas weiter helfen.

PS: Du solltest dich für solche Art von Software lieber für eine mächtiger Sprache entscheiden(z.B. C/C++). Aber eine DLL mit einfachen C-Code kann man in VB.NET bestimmt genauso leicht einbinden wie in C# :)
 
Wow, du scheinst dich ja in diesem Sektor gut auszukennen :)
Werde mir die zwei Links auf jeden Fall durchlesen!

BTW: Wir suchen Leute, die sich mit der Entwicklung des Anti-Cheat-Programmes beschäftigen. Bezahlen können wir leider nichts, ich arbeite auch kostenlos dran. Aber wenn du Interesse hast, würde ich mich sehr freuen!
Meine ICQ ist: 461524105
 

Neue Beiträge

Zurück