Lad dir die audio.au3 - dort findest du, was du suchst.
Beiträge von BugFix
-
-
[ironie]
Und wieder mal eine Problembeschreibung, wie man sie sich wünscht:
- wie ist der Zustand
- was soll geschehen
- was habe ich bisher versucht
[/ironie] -
Guckst du hier:
Spoiler anzeigen
[autoit]Func _MuteVol($opt = 1000, $rec=False)
[/autoit] [autoit][/autoit] [autoit]
Local $retVal = 0, $ex = False, $sRun = 'sndvol32'
If $rec Then $sRun &= ' /r'
If Not WinExists('[CLASS:Volume Control]') Then
Run($sRun, '', @SW_HIDE)
$ex = True
EndIf
If WinWait('[CLASS:Volume Control]', '', 2) = 0 Then Return -1
$retVal = ControlCommand('[CLASS:Volume Control]', '', $opt, 'isChecked')
If @error Then Return -2
If Not $retVal Then
ControlCommand('[CLASS:Volume Control]', '', $opt, 'Check')
If @error Then Return -2
EndIf
If $ex = True Then WinClose('[CLASS:Volume Control]')
Return
EndFunc ;==>_MuteVolFunc _UnMuteVol($opt = 1000, $rec=False)
[/autoit]
Local $retVal = 0, $ex = False, $sRun = 'sndvol32'
If $rec Then $sRun &= ' /r'
If Not WinExists('[CLASS:Volume Control]') Then
Run($sRun, '', @SW_HIDE)
$ex = True
EndIf
If WinWait('[CLASS:Volume Control]', '', 2) = 0 Then Return -1
$retVal = ControlCommand('[CLASS:Volume Control]', '', $opt, 'isChecked')
If @error Then Return -2
If $retVal Then
ControlCommand('[CLASS:Volume Control]', '', $opt, 'UnCheck')
If @error Then Return -2
EndIf
If $ex = True Then WinClose('[CLASS:Volume Control]')
Return
EndFunc ;==>_UnMuteVolÜber den Parameter $opt kannst du angeben, welches Volumen gesetzt werden soll (1000 ist Master).
-
Nimm ein ListView - Editieren der SubItems, s. hier: ListView - Editieren aller SubItems
-
Hier mal ein Bsp.:
[autoit]#include <WindowsConstants.au3>
[/autoit][autoit][/autoit][autoit]
Opt('GUIOnEventMode', 1)$gui = GUICreate('', 255, 40, -1, -1, $WS_POPUP)
[/autoit][autoit][/autoit][autoit]
$pic = GUICtrlCreatePic(@SystemDir & '\oobe\images\oemlogo.gif', 0, 0, 255, 40)
GUICtrlSetOnEvent(-1, '_ende')
GUISetState()While 1
[/autoit][autoit][/autoit][autoit]
Sleep(100)
WEndFunc _ende()
[/autoit]
Exit
EndFuncEdit
Kleine Änderung, nun wird mit Klick auf das Fenster geschlossen. -
Ich muß hier Raupi zustimmen.
INI per Source laden, dann mit String- oder RegEx- Befehlen parsen um die Sektionen und Schlüssel lokal abbilden zu können ist ein programmatischer UND zeitlicher Aufwand, der in nichts zum Verhältnis der simplen Download + Selektion mit INI-Befehlen steht.
Natürlich kann mann auch ein Fahrrad mit 8-eckigen Rädern bauen, aber dann braucht man sich nicht über die mangelhafte Performance zu wundern.
Wenn nur eine Sektion in der INI steht, dann kannst du direkt auslesen. Geht dann recht gut mit RegEx. Aber bei mehreren Sektionen wird es kritisch, zumal man davon ausgehen muss, dass eine INI-Datei keine konstanten Werte hat, sondern auch Werte/Sektionen hinzugefügt oder gelöscht werden können.
-
Zum Anderen stellt euch ehrlich die Frage: Was will ich mit einer MsgBox erreichen?
Normalerweise wird der User nur über einen Status informiert und er klickt <OK> (habs gelesen). Oder aber, und das ist wesentlicher, wir treten in Interaktion mit dem User, d.h. wir verlangen eine Entscheidung. Also erwarte ich einen Wert zur Auswertung um dann entsprechend das Skript weiterabzuarbeiten. Und nun erklärt mir mal, wie ab diesem Punkt sinnvoll auf Returns von 2 MsgBoxen reagiert werden soll.
-
Es ist der Sinn einer MsgBox zu warten, damit soll gesichert werden, dass das Programm erst weitergeht, wenn der User die Nachricht quittiert hat (oder die vogegebene Zeitspanne zur Ansicht abgelaufen ist).
Ich kann auch keine Notwendigkeit für 'parallele' MsgBoxen sehen. Aber, wenn 's denn unbedingt sein muß: GUI-Lösung ist doch kein Problem. -
[autoit]
$PASSWORT = InputBox ("Schüler VZ PW", "Bitte gib dein Passwort ein", "", "*")
[/autoit] -
ControlID funktioniert aber genausogut als Parameter
[autoit]
Ich denke mal dort wird jetzt in den meisten UDF drinstehen:If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
[/autoit]Bei einigen Funktionen ist es aber nach wie vor nicht der Fall und somit sollte man bei Problemen einfach das Handle verwenden.
-
Allerdings übernimmt er jetzt nicht die geänderte Größe:
Du mußt dich entscheiden: soll $AllowedSize die ID des Input sein oder der Wert der aus dem Input ausgelesen wird. -
ich möchte aber eig nur darauf aus, das man den weg des lichtsrahles sieht welchen er nimmt
Bau eine Nebelmaschine mit rein - dann sieht das richtig cool aus.
-
könnt ihr mir das machen alles andere hab ich schon
Alles was du hast, ist eine GUI ohne Programm-Code.Und was ich generell zum Brüllen finde: Ein Programm bekommt man noch nicht allein zustande - ABER ein Copyright steht drin!!

-
Hilfe hilft
Zitat#Include <GuiListBox.au3>
_GUICtrlListBox_ResetContent($hWnd) -
Eine Übersicht über die MessageCodes findest du ( na wo wohl
) in der Hilfe unter Appendix. 
-
Hier mal alle möglichen Events beim ListView, die du mit WM_NOTIFY abfangen kannst.
Die Rückgabeparameter habe ich alle in ein Array gepackt.
Näheres zu den MessageCodes (WM_NOTIFY, WM_COMMAND etc.) findest du bei MSDN.Spoiler anzeigen
[autoit]Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit]
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
[/autoit]
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $LVN_COLUMNCLICK ; A column was clicked
Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
Local $aInfo[11] = [$hWndFrom, _
$iIDFrom, _
$iCode, _
DllStructGetData($tInfo, "Index"), _
DllStructGetData($tInfo, "SubItem"), _
DllStructGetData($tInfo, "NewState"), _
DllStructGetData($tInfo, "OldState"), _
DllStructGetData($tInfo, "Changed"), _
DllStructGetData($tInfo, "ActionX"), _
DllStructGetData($tInfo, "ActionY"), _
DllStructGetData($tInfo, "Param")]
;~ _ColumnClick($aInfo)
Case $LVN_DELETEITEM ; An item is about to be deleted
Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
Local $aInfo[11] = [$hWndFrom, _
$iIDFrom, _
$iCode, _
DllStructGetData($tInfo, "Index"), _
DllStructGetData($tInfo, "SubItem"), _
DllStructGetData($tInfo, "NewState"), _
DllStructGetData($tInfo, "OldState"), _
DllStructGetData($tInfo, "Changed"), _
DllStructGetData($tInfo, "ActionX"), _
DllStructGetData($tInfo, "ActionY"), _
DllStructGetData($tInfo, "Param")]
;~ _ItemDeleted($aInfo)
Case $LVN_HOTTRACK ; Sent by a list-view control when the user moves the mouse over an item
Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
Local $aInfo[11] = [$hWndFrom, _
$iIDFrom, _
$iCode, _
DllStructGetData($tInfo, "Index"), _
DllStructGetData($tInfo, "SubItem"), _
DllStructGetData($tInfo, "NewState"), _
DllStructGetData($tInfo, "OldState"), _
DllStructGetData($tInfo, "Changed"), _
DllStructGetData($tInfo, "ActionX"), _
DllStructGetData($tInfo, "ActionY"), _
DllStructGetData($tInfo, "Param")]
Return 0 ; allow the list view to perform its normal track select processing.
;Return 1 ; the item will not be selected.
;~ _HottTrackItem($aInfo)
Case $LVN_KEYDOWN ; A key has been pressed
Local $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)
Local $aInfo[5] = [$hWndFrom, _
$iIDFrom, _
$iCode, _
DllStructGetData($tInfo, "VKey"), _
DllStructGetData($tInfo, "KeyFlags")]
;~ _KeyDown($aInfo)
Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
Local $aInfo[12] = [$hWndFrom, _
$iIDFrom, _
$iCode, _
DllStructGetData($tInfo, "Index"), _
DllStructGetData($tInfo, "SubItem"), _
DllStructGetData($tInfo, "NewState"), _
DllStructGetData($tInfo, "OldState"), _
DllStructGetData($tInfo, "Changed"), _
DllStructGetData($tInfo, "ActionX"), _
DllStructGetData($tInfo, "ActionY"), _
DllStructGetData($tInfo, "lParam"), _
DllStructGetData($tInfo, "KeyFlags")]
_LeftClick($aInfo)
Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
Local $aInfo[12] = [$hWndFrom, _
$iIDFrom, _
$iCode, _
DllStructGetData($tInfo, "Index"), _
DllStructGetData($tInfo, "SubItem"), _
DllStructGetData($tInfo, "NewState"), _
DllStructGetData($tInfo, "OldState"), _
DllStructGetData($tInfo, "Changed"), _
DllStructGetData($tInfo, "ActionX"), _
DllStructGetData($tInfo, "ActionY"), _
DllStructGetData($tInfo, "lParam"), _
DllStructGetData($tInfo, "KeyFlags")]
;~ _LeftDblClick($aInfo)
Case $NM_KILLFOCUS ; The control has lost the input focus
Local $aInfo[3] = [$hWndFrom, _
$iIDFrom, _
$iCode]
;~ _LostFocus($aInfo)
Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
Local $aInfo[12] = [$hWndFrom, _
$iIDFrom, _
$iCode, _
DllStructGetData($tInfo, "Index"), _
DllStructGetData($tInfo, "SubItem"), _
DllStructGetData($tInfo, "NewState"), _
DllStructGetData($tInfo, "OldState"), _
DllStructGetData($tInfo, "Changed"), _
DllStructGetData($tInfo, "ActionX"), _
DllStructGetData($tInfo, "ActionY"), _
DllStructGetData($tInfo, "lParam"), _
DllStructGetData($tInfo, "KeyFlags")]
; Return 1 ; not to allow the default processing
Return 0 ; allow the default processing
;~ _RightClick($aInfo)
Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
Local $aInfo[12] = [$hWndFrom, _
$iIDFrom, _
$iCode, _
DllStructGetData($tInfo, "Index"), _
DllStructGetData($tInfo, "SubItem"), _
DllStructGetData($tInfo, "NewState"), _
DllStructGetData($tInfo, "OldState"), _
DllStructGetData($tInfo, "Changed"), _
DllStructGetData($tInfo, "ActionX"), _
DllStructGetData($tInfo, "ActionY"), _
DllStructGetData($tInfo, "lParam"), _
DllStructGetData($tInfo, "KeyFlags")]
;~ _RightDblClick($aInfo)
Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key
Local $aInfo[3] = [$hWndFrom, _
$iIDFrom, _
$iCode]
;~ _InputFocusReturn($aInfo)
Case $NM_SETFOCUS ; The control has received the input focus
Local $aInfo[3] = [$hWndFrom, _
$iIDFrom, _
$iCode]
;~ _SetFocus($aInfo)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY -
Hier mal ein Bsp. für SimpleSort per Spaltenklick.
Spoiler anzeigen
[autoit]#include <GuiConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiListView.au3>
#include <WindowsConstants.au3>$gui = GUICreate('Test LV-Sort')
[/autoit] [autoit][/autoit] [autoit]
$hListView = GUICtrlCreateListView('Spalte 1|Spalte 2', 10, 10, 300, 200)
For $i = 1 To 15
GUICtrlCreateListViewItem(Chr(Random(65,90)) & '|' & Chr(Random(65,90)), $hListView)
Next
GUISetState()Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
[/autoit] [autoit][/autoit] [autoit]Do
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Until GUIGetMsg() = $GUI_EVENT_CLOSEFunc WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit]
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
[/autoit]
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $LVN_COLUMNCLICK ; A column was clicked
$tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
_GUICtrlListView_SimpleSort($hWndListView, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFYEdit:
Und hier mit _GUICtrlListView_RegisterSortCallBack:Spoiler anzeigen
[autoit]#include <GuiConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiListView.au3>
#include <WindowsConstants.au3>$gui = GUICreate('Test LV-Sort')
[/autoit] [autoit][/autoit] [autoit]
$hListView = GUICtrlCreateListView('Spalte 1|Spalte 2', 10, 10, 300, 200)
For $i = 1 To 15
GUICtrlCreateListViewItem(Chr(Random(65,90)) & '|' & Chr(Random(65,90)), $hListView)
Next
$hListView = GUICtrlGetHandle($hListView)
$b1 = GUICtrlCreateButton('sort 1', 20, 240, 65, 20)
$b2 = GUICtrlCreateButton('sort 2', 100, 240, 65, 20)GUISetState()
[/autoit] [autoit][/autoit] [autoit]_GUICtrlListView_RegisterSortCallBack($hListView)
[/autoit] [autoit][/autoit] [autoit]Do
[/autoit]
$msg = GUIGetMsg()
Switch $msg
Case $b1
_GUICtrlListView_SortItems($hListView, 0)
Case $b2
_GUICtrlListView_SortItems($hListView, 1)
EndSwitch
Until $msg = $GUI_EVENT_CLOSE
_GUICtrlListView_UnRegisterSortCallBack($hListView) -
wie groß eine DB sein darf
Also einige Tausend Einträge verkraftet die Datenbank ohne zu zucken ;-).
Und je mehr Daten du in einem Execute bearbeitest, umso schneller ist SQLite.ZitatAußerdem hätte ich noch gerne eine Suchfunktion in der ich entweder nach PLZ oder Ort suchen kann.
$sSearch = _
"SELECT * FROM tabelle WHERE plz = 'suchstring';"
Analog für Ort.Schau mal ins Unterforum Datenbanken, da findest du Bsp. wie du mit DB umgehst.
Edit:
Mal zum Beweis, dass SQLite auch große Datenmengen verkraftet
Ein Mustercode, der eine DB mit 1000 Datensätzen erstellt und anschließend in die Console ausgibt. Bitte etwas Geduld haben, die Feldinhalte werden per Zufall generiert - das dauert schon ein wenig...
Spoiler anzeigen
[autoit]#include <SQLite.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <SQLite.dll.au3>Local $sSQliteDll_Path = _SQLite_Startup()
[/autoit] [autoit][/autoit] [autoit]
$hSQL = _SQLite_Open(@ScriptDir & '\big_test.db')
$strCREATE = _
"CREATE TABLE [Musik] (" & _
"[id] INTEGER PRIMARY KEY NOT NULL," & _
"[titel] VARCHAR[50] NULL," & _
"[interpret] VARCHAR[50] NULL," & _
"[genre] VARCHAR[30] NULL)"
If _SQLite_Exec ( $hSQL, $strCREATE ) <> $SQLITE_OK Then ; wenn Fehler
_Beenden('Fehler CREATE')
EndIfGlobal $aInsert[1000]
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aInsert) -1
$aInsert[$i] = $i+1 & ',' & _GetRandomStr(20) & ',' & _GetRandomStr(20) & ',' & _GetRandomStr(10)
NextFunc _GetRandomStr($len)
[/autoit] [autoit][/autoit] [autoit]
Local $str = ''
For $i = 1 To $len
$str &= Chr(Random(65,90,1))
Next
Return $str
EndFuncIf _SQLite_INSERT('Musik', $aInsert) <> $SQLITE_OK Then _Beenden('Fehler INSERT')
[/autoit] [autoit][/autoit] [autoit]; Tabelleninhalt in Console ausgeben
[/autoit] [autoit][/autoit] [autoit]
If $SQLITE_OK <> _SQLite_Exec($hSQL, "SELECT * FROM Musik", "_cb" ) Then
MsgBox(0,"SQLite Error","Error Code: " & _SQLite_ErrCode() & @CR & "Error Message: " & _SQLite_ErrMsg())
_SQLite_Close() ; schließt die Datenbank
_SQLite_Shutdown()
Exit
EndIf_Beenden('Test Ende')
[/autoit] [autoit][/autoit] [autoit]Func _Beenden($MSG)
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Close()
_SQLite_Shutdown()
Exit MsgBox(0, 'Ende', $MSG)
EndFuncFunc _cb($aRow)
[/autoit] [autoit][/autoit] [autoit]
For $s In $aRow
ConsoleWrite($s & @TAB)
Next
ConsoleWrite(@LF)
EndFuncFunc _SQLite_INSERT($sTable, $saValues, $Delim=',')
[/autoit]
Local $sInsert = ''
If Not IsArray($saValues) Then
Local $aValues[1] = [$saValues]
Else
Local $aValues = $saValues
EndIf
For $i = 0 To UBound($aValues) -1
Local $splitVal = StringSplit($aValues[$i], $Delim)
$sInsert &= "INSERT INTO " & $sTable & " VALUES ("
For $k = 1 To UBound($splitVal) -1
$sInsert &= "'" & StringStripWS($splitVal[$k], 3) & "'" & ','
Next
$sInsert = StringTrimRight($sInsert, 1) & ");"
Next
If $SQLITE_OK <> _SQLite_Exec ( -1, $sInsert ) Then
Return SetError(1,0,1)
Else
Return $SQLITE_OK
EndIf
EndFunc -
Die von dir benannten Funktionen verlangen das ListView-Handle.
Falls du also dein LV mit: $ListView = GUICtrlCreateListView() erstellt hast, solltest du das Handle abfragen: $hListView = GUICtrlGetHandle($ListView) und damit weiterarbeiten. -
Will ein WLan Key schreiben den der User vorher eingibt.
Ähh.. also der Key existiert, ist bereits erfaßt und soll jetzt (darauf zielt deine Frage) in das Windows-WLAN-Verwaltungstool eingetragen werden?