Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 241169 (2605)
  Suchen
 Zurück zur Übersicht
 AutorThema: Mausbutton simulieren
M.Heinemann
Datum:04.05.02 16:43 Antwortenals Email verschicken (info@heinemaennchen.de) 


Hat schon mal irgendwer versucht, einen der Mausbutton zu simulieren.

In der Prospeed DLL gibt es eine Funktion, mit der man feststellen kann, welche Taste gedrückt wurde.
Dies zeigt bei dem linken Mausbutton eine 1.

Wenn ich nun mit folgendem Quelltext versuche, diesen Mausbutton zu simulieren, funktioniert dies allerdings nicht.

declare akt_window&

akt_window& = @GetActiveWindow()
@SendKey(akt_window&,1)

end

Hat irgendwer Erfahrungen damit ???

Wäre nett, wenn ihr mir dann antworten könntet.

Habt vielen Dank.

Mfg

M.Heinemann


Rolf Koch
Datum:04.05.02 18:34 Antwortenals Email verschicken (webmaster@rokosoft.de) 


Hallöchen,

versuchs mal hiermit, vielleicht kannste es ja gebrauchen.
declare ende%,x%,y%,button%,listbox%,anzeig$
def @SetMouse(2) !"USER32","SetCursorPos"
x%=100
y%=100
cls
Loadbmp "C:\WINDOWS\SETUP.BMP",0,0;0
Windowtitle "ENDE TASTE ESCAPE"
Let Button%=@CREATE("BUTTON",%hwnd ,"anderes Hintergrundbild",330 ,290 ,200 ,30)
Let Listbox%=@CREATE("LISTBOX",%hwnd ,"",75 ,180 ,130 ,70)
UseFont "Times New Roman",25,0,0,1,0
TextColor RGB(255,255,0),-1
anzeig$="Um ein neues Bild anzuzeigen"
Drawtext 140,13,anzeig$
TextColor RGB(0,0,0),-1
Drawtext 142,10,anzeig$
ClearList
@AddString(Listbox%,"Bild 1")
@AddString(Listbox%,"Bild 2")
@AddString(Listbox%,"Bild 3")
@AddString(Listbox%,"Bild 4")
whilenot equ(%scankey,27)
 if lt(x%,350)
   inc x%
   sleep 5
   @SetMouse(x%,100)
   if equ(x%,320)
   Loadbmp "C:\WINDOWS\SETUP.BMP",0,0;0
   RePaint
       TextColor RGB(255,255,0),-1
       anzeig$="klicken Sie einfach auf den Button..."
       Drawtext 140,13,anzeig$
       TextColor RGB(0,0,0),-1
       Drawtext 142,10,anzeig$
   endif

 elseif equ(x%,350)
   if neq(y%,350)
      inc y%
      sleep 5
      @SetMouse(x%,y%)
   elseif equ(y%,350)
      Windowtitle "MAUS DRÜCKEN"
      sleep 500
      SendMessage (button%,513,0,0)
      sleep 500
      locate 10,10
      Windowtitle "MAUS LOSLASSEN"
      SendMessage (button%,514,0,0)
      Loadbmp "C:\WINDOWS\WOLKEN.BMP",0,0;0
      RePaint
      setfocus (%hwnd)
      sleep 1000
      whilenot equ(x%,128)
         case equ(%scankey,27):end
         if equ(x%,310)
            Loadbmp "C:\WINDOWS\WOLKEN.BMP",0,0;0
            RePaint
            TextColor RGB(255,255,0),-1
            anzeig$="Wollen Sie ein kleines Bild anzeigen?"
            Drawtext 140,13,anzeig$
            TextColor RGB(0,0,0),-1
            Drawtext 142,10,anzeig$
         endif
         dec x%
         sleep 5
         @SetMouse(x%,y%)
         wend
         whilenot equ(y%,245)
         case equ(%scankey,27):end
         if equ(y%,340)
            Loadbmp "C:\WINDOWS\WOLKEN.BMP",0,0;0
            RePaint
            TextColor RGB(255,255,0),-1
            anzeig$="Klicken Sie einfach in die Bildliste"
            Drawtext 140,13,anzeig$
            TextColor RGB(0,0,0),-1
            Drawtext 142,10,anzeig$
         endif
	    dec y%
            sleep 5
            @SetMouse(x%,y%)
         wend
         locate 10,10
         Windowtitle "Eintrag 2 markieren"
         sleep 500
         SendMessage(Listbox%,$0186,1,0) 'LB_SETCURSEL
            Loadbmp "C:\WINDOWS\WOLKEN.BMP",0,0;0
            RePaint
            TextColor RGB(255,255,0),-1
            anzeig$="Viel Spaß mit dem Programm!"
            Drawtext 140,13,anzeig$
            TextColor RGB(0,0,0),-1
            Drawtext 142,10,anzeig$
            LoadBmp "C:\WINDOWS\KACHELN.BMP",50,50;0
        sleep 4000
         end
   endif
 endif

wend



M.Heinemann
Datum:04.05.02 18:52 Antwortenals Email verschicken (info@heinemaennchen.de) 


Das ist schon mal ein guten Ansatz. Danke.

Aber das Problem ist, das ich das Handle des Objects brauche, worauf ich den Mausklick anwenden möchte.

Was ich möchte ist folgendes:

Ich habe zum Beispiel einen gewissen Text im Editor geöffnet.
Nun setze ich den Mauszeiger per Befehl an eine gewisse Textstelle im Editorfenster und möchte, das dort der Text Cursor erscheint. Geht doch manuell mit der Maus auch (hinbewegen und klicken).

Habt ihr noch eine Idee?

Wäre sehr dankbar.

Bis dann.



John Schroeter
Datum:05.05.02 01:17 Antwortenals Email verschicken  


N'abend.
Auch ich stand vor diesem Problem, und bis auf das oben aufgeführte Provisorium habe ich bis heute nichts gefunden.
Die Treiber meiner USB-Maus müssen Windows doch auch mitteilen, dass ein Mausclick getätigt wurde. Es würde mich nicht wundern wenn es irgendeine undokumentierte WinAPI-Funktion des Rätsels Lösung wäre...

Mfg John Schroeter


Dr. Mabuse
Datum:05.05.02 14:21 Antwortenals Email verschicken  


Na vielleicht sollten wir mal unseren API Guru Thorsten fragen ?


M.Heinemann
Datum: 05.05.02 17:17 Antwortenals Email verschicken (info@heinemaennchen.de) 


So, nach Stundenlager arbeit nun doch gefunden:

Den linken Mausbutton simuliert man so:

Def mouse_event(5) !"USER32","mouse_event"
mouse_event(2, 0, 0, 0, 0); 'Left Button down
mouse_event(3, 0, 0, 0, 0); 'Left Button up

So, wers gebrauchen kann, sollte sich das mal schnell abspeichern.

Ist echt schwer zu finden.

Aber trotzdem danke für eure Hilfe.

Mfg
M.Heinemann


 Zurück zur Übersicht