Français
Forum

Mausklick simulieren

 
- page 1 -



Timotheus
Salut,

j'ai un Problem. je voudrais à un certain Stelle im Programme la fenêtre une EditBox erstellen. qui y-Koordinate wird par den Mausklick ausgewählt, et qui x-K. ist 0.
dans cette Éditer-Box peux mais déjà un Text stehen. c'est pourquoi muss Je l' Mausklick encore einmal wiederholen, sobald cela Éditer erzeugt wurde. Dadurch mets sich qui Cursor im Éditer oui c'est ca sur qui richtige Stelle, comment dans einem Multiedit. comment fais je cela ?

Timo
 
11.09.2004  
 



 
- page 1 -



Michael
Dell
Sorry, kleiner Irrtum!

Versuchs la fois hiermit, es mets den Cursor à den Anfang:
KompilierenMarqueSéparation
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
11.09.2004  
 




Timotheus
pas entier, si zum Beispiel qui souris quelque chose plus weg vom linken Fensterrand gedrückt wird, ensuite muss qui Schreibbalken à z.B. qui zweiten Stelle stehen. Kurz et simple: comment peux je une Mausklick à un certain Stelle simulieren?

Timo
 
12.09.2004  
 




Michael
Dell
Ok, ensuite la fois so:
KompilierenMarqueSéparation
Def GSC(1)           !User32.dll,GetSysColor
Def ButtonUp(1)      Equ(If(Equ(%Lastmessage,514),1,If(Equ(%Lastmessage,512),SetFocus(&(1)),0)),1)
Def SetCurPosNull(1) SendKey(@&(1),36)  Setzt den Cursor an erste Stelle
Def SetCurPosEnd(1)  SendKey(@&(1),35)  Setzt den Cursor an letzte Stelle

Proc SetCurPos                          Setzt den Cursor an beliebige Stelle

    Parameters hndl&,anz&
    Case Lt(anz&,1)
    SendKey(hndl&,36)

    WhileLoop 1,@&(2),1

        SendKey(hndl&,39)

    EndWhile

EndProc

declare bt01&,ed01&,edak%
Clear bt01&,ed01&,edak%

Proc MakeED

    Parameters HWHndl&,Text$,x%,y%,b%,h%

    If Equ(edak%,0)                                    wenn Edit-Control nicht existent dann...

        ed01& = create(Edit,HWHndl&,Text$,x%,y%,b%,h%)  Erzweuge Edit-Control mit Text inhalt
        SetFocus(ed01&)                                  Setze Focus auf Edit-Control
        SetCurPos(ed01&,8)                              Setzt den Cursor an Stelle 8
        Sleep 1000
        SetCurPos(ed01&,6)                              Setzt den Cursor an Stelle 6
        Sleep 1000
        SetCurPos(ed01&,4)                              Setzt den Cursor an Stelle 4
        Sleep 1000
        SetCurPos(ed01&,2)                              Setzt den Cursor an Stelle 2
        Sleep 1000
        SetCurPosNull(ed01&)                            Setzt den Cursor an erste Stelle
        Sleep 1000
        SetCurPosEnd(ed01&)                             Setzt den Cursor an letzte Stelle
        Sleep 1000
        SetCurPosNull(ed01&)                            Setzt den Cursor an erste Stelle
        Sleep 1000

    EndIf

    Return 1

EndProc

SetTrueColor 1
WindowStyle 26
Window Add(%maxX,10),0-500,66
Cls GSC(15)
bt01& = create(Button,%HWnd,Erstelle Edit,360,10,120,22)
Window 0,0-500,66

WhileNot Or(Equ(%MenuItem,-2),Equ(%MenuItem,-4000))

    GetMessage

    If GetFocus(bt01&)

        If ButtonUp(%HWnd)

            edak% = MakeED(%HWnd,Hallolo, na wie gethts?,10,10,340,22)
            Case edak%: SetFocus(ed01&)

        EndIf

    EndIf

EndWhi
Fin

Michael...

P.S.: hab je alles dans qui Profan- Aider nachgeschlagen!
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
12.09.2004  
 




Timotheus
non cela aussi pas!

ici la fois un Demo:
KompilierenMarqueSéparation
ici fehlt seulement qui Def ou bien Proc SimuliereMausklick. dans diesem Beispiel ist qui Schreibbalken par cela wiederholte klicken à qui richtigen Stelle. c'est comment si on dans un vorhandenes Éditer klickt, ensuite mets sich qui poutre oui aussi automatisch à qui Stelle qui im Éditer angeklickt wurde.

Timo
 
12.09.2004  
 



So?
KompilierenMarqueSéparation
cls
declare x%,a&,b&

while 1

    waitinput

    if %Mousekey = 1

        x% = %Mousex
        a& = Create(Edit,%Hwnd,Hallo,0,%Mousey - 12,600,25)
        @SENDMESSAGE(a&,$00B1,0,256)
        @SETFOCUS(A&)
        Sleep 1000
        destroyWindow(a&)

    endif

Wend


ou bien so??
KompilierenMarqueSéparation
DEF @mouse_event(5)!User32,mouse_event
CLS
declare x%,a&,b&

tandis que 1

    Waitinput

    si %Mousekey = 1

        x% = %Mousex
        a& = Créer(Éditer,%Hwnd,allô,0,%Mousey - 12,600,25)
        @mouse_event(2,x%,%MOUSEY,0,0)
        @mouse_event(4,x%,%MOUSEY,0,0)
        @mouse_event(2,x%,%MOUSEY,0,0)
        @mouse_event(4,x%,%MOUSEY,0,0)
        Sleep 1000
        destroyWindow(a&)

    endif

Wend

 
12.09.2004  
 




Dietmar
Horn
encore comme Ergänzung (zur Antwort de Andreas)

DEF @mouse_event(5)!User32,mouse_event

mouse_event(N,dx%,dy%,0,0)

=> löst une künstliche Mausbewegung et une Mausklick aus.
=> hat keinen Rückgabewert

N: gibt à, quelle Bouton de la souris gedrückt (simuliert) volonté soll

N = $1 - Double-cliquez sur simulieren
N = $2 - linke Bouton de la souris runterdrücken
N = $4 - linke Bouton de la souris loslassen
N = $8 - rechte Bouton de la souris runterdrücken
N = $10 - rechte Bouton de la souris loslassen
N = $20 - mittlere Bouton de la souris runterdrücken (si vorhanden)
N = $40 - mittlere Bouton de la souris loslassen (si vorhanden)

dx% = x-Koordinate qui Mausposition (ou bien en Changement, wohin vous de qui derzeitigen Position aus gesehen, hingesetzt volonté soll)
dy% = y-Koordinate qui Mausposition (ou bien en ...)

qui 4. et 5. paramètre avons aucun signification, deswegen alors jeweils sur 0 mettons.

Eventuell dois Du encore légèrement avec den Mauskoordinaten experimentieren, sais pas, si cet relativ ou bien absolu sommes, si bezogen sur den Desktop, cela Hauptfenster, ou bien cela Dialogfenster. Versuche dabei aussi la fois $8000 chez den Werten pour N trop addieren, alors N = $8000 + $2, ou bien N = $2 mettons. $8000 = MOUSEEVENTF_ABSOLUTE

Salut
Dietmar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
12.09.2004  
 




Timotheus
merci

Timo
 
12.09.2004  
 




Uwe
''Pascal''
Niemeier
allô gens!

Gibts car qui API mouse_event  sous XP/NT überhaupt encore?
citation de MSDN:


The mouse_event function synthesizes mouse motion and button clicks.
Windows NT: This function has been superseded. Use SendInput instead.


SeeYou
Pascal
 
13.09.2004  
 




Michael
Dell
Microsoft voulais mouse_event déjà früher ersetzen, cela steht jedenfalls so dans qui WinHlp no Win32s. je denk aus Supportgründen funktioniert es im Moment encore, on sollte wohl dans Zukunft puis verzichten. dans Longhorn wirds wohl pas plus aller.

Michael...
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
13.09.2004  
 



 
- page 2 -



Michael
Dell
ici cela ganze sans mouse_event:
KompilierenMarqueSéparation
Declare a&,x&,y&,Fontx&,EDminX&
FontX&  = 8                                                 Font- Breite
EDminX& = 10                                                Edit- Control Startpunkt (X min)
Def SetCurMark(2) sendmessage(@&(1),$00B1,@&(2),0)          Setzt Markierung

Proc SetCurPos                                              Setzt den Cursor an beliebige Stelle

    Parameters hndl&,anz&
    SetFocus(hndl&)
    SendKey(hndl&,36)
    Case Lt(anz&,1): Return

    WhileLoop 1,@&(2),1

        SendKey(hndl&,39)

    EndWhile

EndProc

Proc CalkCurPos

    Parameters EDhndl&
    Declare p1&,p2&

    If Gt(x&,Add(EDminX&,Mul(Len(GetText$(EDhndl&)),FontX&)))  Mauszeiger hinter Textende

        p1& = Len(GetText$(EDhndl&))

    ElseIf Gt(x&,EDminX&)                                     Mauszeiger im Text

        p1& = Int(Div(Sub(x&,EDminX&),FontX&))
        Else                                                      Mauszeiger vor Text
        p1& = 0

    EndIf

    SetCurPos(EDhndl&,p1&)                                    Setzt den Cursor auf Mausposition
    SetCurMark(EDhndl&,p1&)                                   Setzt Markierung 0 bis Mausposition

EndProc

CLS
UseFont Arial,16,FontX&,1,0,0
SetDialogFont 1

while 1

    Waitinput

    if %Mousekey = 1

        x& = %Mousex
        y& = %Mousey
        a& = Create(Edit,%Hwnd,Hallolo, na wie geht`s den so?,EDminX&,y& - 12,600,25)
        CalkCurPos(a&)
        Sleep 2000
        destroyWindow(a&)

    endif

wend

SetDialogFont 0
s4 href='./../../funktionsreferenzen/XProfan/end/'>Fin

seulement afin de sehn cela es aussi dans reinem Profan allez.

Michael...
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
14.09.2004  
 



allô Michael...

Vollkommen richtig!! qui Message steht déjà dans mon ersten Voir le texte source un un peu plus dessus comme Alternative trop MOUSE_EVENT. mais il voulais so absolument une Double-cliquez sur.
je sags oui - assez unideal et unübersichtlich, si on den Voir le texte source pas tout de suite sieht...
 
14.09.2004  
 



Jaja OK AH, je habs oui verstanden.

je überleg mir oui déjà quoi....

iF
 
14.09.2004  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

5.553 Views

Untitledvor 0 min.
Sven Bader04.07.2023
H.Brill06.02.2022
AndreasS29.11.2018
RICOSCH17.06.2016
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie