Das liegt daran, dass GUIGetMsg() Befehle im OnEvent modus nicht reagieren. Am besten nimm das ganz raus.
Ich würde dir empfehlen, alle GUI's am anfang zu erstellen, und dann in den entsprechenden Funktionen nur noch mit @SW_SHOW und @SW_HIDE zu arbeiten.
Beiträge von SEuBo
-
-
Für dein Vorhaben eignet sich der OnEvent Modus viel besser.
Du dürftest keine Probleme haben es damit zu verwirklichen.Übrigens: Da das hier mal wieder anfängt, nach einem Bot auszusehen, möchte ich dich darauf hinweisen, dass die hier verboten sind. Man beachte die Forenregeln.
-
Ich kann deinen Code leider nicht so recht entziffern (alles in eienr Zeile :D), aber ich versuch mal auf gut glück zu helfen.
Versuch der While Schleife in der Start-Funktion mal eine Variable als Bedingung zu geben
[autoit]$go = true
[/autoit]
While $go
...
Case $msg = $StopButton
$go = False
...
Wend -
Leider habe ich grade keine kristallkugel zur Hand, um dir zu sagen, welchen Router du hast.
Schnapp dir das Handbuch von deinem Router und lies es. Und dann liest du es am besten nochmal.
Die Ports kann man im Konfigurationsmenü des Routers ändern. Wie genau erfährst du im oben angesprochen Handbuch.Ich hab leider noch nie mit TCP Funktionen gearbeitet. Bisher fehlte mir die Verwendung dafür, deswgen kann ich dir auch nicht sagen, ob dein Script überhaupt korrekt ist.
-
Ports freigeben? -> Firewall/Router
-
1. Hülle deinen Code bitte in [ spoiler] [ autoit] CODE [ /autoit][ /spoiler] tags. das macht einiges übersichtlicher.
2. Sind die Ports freigegeben?
3. Kann es sein, dass du Client und Server im gleichen script laufen hast!? -
Wie kann ich bei überlappenden GUI Elementen die Reihenfolge festlegen?
Das wird nach dem Z-Ordering bestimmt. Das zuletzt erstelle control liegt über den davor erstellten.
Unterstützt AutoIt eigentlich Transparenzeffekte? (Textfelder mit Transparentem Hintergrund, Bilder, die durch andere elemente leicht durchscheinen etc)
Jain. Du kannst für die (halb)transparenten Controls jeweils ein extra Child-GUI erstellen. und dieses dann mit WinSetTrans auf die gewünschte Transparenz bringen. -
Zitat aus der Hilfe zu _Singleton()
Zitat0 - Beendet das Skript mit dem Exitcode -1 falls die Instanz bereits existiert.
Flag 0 ist Standard! -
Probier mal
[autoit]_Singleton(@ScriptName)
[/autoit]
[autoit]
undhellExecute ( $dir & "\Steam.exe", "-applaunch 440" & $parameter)
[/autoit]Keine gewähr
-
Aber die ist doch anders.
Ja, ich habe das ganze eben noch Erweitert. Es ist mit der "neuen" Version möglich, rückwärts zu suchen, und die Möglichkeit, die Anzahl der "Ersetzungen" zu bestimmen ist auch da. Außerdem hab ich ein bisschen mehr Error Handling eingebaut. Das ganze kann man auch samt GUI Beispiel im Skripte-Unterforum finden.
-
Das hast du doch in StringInStr angegeben?!
-
Ist die Funktion neu? Steht die dann in der String.au3?
Nein, die hab ich gestern durch die Anregung in Freakys anderem Thread geschrieben -
Als kleine Erweiterung:
Wäre der String "test...........test...........test...........test...........test" und du möchtest zb nur das 2te und das 3te "test" ersetzen, dann kann ich dir _StringReplaceEx() empfehlenSpoiler anzeigen
[autoit]$text = "test...........test...........test...........test...........test"
[/autoit] [autoit][/autoit] [autoit]
$instr = StringInStr ($text,"test",2,2)
$mid = StringMid ($text,$instr,4)
;~ MsgBox (0,"",$mid)
$text = _StringReplaceEx($text,$mid,"lol",2,2)
MsgBox (0,"",$text);=================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function: _StringReplaceEx($sString,$sSearchString,$sReplaceString[,$iOccurence[,$iHowOften[,$iCaseSense]]])
; Description: Extends StringReplace(). Giving you the ability to choose the first occurence to start with,
; and how many times the Searchstring should be replaced.
;
; Parameter(s): $sString - The string to evaluate.
; $sSearchString - The substring to search.
; $sReplaceString - The replacement string.
; $iOccurence - (optional) The substrings occurence to start with. (1) by default.
; $iHowOften - (optional) The number of times to replace the searchstring.
; (1) by default. Set this parameter to (0) if you want the
; function to replace all occurences of the Searchstring, starting with the one
; in $iOccurence. Use a negative value, to search from the right to left.
; $iCaseSense - (optional) Flag to indicate if the operations should be case sensitive.
; 0 = not case sensitive, using the user's locale (default)
; 1 = case sensitive
; 2 = not case sensitive, using a basic/faster comparison
;
; Requirement(s): Valid parameters
;
; Return Value(s): On Success - Returns the new string
; On Failure - Returns 0
; @Error - 0 = No error.
; 1 = Function called with invalid parameters
; 2 = Searchstring was not found at the given occurence
;
; Author(s): SEuBo (http://www.autoit.de)
; Note(s):
;=================================================================================================
Func _StringReplaceEx($sString,$sSearchString,$sReplaceString,$iOccurence=1,$iHowOften=1,$iCaseSense=0)
If $sSearchString = "" Or $sString = "" Or $iOccurence < 1 OR $iCaseSense < 0 Or $iCaseSense > 2 Then Return SetError(1,0,0)
If $iHowOften = 0 Then $i = -1
If $iHowOften >= 0 Then
Local $i = 1
If Not StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence) Then Return SetError(2,0,0)
Do
$sString = StringLeft($sString,StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence)-1)&StringReplace(StringTrimLeft(StringTrimRight($sString,StringLen($sString)-StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence)-StringLen($sSearchString)),StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence)-1),$sSearchString,$sReplaceString)&StringRight($sString,StringLen($sString)-StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence)-StringLen($sSearchString))
If $iHowOften <> 0 Then $i += 1
Until $i > $iHowOften OR Not StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence)
Else
Local $i = -1
$sString = _StringReplaceEx_Reverse($sString)
$sSearchString = _StringReplaceEx_Reverse($sSearchString)
$sReplaceString = _StringReplaceEx_Reverse($sReplaceString)
If Not StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence) Then Return SetError(2,0,0)
Do
$sString = StringLeft($sString,StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence)-1)&StringReplace(StringTrimLeft(StringTrimRight($sString,StringLen($sString)-StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence)-StringLen($sSearchString)),StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence)-1),$sSearchString,$sReplaceString)&StringRight($sString,StringLen($sString)-StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence)-StringLen($sSearchString))
$i -= 1
Until $i < $iHowOften OR Not StringInStr($sString,$sSearchString,$iCaseSense,$iOccurence)
$sString = _StringReplaceEx_Reverse($sString)
EndIf
Return $sString
EndFunc;=================================================================================================
[/autoit]
;#####INTERNAL USE#####
;_StringReplaceEx_Reverse : Reverses the contents of the specified string. (without a dll-call)
;SEuBo (http://www.autoit.de)
;=================================================================================================
Func _StringReplaceEx_Reverse($sString)
Local $sReverse = ""
For $x = 1 to StringLen($sString)
$sReverse &= StringRight($sString,1)
$sString = StringTrimRight($sString,1)
Next
Return $sReverse
EndFunc
;================================================================================================= -
-
Das kommt davon wenn man mal wieder zu kompliziert denkt
-
Spoiler anzeigen
[autoit]#include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Global $ListViewSel = -1
$hGUI = GUICreate("")
$Listview = GUICtrlCreateListView("Col1|Col2",20,20,360,300,BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
GUICtrlCreateListViewItem("Row1_1|Row1_2",$Listview)
GUICtrlCreateListViewItem("Row2_1|Row2_2",$Listview)
GUICtrlCreateListViewItem("Row3_1|Row3_2",$Listview)
$Lable = GUICtrlCreateLabel("",20,340,360,40,BitOR(0x01,0x0200))
$ListViewHwnd = GUICtrlGetHandle($Listview)
GUISetState()While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
If _GUICtrlListView_GetSelectionMark($ListViewHwnd) <> $ListViewSel Then
$ListViewSel = _GUICtrlListView_GetSelectionMark($ListViewHwnd)
GUICtrlSetData($Lable,_GUICtrlListView_GetItemText($ListViewHwnd,$ListViewSel))
EndIf
WEndMit GUIRegisterMsg geht das wesentlich einfacher, aber ich verlege das Beispiel imm
//EDIT:
Dein Beispiel ist auch für eine ListBox, keine ListView -
Dann poste sie
-
Geht noch viel sanfter mit _GUICtrlEdit_AppendText()
Spoiler anzeigen
[autoit]#include <GuiEdit.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <EditConstants.au3>
$hGUI = GUICreate("")
$Edit = GUICtrlCreateEdit("",20,20,360,300,BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
$Button = GUICtrlCreateButton("Starten",20,340,360,40)
GUISetState()While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button
For $i = 0 to 500
_GUICtrlEdit_AppendText($Edit,"Zeile "&$i&@CRLF)
Next
EndSwitch
WEnd -
Nein. Es sind 924 "gültige" unterschiedliche Kombination möglich.
Ich grübel nun schon seit mehreren Stunden und weiter als bis
[autoit]
[/autoit]
MsgBox(0,"",_Combi_Total(7,6))
Func _Combi_Total($wa,$sa)
; http://www.murderousmaths.co.uk/books/unknownform.htm
Local $1 = 1, $2 = 1, $3 = 1
For $i = 1 to $wa+$sa-1
$1 *= ($wa+$sa-$i)
Next
For $i = 1 to $wa-1
$2 *= $wa-$i
Next
For $i = 0 To $sa-1
$3 *= $sa-$i
Next
Return $1/($2*$3)
EndFuncum dir schonmal die Anzahl der Möglichen Kombinationen zu geben bin ich nicht gekommen.
Der Schlüssel liegt in der _ArrayCombinations(). Ich bekomme sie nur nicht umgeschrieben, sodass sie so funktioniert wie ich es will. Beispiel: wir haben einen $array[42] (7 Würfel x 6 Seiten). _ArrayCombinations soll nun kombinieren. Aber nicht einen Würfel untereinander. Die ganzen Möglichkeiten nachher durchzugehen, um sie aus dem Array zu löschen ist ineffizient! Wenn man zb: 1800 x 1800 Elemente durchgehen muss, dauert das ewig (alles schon getestet) -