Ereignis Priorität

JoKne

Erfahrenes Mitglied
Ich weiß leider nicht genau wonach ich suchen soll oder wie es heißt,
aber ich hab ein Programm geschrieben das bei einem Linksklick eine Datei öffnet, wenn ich aber z.B ein Spiel starte oder ähnliches habe ich glaub dort directen Mausinput. Ist es irgendwie möglich das zu umgehen und diesem Linkemausklick aus egal ob es ein Spiel oder sonstwas ist die höchste Priorität zu geben?

Ich weiß nicht genau wie ich das erklären soll, in meinem Programm wird durch klicken der linken Maustaste ein Ereignis hervorgerufen (datei geöfnet) egal wo sich der kursor befindet, auch wenn mein Programm minimiert ist, wenn ich aber ein Spiel spiele funktioniert das nicht mehr, mein Programm wird dann ignoriert.
Wie schaffe ich es das eben das nicht passiert?

Danke, bin für jede Hilfe dankbar.
 
Code:
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Const VK_LBUTTON = &H1
Private Const VK_RBUTTON = &H2
Private Declare Function SetCursorPos Lib "user32" (ByVal _
        X As Long, ByVal Y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" _
        (lpPoint As POINTAPI) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags _
        As Long, ByVal dx As Long, ByVal dy As Long, ByVal _
        cButtons As Long, ByVal dwExtraInfo As Long)
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_ABSOLUTE = &H8000

Private DownX As Integer
Private DownY As Integer

Private Type POINTAPI
  X As Long
  Y As Long
End Type

Dim aX%, aY%, dx%, dy%

Private Sub Command1_Click()
DownY = Text1.Text
DownX = Text2.Text


End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Form_Load()
DownX = 0
DownY = 0
Timer1.Interval = 100
Timer2.Enabled = True
Timer2.Interval = 100
End Sub
Private Sub Timer2_Timer()

Label1.Caption = aX
Label2.Caption = aY

    If GetAsyncKeyState(VK_LBUTTON) Then
  Dim Pt As POINTAPI
  
    Call GetCursorPos(Pt)
      aX = Pt.X
      aY = Pt.Y
      If aY > dy Then aY = aY + DownX
      If aX < dx Then aX = aX + DownY
            Call SetCursorPos(aX, aY)
      End If
      
      If aY <= dy And aX >= dx Then
        SetCursorPos dx, dy
      End If
      
End Sub

Also das Programm sollte eigentlich Systemweit funktionieren, tut es aber nicht.
Mausklicks werden über die User.32 Systemweit erkannt aber :

Code:
   If GetAsyncKeyState(VK_LBUTTON) Then
  Dim Pt As POINTAPI
  
    Call GetCursorPos(Pt)
      aX = Pt.X
      aY = Pt.Y
      If aY > dy Then aY = aY + DownX
      If aX < dx Then aX = aX + DownY
            Call SetCursorPos(aX, aY)
      End If

Sollte auch Systemweit funktionieren, egal ob ein Programm mit "Direct Mouseinput" läuft oder den Focus hat, leider funktioniert das nicht.
Kann mir einer Sagen wie ich es hin bekomme das dies auch noch funktionier?
Bin für Hilfe sehr dankbar!

Hab die Frm. im Anhang, lasst euch nicht von den Labels verwirren( wenn ihr es testet :-)) hab es jetzt mal aufs nötigste verkleinert, der Sinn ist eben das die Maus je nach eingestelltem Wert nach unten zieht und das soll systemweit sein.
 
Zuletzt bearbeitet:
Könnte es vielleicht sein, dass das Spiel das Bewegen der Maus durch dein Programm aus Anti-Cheater-Gründen blockiert?
Das hört sich für mich nämlich so an, dass du dir ein Programm schreiben willst, damit du in dem Spiel dauerfeuern kannst ohne dabei den Gegner aus dem Zielkreuz zu verlieren...
 
Zuletzt bearbeitet:
Nee, ich hab es schon in einigen Spielen getestet und dort funktioniert es, man kann übrigens trotzdem nicht dauerfeuern da ja für jede Waffe der Recoil anders ist und ausserdem wir dadurch auch die horizontale bewegung beeinflusst.

Ich möchte halt das meine oben genannte Funktion genauso ausgeführt wird wie die GetAsyncKeystate, funktioniert leider nicht, wenn du lust hast kannste ja mal icq kommen 169473538
 
Schade, weißt du ob es möglich ist das vielleicht eine Dll. der user32 übergeordnet ist und deshalb die Funktion ausgelassen wird?
Oder greifen programme die DirecMouseInput haben evtl. direct auf die Maus zu, über eigene Treiber?
 
Hab jetzt ein bischen gesucht und immerwieder wird bei solchen situationen auf Rect Strukturen verwiesen, kann das jemand bestätigen?
Scheint relativ kompliziert zu sein so eine Struktur für mein Programm zu schreiben, hat da jemand schon Erfahrungen gemacht?
 

Neue Beiträge

Zurück