Beiträge von XovoxKingdom
-
-
Ich will den alten Thread (auf den ja oben schon hingewiesen wurde) nicht nochmal ausbuddeln.
Trotzdem ist die folgende Abwandlung für den einen oder anderen interessant:
(Es sollte hier bereits gesagt werden, dass ich die Version von Bugfix etwas angepasst habe und
so den (eigenen) Buttons das "normale" Verhalten gegeben habe.)
Probierts aus (das Bild müsst ihr aber selber auswählen):Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <Misc.au3>
Global $pic = @ScriptDir & '\BILD.bmp', $DLL = DllOpen('user32.dll')$gui = GUICreate("Test", Default, Default, -1, -1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$btnPic = GUICtrlCreatePic($pic, 30, 40, 100, 100)
GUISetState()While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Select
Case $msg = $btnPic
$W = _AnimButton($gui, $btnPic)
If $W = 1 Then
MsgBox(0, "KLICK innerhalb", 1)
Else
MsgBox(0, "KLICK außerhalb", 0)
EndIfCase $msg = $GUI_EVENT_CLOSE
[/autoit] [autoit][/autoit] [autoit]
Exit
EndSelect
WEnd;==================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _AnimButton($IDgui, $IDbtn [, $delay=150])
; Description: animiert ein Pic, wie einen geklickten Button
; Parameter(s): $IDgui ID der GUI
; $IDbtn ID des Picture als Button
;==================================================================================================
Func _AnimButton($IDgui, $IDbtn)
Local $pos = ControlGetPos($IDgui, '', $IDbtn), $p
ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1] + 1, $pos[2] - 1, $pos[3] - 1)While _IsPressed("01", $DLL)
[/autoit] [autoit][/autoit] [autoit]
$p = GUIGetCursorInfo()
If $p[0] + 1 > $pos[0] And $p[0] < $pos[0] + $pos[2] + 1 And $p[1] + 1 > $pos[1] And $p[1] < $pos[1] + $pos[3] + 1 Then
ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1] + 1, $pos[2] - 1, $pos[3] - 1)
Else
ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1], $pos[2], $pos[3])
EndIfWEnd
[/autoit]
If $p[0] + 1 > $pos[0] And $p[0] < $pos[0] + $pos[2] And $p[1] + 1 > $pos[1] And $p[1] < $pos[1] + $pos[3] Then
ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1], $pos[2], $pos[3])
Return 1
Else
ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1], $pos[2], $pos[3])
Return 0
EndIf
EndFunc ;==>_AnimButton von Bugfix (abgewandelt von XovoxKingdom)
EDIT: Anpassung des Bildfeldes (+1), da man ja nur IN das Feld klicken soll/darf! -
Ich habe mal ein Beispiel mit ProgressOn gemacht:
[autoit]$Zeit=10
[/autoit]
$Z=$Zeit*1000
$x=TimerInit()
ProgressOn("TEST - 10 Sekunden","10 Sekunden!")
While TimerDiff($x) < $Z
$p=Round(TimerDiff($x)*100/$Z,0)
ProgressSet($p,$p,"10 Sekunden")
Sleep(10)
WEnd
Sleep(500)
ProgressOff()
MsgBox(0,"ENDE!","Fertig")
Statt ProgressSet musst du bei deiner GUI version Guictrlsetdata benutzen! -
Funktionieren tut es eigentlich sehr gut.
[autoit]
Du kannst auch Imagesearch benutzen.
Sobald du in den Genuss des Findens des richtigen Fensters gekommen bist,
kannst du ja einfach mit dem Handle weitermachen.
Die passende Funktion ist dann:WinGetHandle("Fenstertitle/Handle")
[/autoit]
[autoit]
wenn du also das richtige Fenster aktiviert hast, kannst du es folgendermaßen automatisieren:$Handle=WinGetHandle("")
[/autoit]
; Bsp:
Controlclick($Handle, "text", controlID) -
hmm... mit der zweiten Schleife wäre das in der tat vielleicht nicht optimal...
[autoit]
vielleicht hilft dir der Ansatz (Pseudocode)Adlibregister("Click")
[/autoit]
Func Click()
$msg=guigetmsg()
select
case _ispressed(...)
;...
case $msg=$Input
;...
....
endfunc
[autoit]
PS: du musst ja via _ispressed nur solange warten bis die Taste wieder losgelassen wird oder? wenn ja probier diesen Ansatz:While _ispressed(...)
[/autoit]
sleep(10)
wend
select
case ... -
das wäre sehr nett von dir

PS: Wenn du Hilfe brauchst, würde ich gerne weitere Unterstützung anbieten. PN me einfach -
Vielleicht ist es nicht perfekt, aber es funktioniert^^
[autoit]#include<string.au3>
[/autoit]
#include<array.au3>
#include<Inet.au3>
$sLink="http://www.youtube.com/watch?v=YastlxhifIc"
$p=StringRegExp(_INetGetSource($sLink),'title="(.*)"',1)
MsgBox(0,"Youtube Title",$sLink&" = "&$p[0]) -
Ich habe soeben das Programm "einfach mal so" gestartet und einige mir bekannten Tricks probiert.
Unter Vista (32bit) hab ich einfach STRG+ALT+ENTF. gedrückt und Abmelden ausgewählt.
Da ich noch einige Prozesse offen hatte, fragte mich ein Infofenster, ob ich alle Prozesse beenden möchte.
DeskLock wurde sofort beendet. Wenn man einfach auf Abbrechen klickt, so kann man den Desktop wieder frei benutzen.
Mögliche Lösung wäre (wie oben schon gesagt wurde) die Idee mit den 2 .exe Dateien.Ich weiss nicht was passieren würde, wenn es keine aktiven Prozesse gäbe.EDIT: Sry
.. hab es heute morgen festgestellt, aber beim antworten nicht mehr alle Posts gelesen 
-
Hallo,
ich würde gerne meinen PC (bzw. eher mein Notebook) automatisch starten lassen und das dann auch noch zu einer bestimmten Zeit.
Ich hab mal etwas von einer BIOS Einstellung gehört (Wake-on-Power oder so ähnlich).
Leider habe ich diese Funktion nicht gefunden als ich das Menü per F2 direkt beim Startvorgang gedrückt habe.
(Notebook: Asus Aspire 7738G - Vista 32bit)
Vielleicht gibts ja noch eine Software mit der man die Einstellungen im BIOS anpassen kann
Wie die Wake-on-Lan Funktion funktioniert weiß ich nicht und ob das das richtige ist weiß ich auch nicht.
Ich habe es bereits mit folgender Methode ausprobiert:
"Aufgabenplanung" erstellt,
Ruhemodus,
Strom via Zeitschaltuhr abschalten,
warten bis kurz vor eintritt der Zeit,
Strom via Zeitschaltuhr einschalten
Notebook startet automatisch*
---
* Das automatische Einloggen klappt nicht, da ich erst auf den Benutzernamen klicken muss
Nun frage ich mich, ob es möglich ist via "Aufgabenplanung" mich automatisch einzuloggen, oder ob ich etwas anderes ausprobieren sollte.
(Wenn ich das Notebook manuell starte, klappts ohne den Klick auf den Benutzernamen bzw. Passwort)Ich hoffe ihr habt ideen und/oder Lösungen
-
Danke
ich dachte Return würde die ganze "Funktionswulst" beenden und dann den Rückgabewert ausgeben
-
Ich habe mich mal an die Rekursion rangetraut, bin mit dem Ergebnis aber nicht zufrieden:
[autoit]Func fa($num,$faktor)
[/autoit]
MsgBox(0,$num,$faktor); dient nur zur kontrolle und zeigt das richtige an
$faktor = $faktor - 1
If $faktor = 1 Then Return $num
$num = $num * $faktor
fa($num,$faktor)
EndFunc
$n=4
$f=4
$p=fa($n,$f); p = 0.. müsste aber den Wert von $num haben oder?
MsgBox(0,"Fakultät von: "&$n,$p); ergibt nicht das Ergebnis, das ich haben will
Die Msgbox (in der Funktion) gibt zwar die richtigen Werte, leider werden diese aber nicht in $p bzw. direkt zurückgegeben.
Wisst ihr wodran es liegt? Vielleicht ist es ja auch nur ein Logikproblem
-
Diese Lösung finde ich gut (weil sie sehr kurz und knapp ist
)
leider klappt sie bei mir nicht:Zitat(4,34): ERROR: wrong nesting in initializer
dim $accel[1][2]=[$dummyf5,"{F5}"]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ -
Ich hab da mal was vorbereitet, das dein Problem lösen kann:
F5 ist aktiv, wenn die GUI im Vordergrund ist;
Mausklick innerhalb der GUI erzeugt eine MsgBox;
Labels zeigen den aktuellen Status an;Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Misc.au3>
#Region ### START Koda GUI section ### Form=
Global $hwnd, $DLL = DllOpen("user32.dll")
$Form1 = GUICreate("Testgui", 222, 64)
$hwnd = HWnd($Form1)
$Label1 = GUICtrlCreateLabel("Status:", 8, 8, 37, 17)
$Label2 = GUICtrlCreateLabel("Active", 64, 8, 148, 17)
$Label3 = GUICtrlCreateLabel("Label3", 64, 32, 148, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$pos = GUIGetCursorInfo()
$wpos = WinGetPos($hwnd)
_inGUI($pos, $wpos)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit] [autoit][/autoit] [autoit]
If _IsPressed("01", $DLL) Then
If (MouseGetPos(0) > $wpos[0] And MouseGetPos(0) < $wpos[2] + $wpos[0]) = True And (MouseGetPos(1) > $wpos[1] And MouseGetPos(1) < $wpos[3] + $wpos[1]) Then
If IsArray($pos) Then MsgBox(0, "GUI-Info", "Innerhalb der GUI" & @CRLF & $pos[0] & ", " & $pos[1])
EndIf
EndIf
If _IsPressed("74", $DLL) Then
If WinActive($hwnd) = True Then
While _IsPressed("74", $DLL)
Sleep(10)
WEnd
MsgBox(0, "GUI-Info", "F5 wurde gedrückt...!")
EndIf
EndIf
WEndFunc _inGUI($pos, $wpos)
[/autoit]
If GUICtrlRead($Label2) = "Active" And WinActive($hwnd) = False Then
GUICtrlSetData($Label2, "InActive")
ElseIf GUICtrlRead($Label2) = "InActive" And WinActive($hwnd) = True Then
GUICtrlSetData($Label2, "Active")
Else
Sleep(10)
EndIf
If (MouseGetPos(0) > $wpos[0] And MouseGetPos(0) < $wpos[2] + $wpos[0]) = True And (MouseGetPos(1) > $wpos[1] And MouseGetPos(1) < $wpos[3] + $wpos[1]) Then
If GUICtrlRead($Label3) <> "Inside" Then GUICtrlSetData($Label3, "Inside")
Else
If GUICtrlRead($Label3) <> "Outside" Then GUICtrlSetData($Label3, "Outside")
EndIf
EndFunc ;==>_inGUI -
guck dir mal die UDF an.. die wird dir sicher helfen!
[autoit]#Include <Excel.au3>
[/autoit] -
Deine Formel liefert Bit und NICHT(!) Byte.
[autoit]
8 Bit = 1 Byte
1024 Byte = 1 kB
1024 kB = 1 MBFunc tobyte($Num, $value)
[/autoit]
If IsInt($Num)=False Return -1
Switch $value
Case "GB"
Return 1024^3*$Num
Case "MB"
Return 1024^2*$Num
Case "kB"
Return 1024*$Num
Case "bit"
Return $Num/8
EndSwitch
Return -1
EndFunc(ungetestet)
-
Zitat
und wofür steht das?
das steht zur konkatenation von strings (verbindung von zeichenketten)
[autoit]
Beispiel:$x="Hallo "
[/autoit]
$y="Welt"
$x &= $y
MsgBox(0,0,$x) -
guck bei autoitscript.com im forum unter Downloads -> libraries (UDFs) -> Xskin
in der Hilfedatei ist alles sehr gut erklärt -
Ich würde mal sagen : JA!
Du kannst dir mal GDIplus angucken.
/Edit: boah.. wie langsam ich heute wieder bin :pinch: -
Ob die Zeichenfolge "youtube" in deinem ausgelesenen text ist kannst du per:
[autoit]$Link="www.youtube.com"
[/autoit]
MsgBox(0,0,Stringinstr($Link,"youtube"))
herausfinden.
Der Rückgabewert ist die Position (steht auch alles in der Hilfe) -
ich würde es noch etwas abändern (falls du die mittlere taste länger als 50ms drückst)
[autoit]#include <Misc.au3>
[/autoit][autoit][/autoit][autoit]While 1
[/autoit]
If _IsPressed("04") Then ; 04 bedeutet: Middle mouse button (three-button mouse)
MouseDown("right")
Sleep(50)
MouseUp("right")
While _isPressed("04")
sleep(10)
Wend
EndIf
WEnd
(ungetestet, sollte dennoch funktionieren)