::emanuel::
Erfahrenes Mitglied
Hi Freunde!
Hab ein Problem, und zwar möchte ich ein Programm schreiben, das einen Mausklick irgendwo am Bildschirm durchführt, und zwar aufgrund von Koordinaten in einer INI-Datei.
Dass der Mausklick durchgeführt wird, hab ich schon zusammengebracht, aber die Kooridnaten hab ich in Visual Basic im Quelltext festgelegt. Aber nachdem ich bei anderen PCs nicht VisualBasic zur Änderung dieses Quelltextes habe, muss ich die Kooridnaten aus einer externen INI Datei auslesen, damit ich die Koordinaten auch anpassen kann.
Hier mein Code, den ich bis jetzt programmiert habe:
Wenn ich jetzt das Projekt kompilieren möchte, kommt mir in der Zeile
folgender Fehler:
Fehler beim Kompilieren:
Argumentty ByRef unverträglich.
Tja, soweit ich das sehe, sind die X und Y Kooridaten nicht auf eine Variable verweisbar.
Tja, wass soll ich jetzt tun, damit dies aber doch möglich ist. Bin mir fast sicher dass es nur eine Kleinigkeit ist.
Danke auf jeden Fall für jede Hilfe!
LG,
Emanuel
Hab ein Problem, und zwar möchte ich ein Programm schreiben, das einen Mausklick irgendwo am Bildschirm durchführt, und zwar aufgrund von Koordinaten in einer INI-Datei.
Dass der Mausklick durchgeführt wird, hab ich schon zusammengebracht, aber die Kooridnaten hab ich in Visual Basic im Quelltext festgelegt. Aber nachdem ich bei anderen PCs nicht VisualBasic zur Änderung dieses Quelltextes habe, muss ich die Kooridnaten aus einer externen INI Datei auslesen, damit ich die Koordinaten auch anpassen kann.
Hier mein Code, den ich bis jetzt programmiert habe:
Code:
Option Explicit
'zunächst die benötigten API-Deklarationen
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)
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Declare Function GetPrivateProfileString Lib _
"kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal _
lpKeyName As Any, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize _
As Long, ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileSection Lib _
"kernel32" Alias "GetPrivateProfileSectionA" _
(ByVal lpAppName As String, ByVal lpReturnedString _
As String, ByVal nSize As Long, ByVal lpFileName _
As String) As Long
Dim File$, Field() As String
Dim Section As String
Dim X As String
Dim Y As String
Public Sub Mausklick(Optional Button As _
MouseButtonConstants = vbLeftButton, _
Optional XPos As Long = -1, _
Optional YPos As Long = -1)
'Mauszeiger positionieren
If XPos <> -1 Or YPos <> -1 Then
mouse_event MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, _
XPos / Screen.Width * 990000, _
YPos / Screen.Height * 990000, 0, 0
End If
'Mausklick simulieren
Select Case Button
'linke Maustaste
Case vbLeftButton
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
'mittlere Maustaste
Case vbMiddleButton
mouse_event MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0
'rechte Maustaste
Case vbRightButton
mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
End Select
End Sub
Private Sub Form_Activate()
Dim X%
'Pfad der neuen ini-Datei
File = App.Path & "\Koordinaten.ini"
Section = "Koordinaten"
X = "X"
Y = "Y"
X = INIGetValue(File, Section, X)
Y = INIGetValue(File, Section, Y)
Mausklick vbLeftButton, X, Y
Unload Mausklickfenster
End Function
Private Function INIGetValue(ByVal Path$, ByVal Sect$, ByVal Key$) _
As String
Dim Result&, Buffer$
'Wert lesen
Buffer = Space$(32)
Result = GetPrivateProfileString(Sect, Key, vbNullString, _
Buffer, Len(Buffer), Path)
INIGetValue = Left$(Buffer, Result)
End Function
Private Sub INIGetArray(ByVal Path$, ByVal Sect$, xArray() As String)
Dim Result&, Buffer$
Dim l%, p%, z%
'String lesen
Buffer = Space(32767)
Result = GetPrivateProfileSection(Sect, Buffer, Len(Buffer), Path)
Buffer = Left$(Buffer, Result)
If Buffer <> "" Then
'String mit Trennzeichen Chr$(0) in ein Feld umwandeln
l = 1
ReDim xArray(0)
Do While l < Result
p = InStr(l, Buffer, Chr$(0))
If p = 0 Then Exit Do
xArray(z) = Mid$(Buffer, l, p - l)
z = z + 1
ReDim Preserve xArray(0 To z)
l = p + 1
Loop
End If
End Sub
Code:
Mausklick vbLeftButton, X, Y
Fehler beim Kompilieren:
Argumentty ByRef unverträglich.
Tja, soweit ich das sehe, sind die X und Y Kooridaten nicht auf eine Variable verweisbar.
Tja, wass soll ich jetzt tun, damit dies aber doch möglich ist. Bin mir fast sicher dass es nur eine Kleinigkeit ist.
Danke auf jeden Fall für jede Hilfe!
LG,
Emanuel