Beiträge von funkey
-
-
Hi Oscar! Ich wünsche dir alles, alles Gute zu deinem heutigen 42. Geburtstag!
Bleib so hilfsbereit und freundlich wie eh und je![Blockierte Grafik: http://www.ihcuttigen.ch/index/Geburtstag.gif]
-
Mit ControlSend kannst du Zeichen auch an nicht aktive Fenster schicken.
-
Wofür brauche ich einen Hotkey, wenn ich das gleiche wieder weitegebe

Auszug aus der Hilfe zu HotKeySet
[autoit]HotKeySet("{Esc}", "captureEsc")
[/autoit]
Func captureEsc()
; ... can do stuff here
HotKeySet("{Esc}")
Send("{Esc}")
HotKeySet("{Esc}", "captureEsc")
EndFunc -
Raupi, du bist der beste!
Vielen Dank, dass du mir so gut geholfen hast.
Ich hätte niemals auf eine ChildGui aufgedacht und die GuiScrollbars.au3 kannte ich auch noch nicht.
Mit diesem Problem hast du gestern bestimmt den ganzen Tag verbracht. Danke, danke! -
[autoit]
Local $text = ""
[/autoit][autoit][/autoit][autoit][/autoit]
For $i = 0 To _GUICtrlListBox_GetCount($hwnd) -1
$text = _GUICtrlListBox_GetText($hWnd, $i) & "|"
Next -
Ich glaube nicht, dass jeder Eintrag ein sepparates Handle hat. Reicht dir denn der Name oder der Index des Eintrages nicht aus. Wieso? Code?
-
Du darfst dir die Variablen nicht immer wieder überschreiben.
Spoiler anzeigen
[autoit]#AutoIt3Wrapper_Res_Fileversion=0.91
[/autoit] [autoit][/autoit] [autoit]
#RequireAdmin
#include <GuiConstantsEx.au3>
#Include <File.au3>
Dim $SoftwareTitel = "Scorp's Mp3-Kopierer v0.91"
Dim $PfadGuiCreate($SoftwareTitel, 300, 190)
[/autoit] [autoit][/autoit] [autoit]
GuiSetIcon("%SystemRoot%\system32\SHELL32.dll", 41)
$context = GuiCtrlCreateContextMenu ()
$contextInfo = GuiCtrlCreateMenuitem ("Informationen",$context)$Quelle =""
[/autoit] [autoit][/autoit] [autoit]
$Ziel = ""
GuiCtrlCreateLabel("Aus dem Quellverzeichnis werden zufällig Dateien ausgesucht und ins Zielverzeichnis kopiert.", 10, 10, 300, 40)
GuiCtrlCreateLabel("Größe:", 10, 53)
$AllowedSize = GuiCtrlCreateInput("3000", 60, 50, 30, 18)
GuiCtrlCreateLabel("Mbyte", 93, 53)
GuiCtrlCreateLabel("Quelle:", 10, 83)
$Quelle = GUICtrlCreateInput($Quelle, 60, 80, 200)
$QuelleSuchen = GuiCtrlCreateButton("+", 265, 80, 20, 20)GuiCtrlCreateLabel("Ziel:", 10, 113)
[/autoit] [autoit][/autoit] [autoit]
$Ziel = GUICtrlCreateInput($Ziel, 60, 110, 200)
$ZielSuchen = GuiCtrlCreateButton("+", 265, 110, 20, 20)
$weiter = GuiCtrlCreateButton("Weiter", 200, 150, 65)
$schliessen = GuiCtrlCreateButton("Schließen", 50, 150, 65)
$AllowedSize = GUICtrlRead($AllowedSize)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
While 1
$msg = GUIGetMsg()
Select
case $msg = $QuelleSuchen
$QuellPfad = FileSelectFolder("Den Quellordner auswählen:", "root dir", 2)
If $QuellPfad <> '' Then GUICtrlSetData($Quelle, $QuellPfad)
case $msg = $ZielSuchen
$ZielPfad = FileSelectFolder("Den Zielordner auswählen:", "root dir", 3)
If $ZielPfad <> '' Then GUICtrlSetData($Ziel, $ZielPfad)
Case $msg = $contextInfo
MsgBox(64, "Informationen", "Der "&$SoftwareTitel&" wurde von Norman Schlorke entwickelt."&@LF&@LF&"Kontakt:"&@LF&"ICQ: 344-167-834"&@LF&"Mail: norman.schlorke@gmx.de")
Case $msg = $GUI_EVENT_CLOSE Or $msg = $schliessen
ExitLoop
Case $msg = $weiter
If $AllowedSize < 50 Or $AllowedSize > 5000 Then
MsgBox(48, "Fehler!", "Die Eingabe der Größe in Mbyte war nicht gültig:"&@LF&"Die Eingabe darf nur zwischen 50 und 5000 sein!")
ExitLoop
EndIf
$AllowedSize = $AllowedSize*1024*1024 ;Allowed Size in Byte umrechnen
GUIDelete()
GuiCreate($SoftwareTitel, 300, 250)
$alles = _FileListToArray($Quelle, "*.mp3")
$Anzahl = Ubound($alles)
If $Anzahl < 1 Then
MsgBox(48, "Fehler!", "Es wurden keine MP3-Dateien gefunden!"&@LF&@LF&$SoftwareTitel&" wird geschlossen!")
ExitLoop
EndIf
$Groesse = 0
$anzahlDateien = 0
DirRemove($Ziel,1)
DirCreate($Ziel)
MsgBox(64, "Dateien werden kopiert", "Dateien werden kopiert..."&@LF&"Das kann ein bisschen dauern.")
While $Groesse < $AllowedSize ;3758096384
$Zufall = Random(1,$Anzahl, 1)
$aktDatei = $Quelle&"\"&$alles[$Zufall]
$DateiGroesse = FileGetSize($aktDatei)
If $DateiGroesse > 20971520 Then
Else
FileCopy($aktDatei, $Ziel,8)
$anzahlDateien = $anzahlDateien+1
$Groesse = $Groesse + $DateiGroesse
EndIf
WEnd
GuiCtrlCreateLabel("Es wurden "&$anzahlDateien&" Dateien zufällig ausgewählt und kopiert.", 10, 123)
GuiCtrlCreateLabel("Insgesamt wurden "&Round($Groesse/1024/1024, 2)&" Mb kopiert.", 10, 163)
$schliessen = GuiCtrlCreateButton("Schließen", 50, 215, 65)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
EndSelect
WEndGUIDelete()
[/autoit] [autoit][/autoit] [autoit]Exit
[/autoit] -
Irgendwie muss es doch gehen?
Ich hoffe, dass es soetwas wie beim Beispiel zu _GUICtrlComboBox_SetHorizontalExtent gibt! -
Ich gebe zu dieser Parameter bei der Funktionen _GUITrendCreate ist noch ein Überbleibsel vom Testen. Die anderen Funktionen verwenden allerdings diesen Parameter.
Aber das hat leider nichts mit meinem Problem zu tun
Ich brauche diese Variable beim richtigen Programm und nicht bei dieser Simulation. -
Ich hab da bei meinem Fussball-Spiel (siehe Signatur) auch sowas ähnliches eingebaut. Nur teilweise auch etwas mit Random experimentiert, damit das Spiel schwieriger wird

-
Hallo, ich hab auch mal wieder eine Frage. Und zwar bastle ich an einer Trendanzeige für die ich einen horizontalen Scrollbalken benötigen würde. Die Frage ist nur wie man dem Scrollbalken sagt was sein 'horizontaler Extend' ist, also wo Anfang und Ende des Scrollbereiches ist.
Also wenn der Trend am Ende der Gui angelangt ist, dann soll der Trendbereich scrollbar sein.
Ich hoffe mit folgendem Beispiel versteht ihr mein Anliegen.Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Date.au3>
#include <GUIConstantsEx.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#Include <File.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $aWerte[1], $Run = 1
[/autoit] [autoit][/autoit] [autoit]
Global $title = 'Trend-Test'
Global $iWidth = 800, $iHeight = 500
Global $tRECT = DllStructCreate($tagRECT)$aWerte[0] = _Now()
[/autoit] [autoit][/autoit] [autoit]
#Region Simulation
For $i = 1 To 790
_ArrayInsert($aWerte, UBound($aWerte), Random(300, 350))
Next
#Endregion Simulation$gui = GUICreate("Trend-Simulation by funkey", $iWidth, $iHeight, -1, -1, BitOR($GUI_SS_DEFAULT_GUI ,$WS_HSCROLL)) ;funktioniert nicht so wie ich will
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")$Trend = _GUITrendCreate($aWerte, 0, 0, $iWidth *2, $iHeight)
[/autoit] [autoit][/autoit] [autoit]
_GUITrendInitialize($aWerte, $Trend, $iHeight)GUISetState()
[/autoit] [autoit][/autoit] [autoit]AdlibEnable("_Simulation", 500)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(5000)
WEndFunc _GUITrendCreate($aDaten, $iPosx, $iPosy, $iWidth, $iHeight, $Color = '0xFF0000')
[/autoit] [autoit][/autoit] [autoit]
Local $TrendID
$TrendID = GUICtrlCreateGraphic($iPosx, $iPosy, $iWidth, $iHeight);, $WS_HSCROLL) ;funktioniert nicht so wie ich will
GUICtrlSetBkColor($TrendID, 0xffffff)
GUICtrlSetGraphic($TrendID, $GUI_GR_COLOR, $Color)
Return $TrendID
EndFuncFunc _GUITrendInitialize($aDaten, $TrendID, $iHeight)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetGraphic($TrendID, $GUI_GR_MOVE, 0, $iHeight - $aDaten[1])
For $i = 0 To UBound($aDaten) - 2
GUICtrlSetGraphic($TrendID, $GUI_GR_LINE, $i, $iHeight - $aDaten[$i+1])
GUICtrlSetGraphic($TrendID, $GUI_GR_MOVE, $i, $iHeight - $aDaten[$i+1])
Next
EndFuncFunc _GUITrendUpdate($aDaten, $TrendID, $iHeight)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetGraphic($TrendID, $GUI_GR_LINE, UBound($aWerte) -1, $iHeight - $aWerte[UBound($aWerte)-1])
GUICtrlSetGraphic($TrendID, $GUI_GR_MOVE, UBound($aWerte) -1, $iHeight - $aWerte[UBound($aWerte)-1])
DllStructSetData($tRECT, 1, UBound($aWerte) -2)
DllStructSetData($tRECT, 2, 0)
DllStructSetData($tRECT, 3, UBound($aWerte) -1)
DllStructSetData($tRECT, 4, $iHeight)
_WinAPI_RedrawWindow($gui, $tRECT)
EndFuncFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
Local $Zeit = StringReplace(_Now(), ':', '_')
If Not FileExists(@ScriptDir & '\logfiles\') Then DirCreate(@ScriptDir & '\logfiles\')
_FileWriteFromArray(@ScriptDir & '\logfiles\Daten_'&$Zeit&'.log', $aWerte)
Exit
EndFuncFunc _Simulation()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
_ArrayInsert($aWerte, UBound($aWerte), Random(300, 350))
_GUITrendUpdate($aWerte, $Trend, $iHeight)
EndFunc -
[autoit]
StringInStr
[/autoit]
-
Kurz mal ein Beispiel:
Spoiler anzeigen
[autoit]$Drive = 'X:'
[/autoit] [autoit][/autoit] [autoit]
$Datei = 'autorun.exe'CDTray($Drive, 'open')
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "", "Bitte die nächste CD einlegen und dann OK drücken")
CDTray($Drive, 'closed')
Do
Sleep(50)
$Bereit = DriveStatus($Drive)
Until $Bereit = 'READY'
If Not FileExists($Drive&'\'&$Datei) Then
CDTray($Drive, 'open')
MsgBox(0, "", "Bitte die richtige CD einlegen!")
Else
install()
EndIfFunc install()
[/autoit]
MsgBox(0, "", "Das Programm wurde erfolgreich installiert!")
EndFunc -
Das kann ich kaum glauben, dass die _SendMessage-Methode nicht funktioniert

Zeig mal wie du es gemacht hast.Spiel mal mit diesen Parametern:
[autoit]Opt("SendKeyDelay", 5) ;5 milliseconds
[/autoit]
Opt("SendKeyDownDelay", 1) ;1 millisecond -
Hm. Dann könntest du noch mit _SendMessage probieren
Beispiel _SendMessage
[autoit]#include <SendMessage.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>$pid = Run("notepad")
[/autoit] [autoit][/autoit] [autoit]
WinWait("[CLASS:Notepad]")
WinActivate("[CLASS:Notepad]")
$controlhwnd = ControlGetHandle("[CLASS:Notepad]","","[CLASS:Edit]")$aString = StringSplit('Bla_1_WW_Blupp', '', 2)
[/autoit]
For $i = 0 To UBound($aString) -1
_SendMessage($controlhwnd, $WM_CHAR, Binary($aString[$i]))
Next -
Wenn ControlSetText nicht funktioniert wird's schwierig.
Probier mal jeden Buchstaben einzeln zu senden:
[autoit]$aString = StringSplit('Bla_1_WW_Blupp', '', 2)
[/autoit]
For $i = 0 To UBound($aString) -1
ControlSend($handle, "", "", $aString[$i])
Next -
Mini-Beispiel
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
HotKeySet('a', '_MsgBox')GUICreate('Bla')
[/autoit] [autoit][/autoit] [autoit]
GUISetState()While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Sleep(20)
WEndFunc _MsgBox()
[/autoit]
If BitAND(WinGetState('Bla'),8) Then MsgBox(0, "Hallo", "Du hast a gedrückt")
EndFunc -
Hast du dir schon mal die Hilfe zu HotkeySet angeschaut?
[autoit]; capture and pass along a keypress
[/autoit]
HotKeySet("{Esc}", "captureEsc")
Func captureEsc()
; ... can do stuff here
HotKeySet("{Esc}")
Send("{Esc}")
HotKeySet("{Esc}", "captureEsc")
EndFunc -
Zitat von L3viathan2142
Das ist auch Schwachsinn...
WinWait wartet bis das Fenster vorhanden ist, oder bis das Timeout erreicht wurde. In meinem Beispiel 3 Sekunden!
Also wenn das Fenster nicht immer erscheint, dann macht das Skript nach 3 Sekunden weiter.
Ich habe es so gemacht, da Dino ja auch das Fenster mit WinExists prüft, da diese Prüfung aber nur einmalig stattfindet, ist hier ein WinWait mit Timeout besser.
Aber wie ich ja schon gesagt habe:Zitat von funkeyWenn das Fenster immer angezeigt wird (so wird es sein ) ....