Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 13:54

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Doppelklick auf Liste?

Discussion on Doppelklick auf Liste? within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jul 2009
Posts: 2,241
Received Thanks: 848
Doppelklick auf Liste?

Ich habe eine Liste (GUICtrlCreateList)... wenn ich einen Doppelklick auf einen Eintrag mache, soll eine Funktion ausgeführt werden.

Mir gehts also um den Doppelklick, ne Idee?

EDIT: Vllt ist's wichtig - ich benutz OnEventMode
mipez is offline  
Old 05/08/2010, 14:26   #2
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
PHP Code:
Func _DoubleClick (  )
Local $controlID$read$timestamp$dll$executed
$controlID 
3
$read 
GUICtrlRead ($controlID)

$dll DllOpen "user32.dll" )
$timestamp TimerInit()
$executed False

Do
    If 
_IsPressed "01"$dll ) And GUICtrlRead $controlID ) = $read And Then

            $executed 
True
            MsgBox 
0"""Du hast " $read " zweimal angeklickt!")

    EndIf
Until TimerDiff $timestamp ) > 750 Or $executed
DllClose 
$dll )
EndFunc 
Das hab ich jetzt mal kurzfristig zusammengeschustert, solltest vllt. noch einbauen, dass er nicht reagiert, wenn man auch außerhalb der anzusteuernden Schaltfläche klickt
Musst natürlich noch die Misc.au3 in dein Script einbinden.
.nAno is offline  
Thanks
1 User
Old 05/08/2010, 15:54   #3
 
elite*gold: 0
Join Date: Jul 2009
Posts: 2,241
Received Thanks: 848
Erstmal danke, aber geht das nicht auch mit GUICtrlSetOnEvent?
mipez is offline  
Old 05/08/2010, 16:06   #4
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
Das hier ist die Funktion die du in GUICtrlSetOnEvent einbauen musst, wenn man weiss wie geht das aber normalerweise auch mit GUIGetMsg
.nAno is offline  
Old 05/08/2010, 16:23   #5
 
elite*gold: 0
Join Date: Jul 2009
Posts: 2,241
Received Thanks: 848
Quote:
Originally Posted by .nAno View Post
Das hier ist die Funktion die du in GUICtrlSetOnEvent einbauen musst, wenn man weiss wie geht das aber normalerweise auch mit GUIGetMsg
Hrm...
PHP Code:
If GuiCtrlRead($liste) <> "" Then 
Problem wäre hier nur, dass ich eine beliebige Anzahl an Einträgen habe. Und es soll ja für jeden Eintrag eine angepasste Funktion ausführen...
mipez is offline  
Old 05/08/2010, 17:28   #6
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
Wo liegt das Problem?
Tausch die MsgBox doch einfach gegen eine Switch-Case Anweisung aus in der alle Alternativen aufgeführt sind.
Falls der Inhalt der List aus nem Array stammt kannst du aber besser ne Überprüfung mit einer For-Schleife machen
.nAno is offline  
Old 05/08/2010, 21:45   #7
 
elite*gold: 0
Join Date: Jul 2009
Posts: 2,241
Received Thanks: 848
Quote:
Originally Posted by .nAno View Post
Wo liegt das Problem?
Tausch die MsgBox doch einfach gegen eine Switch-Case Anweisung aus in der alle Alternativen aufgeführt sind.
Falls der Inhalt der List aus nem Array stammt kannst du aber besser ne Überprüfung mit einer For-Schleife machen
Ich blick nich durch dein Codeschnipsel durch ;D
mipez is offline  
Old 05/09/2010, 13:34   #8
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
Hier mal der gesamte Code, die MsgBox, die anzeigt was man 2mal angeklickt hat, kann einfach gegen deine Funktion ausgetauscht werden, der Rest sollte sich von selbst erklären

Ich hab außerdem noch ne kleine Extra-Funktion erstellt, die das alles noch ein wenig fehlerfreier macht

PHP Code:
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>

AutoItSetOption "GuiOnEventMode" )

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Form1"633447192124)
$List1 GUICtrlCreateList(""4816273305)
GUICtrlSetData $List1"1|2|3|4|5|6" )
GUICtrlSetOnEvent $List1"_DoubleClick" )
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1=1

WEnd

Func _Exit 
()
Exit
EndFunc

Func _MouseOverControl 
()
Local $WindowPos$ControlPos$MousePos
Dim $WindowPos
$ControlPos$MousePos

$WindowPos 
WinGetPos ( @GUI_WinHandle )
$ControlPos ControlGetPos ( @GUI_WinHandle"", @GUI_CtrlId )
$MousePos MouseGetPos ()


If 
$MousePos[0] > $WindowPos[0] + $ControlPos[0] And  $MousePos[1] > $WindowPos[1] + $ControlPos[1] And $MousePos[0] < $WindowPos[0] + $ControlPos[0] + $ControlPos[2] And $MousePos[1] < $WindowPos[1] + $ControlPos[1] + $ControlPos[3Then
    
Return True
Else
    Return 
False
EndIf
EndFunc

Func _DoubleClick 
(  )
Local $controlID$read$timestamp$dll$executed
$controlID 
= @GUI_CtrlId
$read 
GUICtrlRead ($controlID)

$dll DllOpen "user32.dll" )
$timestamp TimerInit()
$executed False

Do
    If 
_IsPressed "01"$dll ) And GUICtrlRead $controlID ) = $read And _MouseOverControl () Then

            $executed 
True
            MsgBox 
0"""Du hast " $read " zweimal angeklickt!")

    EndIf
Until TimerDiff $timestamp ) > 750 Or $executed
DllClose 
$dll )
EndFunc 
.nAno is offline  
Old 05/09/2010, 13:42   #9
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Ist so alles richtig, aber ein Tipp um dir Schreibarbeit zu ersparen.
Die Hilfe sagt, das bei _IsPressed der Parameter zur Dll Angabe Optional ist. Das bedeutet, du kannst den ganzen Code mit DllOpen und so weg lassen
HardCore.1337 is offline  
Old 05/09/2010, 13:44   #10
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
Ich weiss, nur ich habs mir so angewöhnt, um mögliche Fehler die dadurch entstehen könnten zu vermeiden^^
.nAno is offline  
Old 05/09/2010, 14:15   #11
 
elite*gold: 0
Join Date: Jul 2009
Posts: 2,241
Received Thanks: 848
Hm... dieses @GUI_CtrlId kapier ich iwie nich ganz... wärs nich sinnvoller die ID der Liste einzusetzen?
mipez is offline  
Old 05/09/2010, 14:27   #12
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
@GUI_CtrlID ist nen Makro, der die ID der zuletzt angeklickte GUIControl zurückgibt

Das entspricht der ID der ListBox, wenn du sie zuletzt angeklickt hast (was bei OnEventMode der Fall sein muss um die Funktion mit dem Makro aufzurufen
.nAno is offline  
Old 05/09/2010, 14:29   #13
 
elite*gold: 0
Join Date: Jul 2009
Posts: 2,241
Received Thanks: 848
K, ich habs...

EDIT: Also kann ich das Makro für jedes beliebiges Control verwenden?

Ach ja...
PHP Code:
Func _play()
    
$mis3 _GUICtrlListBox_GetCount($playlist)
For 
$i 0 To $mis3 -1
    $liste 
_GUICtrlListBox_GetText($playlist,$i)
    If 
FileExists($listeThen
        _SoundPlay
($liste)
        Switch 
GUiGetMsg ()
        Case 
$GUI_EVENT_CLOSE
        
Exit
        Case 
$stop
        _SoundStop
($liste)
        
ExitLoop
        
EndSwitch
    Else
        
MsgBox(0,"Error","Couldn't find file on this path")
        
ExitLoop
    
EndIf
Next
EndFunc 
Problem: $stop-Button funzt net :>
Hab aber schon zig mal die Hilfe durchgekramt...
mipez is offline  
Old 05/09/2010, 14:35   #14
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
Du nutzt (immernoch) GUIOnEventMode, oder?

GUIGetMsg () funzt während diese Option aktiviert ist nicht, du müsstest die also deaktivieren
.nAno is offline  
Old 05/09/2010, 14:46   #15
 
elite*gold: 0
Join Date: Jul 2009
Posts: 2,241
Received Thanks: 848
Quote:
Originally Posted by .nAno View Post
Du nutzt (immernoch) GUIOnEventMode, oder?

GUIGetMsg () funzt während diese Option aktiviert ist nicht, du müsstest die also deaktivieren
Ahem, $GUI_EVENT_CLOSE funktioniert xD
mipez is offline  
Reply


Similar Threads Similar Threads
Doppelklick mit AutoIt in CheatEngine
07/30/2010 - AutoIt - 20 Replies
Hallo Leute ich möchte einen mausklick simulieren,und damit in cheat engine eine value ändern. wenn ich aber doppelklick auf die adresse mache,damit das fenster mit der aktuellen value auf geht passiert nichts. ebenso kann ich das nicht machen indem ich rechtsklick mache dann chance record und dann value bei dem letzten schritt wenn er auf value klicken soll passiert dies einfach nicht. den doppelklickt woltle ich mit MouseClick ("left" ,812,500,2)machen und den normalen klick mit ...
[Liste]Die Große Hitfaker Proxy Liste [Selbstgemacht]
04/08/2010 - Metin2 PServer Guides & Strategies - 5 Replies
Nichts falsche section sry Kan das jmd Löschen ? Wäre net
Hilfe?:Doppelklick auf gefundenen Pixel (AutoIt)
04/02/2009 - Metin2 - 7 Replies
Hallo, Ich hab jetzt einen Farmbot gescriptet der recht gut funktioniert. er macht dies Global $Paused HotKeySet("{F5}", "TogglePause") while 1 Send("{SPACE}")
DoppelKlick
08/21/2008 - General Coding - 2 Replies
Also ich benutze seit heute AutoITv3 und einen Mouseklick macht man ja so: MouseClick("left", 50, 665) Aber wie macht man einen doppelklick und wie hält man die Mouse gedrückt und läst sie wieder los ??



All times are GMT +1. The time now is 13:55.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.