Avatar billede tjalfe_1234 Nybegynder
14. december 2004 - 18:34 Der er 5 kommentarer og
1 løsning

Opdatering af Mouse position/Farve

Jeg har et program som, clicker med venstre musetast, hvis det er en bestemt farve, der hvor musen er placeret. Problemet er bare at den kun clicker hvis man rykker musen over farven! Hvis fx musen er placeret over et billed, så klikkes der, billedet ændres, der kommer et nyt billed frem med den samme farve og her clickes der ikke med venstre musetast! Musens farve skal opdateres! Jeg har prøvet det med at programmet rykker musen af sig selv, men heller ik der opdateres farven!

Her er koden for formen! Der hører også 2 Moduler med

Option Explicit

Private Declare Function SetCursorPos Lib "user32" _
(ByVal x As Long, ByVal y As Long) 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)

Private Const MOUSEEVENTF_LEFTDOWN  As Long = &H2
Private Const MOUSEEVENTF_LEFTUP    As Long = &H4

Private Const MOUSEEVENTF_MIDDLEDOWN As Long = &H20
Private Const MOUSEEVENTF_MIDDLEUP  As Long = &H40

Private Const MOUSEEVENTF_RIGHTDOWN  As Long = &H8
Private Const MOUSEEVENTF_RIGHTUP    As Long = &H10



' Denne funktion bliver kaldt under modMouseHook.bas
Public Sub API_MouseMove(x As Long, y As Long)
Dim lColor As Long
Dim strHex As String

  lColor = GetColor(x, y)
  strHex = LNGtoHEX(lColor)

  picColor.BackColor = lColor
  txtHexB.Text = "#" & strHex

  If UCase$(txtHexA.Text) = txtHexB.Text Then
    ' click med musen.
    mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
  End If
End Sub

' Denne funktion bliver kaldt under modMouseHook.bas
Public Sub API_MouseClick()
  '--
End Sub


Private Sub cmdAbout_Click()
    frmAbout.Visible = True
End Sub

Private Sub cmdClickTid_Click()
    frmClickTid.Visible = True
    frmMain.Visible = False
End Sub

Private Sub cmdStart_Click()
    Call SetMouseHook
    Timer1.Enabled = True
    If opt1.Value = True Then
    txtHexA.Text = "#243302"
    lblValg.BackColor = RGB(36, 51, 2)
    ElseIf opt2.Value = True Then
    txtHexA.Text = "#330E02"
    lblValg.BackColor = RGB(51, 14, 2)
    End If
End Sub

Private Sub cmdStop_Click()
    Call UnMouseHook
    Timer1.Enabled = False
End Sub

Public Sub Timer1_Timer()
    Call SetMouseHook
    Call UnMouseHook
    Call SetMouseHook
End Sub

Timeren er også et forsøg jeg har prøvet hvor at den henter / Slutter / henter, men det virker heller ikke!

Hvis der er spørgsmål, så spørg endelig!
Avatar billede sjh Nybegynder
14. december 2004 - 19:19 #1
Hvis du havede sagt fra starten hvad det skulle bruges til så kunne du ha sparet Din og Min tid på det pjat.. :D


'----------------------------- Form1 -----------------------------
Option Explicit

Private Type POINTAPI
        X As Long
        Y As Long
End Type

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public Function LNGtoHEX(LngColor As Long) As String
Dim i As Integer
Dim bytRGB(2) As Byte
Dim sHex As String
CopyMemory bytRGB(0), LngColor, 3
  For i = 0 To 2
    sHex = sHex & IIf(bytRGB(i) < 16, "0", "") & Hex$(bytRGB(i))
  Next
LNGtoHEX = sHex
End Function

Private Sub Form_Load()
  Timer1.Interval = 50
  Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim mPt As POINTAPI
Dim lColor As Long
  If GetCursorPos(mPt) Then
    With mPt
      lColor = GetPixel(GetDC(0), .X, .Y)
    End With
  End If
  If lColor >= 0 Then
    txtHexA.Text = "#" & LNGtoHEX(lColor)
    lblValg.BackColor = lColor
  End If
End Sub
'----------------------------- Form1 -----------------------------
Avatar billede sjh Nybegynder
14. december 2004 - 19:20 #2
du skal så ikke bruge det som jeg lavede til dig sidst..
Avatar billede sjh Nybegynder
14. december 2004 - 19:22 #3
jo du skal nok bruge det med musen..
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
Avatar billede tjalfe_1234 Nybegynder
14. december 2004 - 20:03 #4
ihh tak! Men fatter ikke lige hvad det er jeg skal bruge og ikke bruge! Skal de 2 moduler stadig være der? Og hvor skal det med musen stå?
Avatar billede tjalfe_1234 Nybegynder
14. december 2004 - 20:06 #5
Nevermind! Har fået det til at virke! Tusinde tak igen!
Avatar billede sjh Nybegynder
15. december 2004 - 04:36 #6
selv tak ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester