Hallo Der_Eismann,
die Sortierung muss nach _ArrayUnique (Zeile 139) und vor die Schleife in welcher du die Drucker der ComboBox zuweist,
mfg autobert
Hallo Der_Eismann,
die Sortierung muss nach _ArrayUnique (Zeile 139) und vor die Schleife in welcher du die Drucker der ComboBox zuweist,
mfg autobert
Auch von mir noch nachträglich die besten Wünsche, besonders Gesundheit, Erfolg und Glück in allen Lebenslagen.
autoBert
Hallo HerbiiProduktion,
wenn du 2 GUI's verwenden willst solltest im GuiGetMsg-Modus den Extended-Parameter von GuiGetMsg benutzen. Kleines Beispiel:
#include <GUIConstantsEx.au3>
#include<WindowsConstants.au3>
Global $idGui1, $idGui2=-99, $idMsgBox, $idZurueck, $idbtnExit2
_CreateGui2() ;entweder hier oder erst wenn benötigt ($idbtmToGui2 Klick)
$idGui1 = GUICreate('GUI 1', 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $idGui1 gespeichert
;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
$idbtnToGui2 = GUICtrlCreateButton('&Aufruf GUI 2', 20, 20, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
$idbtnICQ = GUICtrlCreateButton('&ICQ', 20, 50, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "ICQ" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
$idbtnExit1 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
GUISetState(@SW_SHOW, $idGui1)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg(1) ;extended Modus wichtig!!
Switch $nMsg[1] ;für welches Fenster ist die Message
Case $idGui1 ;ab hier ist Gui 1 dran
Switch $nMsg[0] ;welche Message wurde ausgelöst
Case $idbtnToGui2
GUISetState(@SW_Hide, $idGui1) ;Gui 1 verstecken, damit nur Gui2 sichtbar ist und bearbeitet werden kann
;GUISetState(@SW_DISABLE, $idGui1) ;oder Gui 1 disablen, damit nur Gui2 bearbeitet werden kann
;If $idGui2 = -99 Then _CreateGui2() ;nur wenn nicht am Anfang bereits erzeugt nötig, dann auf Vorbelegung der Variable in Global achten)
GUISetState(@SW_SHOW, $idGui2) ;Gui 2 anzeigen
Case $idbtnICQ
MsgBox(0,"","Jetzt würde ICQ gestartet",0,$idGui1)
;Run("C:\Program Files\ICQ7.0\ICQ.exe")
Case $idbtnExit1, $GUI_EVENT_CLOSE
_end()
EndSwitch
Case $idGui2 ;ab hier ist Gui 2 dran
Switch $nMsg[0] ;welche Message wurde ausgelöst
Case $idMsgBox
MsgBox(0, 'Test', 'Test', 0, $idGui2)
Case $idZurueck, $GUI_EVENT_CLOSE
GUISetState(@SW_Show, $idGui1) ;Gui 1 wieder anzeigen
;GUISetState(@SW_ENABLE, $idGui1) ;oder Gui 1 wieder zur Bearbeitung zulsassen
GUISetState(@SW_HIDE, $idGui2) ;Gui 2 verstecken
Case $idbtnExit2
_end()
EndSwitch
EndSwitch
WEnd
Func _CreateGui2()
$idGui2 = GUICreate('GUI 2', 500, 300, 200, 50, -1, -1, $idGui1) ;wichtig ist der letzte Parameter falls beide gleichzeitig sichtbar sein sollen
;erzeugt eine GUI als Child von Gui1, die zurückgebebene ID wird in der Variablen $idGui2 gespeichert
$idMsgBox = GUICtrlCreateButton('&MsgBox', 20, 20, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "MsgBox" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
$idZurueck = GUICtrlCreateButton('&Zurück zu GUI 1', 20, 50, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "zurück" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
$idbtnExit2 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "beenden" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
EndFunc ;==>_CreateGui2
Func _end()
GUIDelete($idGui2)
GUIDelete($idGui1)
Exit
EndFunc ;==>_end
mfg autoBert
Hallo Marsi:
der beep ist bei mir total unzuverlässig. Ich habe mit folgendem Skript getestet:
[autoit]for $i = 1 to 100
$tStart =TimerInit()
Beep(32767,$i)
$tDiff = TimerDiff($tStart)
ConsoleWriteError($i & @TAB & $tDiff & @crlf)
Next
hier das Egebnis:
1 12.2149602812648
2 15.4592273599019
3 15.6153924590975
4 15.6307575404137
5 20.5713295963593
6 10.4937918087355
7 20.5738438823929
8 10.5007759366065
9 15.6740591332139
10 16.0674052149086
11 15.9414115481158
12 14.7711510820509
13 17.7564466992313
14 17.734376855159
15 11.5746554380515
16 30.6924483418982
17 31.1919531672321
18 35.362036236449
19 27.024105018934
20 31.1986579299883
21 31.6448040183878
22 30.7203848533822
23 31.2377690460659
24 31.1201563327183
25 35.3220870250269
26 27.7510130477477
27 30.7650832717566
28 31.8492992824507
29 30.7899467669774
30 33.1360550014038
31 30.2893244811841
32 45.2733517807431
33 46.822431342531
34 50.6153715067138
35 43.0543546735688
36 47.1911932941198
37 46.3944439865961
38 46.8146091193154
39 46.8389138843065
40 46.808463086789
41 50.8681969356441
42 42.9725006949207
43 47.2864567982802
44 46.3318662008719
45 47.3928949070343
46 46.3156630242112
47 64.9906622210365
48 59.6335567788644
49 62.815804802007
50 62.0444777199337
51 64.7984590220265
52 60.4923251418826
53 62.0919697894565
54 62.3400460114344
55 62.4512333271407
56 62.8521222669362
57 62.2000840888996
58 66.3615068395564
59 59.145226558124
60 61.7307506959683
61 62.5632587381916
62 62.2207571073977
63 78.0730511838795
64 78.087857534966
65 78.0842257884731
66 78.09847340933
67 78.4652798051149
68 78.094841662837
69 77.7869813062833
70 82.3249882317445
71 73.5467775932416
72 78.1062956325455
73 78.1750194507961
74 78.5499274349114
75 78.5180798118197
76 77.1461177328404
77 77.9311337055408
78 78.2549178736404
79 93.5255737810252
80 94.7248882190334
81 92.6276943019294
82 93.6836944360247
83 97.9303235467078
84 89.8603034743243
85 93.2855991473777
86 93.8063357214395
87 93.5495991809015
88 94.2357199029486
89 93.2914658147893
90 98.0820188040659
91 89.7672748910825
92 94.7444437770722
93 92.4673387260113
94 108.924737641237
95 109.272267844098
96 110.712115645983
97 107.903099416267
98 109.647455193328
99 109.192090056138
100 109.094591631059
Alles anzeigen
hast du den Ton gehört?
mfg autoBert
Hallo Der_Eismann,
um das Array zu sortieren fügst du einfach
[autoit]_ArraySort($aPrinter)
[/autoit]direkt vor dem Einfügen in die ComboBox hinzu. Da dein Textfile anscheinend etwas anders aufgebaut ist als meine Drucker.txt solltest du die Datei an deinen Lösungspost noch mit anhängen. Mit meiner Datei bekomme ich wenn ich überall "alle" anwähle keinen einzigen Drucker zur Auswahl angeboten,
mfg autoBert
Hallo Der_Eismann,
dies ist relatov einfach zu lösen
#include <GUIConstantsEx.au3>
#include<Array.au3>
#include<File.au3>
Dim $aTmp[1]
_FileReadToArray(@ScriptDir & "\Drucker.txt",$aTmp)
Global $aDrucker[$aTmp[0]+1][4]
For $i = 1 to $aTmp[0]
$aSplit = StringSplit($aTmp[$i],"|")
for $j = 1 to $aSplit[0]
$aDrucker[$i][$j-1] = $aSplit[$j]
Next
Next
$aDrucker[0][0] = $aTmp[0]
$sYourChoice = "Bitte wählen"
[/autoit] [autoit][/autoit] [autoit]Global $sGeb, $sEtage
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate("Druckerauswahl",240,120)
$idCboGeb = GUICtrlCreateCombo("",5,5,230)
_GetGeb()
$idCboEtage = GUICtrlCreateCombo("",5,35,230)
$idCboRaeume = GUICtrlCreateCombo("",5,65,230)
GUISetState()
While 1
$iMsg = GUIGetMsg()
Switch $iMsg
Case $GUI_EVENT_CLOSE
Exit
Case $idCboGeb
$sGeb = GUICtrlRead($idCboGeb)
if $sGeb <> $sYourChoice Then
_GetEtage($sGeb)
if $sGeb ="alle" Then
GUICtrlSetData($idCboEtage,"alle","alle")
_GetRaeume($sGeb,"alle")
EndIf
EndIf
Case $idCboEtage
$sEtage = GUICtrlRead($idCboEtage)
if $sEtage <> $sYourChoice Then _GetRaeume($sGeb,$sEtage)
EndSwitch
WEnd
Func _GetGeb()
Local $aGeb[1]
GUICtrlSetData($idCboGeb,"")
GUICtrlSetData($idCboGeb,$sYourChoice,$sYourChoice)
GUICtrlSetData($idCboGeb,"alle")
for $i = 1 To $aDrucker[0][0]
_ArrayAdd($aGeb,$aDrucker[$i][1])
Next
$aGeb = _ArrayUnique($aGeb)
for $i =1 to $aGeb[0]
if $aGeb[$i] <> "" Then GUICtrlSetData($idCboGeb,$aGeb[$i])
Next
EndFunc
Func _GetEtage($sGeb)
Local $aEtage[1]
GUICtrlSetData($idCboEtage,"")
GUICtrlSetData($idCboEtage,$sYourChoice,$sYourChoice)
GUICtrlSetData($idCboEtage,"alle")
for $i = 1 To $aDrucker[0][0]
if $sGeb = $aDrucker[$i][1] Then
_ArrayAdd($aEtage,$aDrucker[$i][2])
EndIf
Next
$aEtage = _ArrayUnique($aEtage)
for $i =1 to $aEtage[0]
if $aEtage[$i] <> "" Then GUICtrlSetData($idCboEtage,$aEtage[$i])
Next
EndFunc
Func _GetRaeume($sGeb,$sEtage)
Local $aRaeume[1]
GUICtrlSetData($idCboRaeume,"")
GUICtrlSetData($idCboRaeume,$sYourChoice,$sYourChoice)
for $i = 1 To $aDrucker[0][0]
if (($sGeb = $aDrucker[$i][1]) or ($sGeb = "alle")) And (($sEtage = $aDrucker[$i][2]) or ($sEtage = "alle")) Then
_ArrayAdd($aRaeume,$aDrucker[$i][3])
EndIf
Next
$aRaeume = _ArrayUnique($aRaeume)
for $i =1 to $aRaeume[0]
if $aRaeume[$i] <> "" Then GUICtrlSetData($idCboRaeume,$aRaeume[$i])
Next
EndFunc
das ganze habe ich mit folgenden Testdaten getestet:
mfg autoBert
Ich weis ja nicht was du für einen Computer hast auf meinem altertümlichen Notebok aus dem Jahre 2003 läuft das ganze in 63.4865604427378 ms durch,
mfg autobert
Hallo syncware,
du gehst dazu in einer Schleife
[autoit]for ... next; beste Wahl in diesem Fall
do ... until
while ... wend
durch eine Schleife mit
[autoit]_StringBetween
[/autoit]lässt du dir ein neues Array mit den Funden zurückgeben. Dieses trägst du dann mit
[autoit]GuiCtrlCreateListviewItem
[/autoit]in deine Listview.
mfg autoBert
danke
Schön, dann ist dein Problem ja gelöst. Schön wäre es auch wenn du das Thema auf gelöst setzt,
mfg autoBert
Hallo Henaro,
deine zufällige Wiedergabe aller Dateien kannst du s realisieren:
#include <File.au3>
#include <Array.au3>
$sDir = @SystemDir & "\"
$aFiles = _FileListToArray($sDir, '*', 1)
_ArrayDelete($aFiles,0)
Do
$iFlag = Random(0,1,0)
;ConsoleWrite("line 1" & @LF) ; Line 1
;ConsoleWrite("line 2" & @LF) ; Line 2
If $iFlag > 0.7 Then
;_ArrayDisplay($aFiles)
$iRandom = Random(0, UBound($aFiles)-1,1)
;ConsoleWrite($iRandom & @TAB)
ConsoleWrite($sDir & $aFiles[$iRandom]& @CRLF) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
_ArrayDelete($aFiles,$iRandom)
Sleep(1000)
EndIf
;ConsoleWrite("line 5" & @LF) ; Line 5
until UBound($aFiles) = 0
mfg autoBert
Dein Problem liegt darin dass du dein ArrayIndex Falsch angibst deine angabe wird wie folgt aussahen_ArrayDelete($Player, $arIdx) wobei $arIdx nur einem Indexeintrag entspricht da du aber ein Mehrdimensionales Array hast musst du auch die Dimension angeben !
Falsch! _ArrayDelete erwartet nur das Element und löscht dann diesen Eintrag in allen Dimensionen. Ausserdem tritt der Fehler nicht an der Stelle des Löschens (_arraydelete) sondern zuvor beim Vergleich (if $Player[$i][7] == 0) auf.
MaZy: lass dir mal direkt davor mit _arrydisplay das Array $player anzeigen, dann sollte dir der Fehler förmlich in die AUgen springen. Er wird zwar sicherlich an einer anderen (nicht geposteten) Stelle verursacht aber dies kann ich ja nicht nachprüfen,
mfg autoBert
Hallo Taliis.
beim arbeiten mit mehreren Guis verwendet man im GuiGetMsg-Mdus idealerweise den Extended Modus von GuiGetMsg():
#include <GUIConstantsEx.au3>
#include<WindowsConstants.au3>
Global $idGui1, $idGui2=-99, $idMsgBox, $idZurueck, $idbtnExit2
_CreateGui2() ;entweder hier oder erst wenn benötigt ($idbtmToGui2 Klick)
$idGui1 = GUICreate('GUI 1', 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $idGui1 gespeichert
;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
$idbtnToGui2 = GUICtrlCreateButton('&Aufruf GUI 2', 20, 20, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
$idbtnICQ = GUICtrlCreateButton('&ICQ', 20, 50, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "ICQ" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
$idbtnExit1 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
GUISetState(@SW_SHOW, $idGui1)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg(1) ;extended Modus wichtig!!
Switch $nMsg[1] ;für welches Fenster ist die Message
Case $idGui1 ;ab hier ist Gui 1 dran
Switch $nMsg[0] ;welche Message wurde ausgelöst
Case $idbtnToGui2
;GUISetState(@SW_Hide, $idGui1) ;Gui 1 verstecken, damit nur Gui2 sichtbar ist und bearbeitet werden kann
GUISetState(@SW_DISABLE, $idGui1) ;oder Gui 1 disablen, damit nur Gui2 bearbeitet werden kann
;If $idGui2 = -99 Then _CreateGui2() ;nur wenn nicht am Anfang bereits erzeugt nötig, dann auf Vorbelegung der Variable in Global achten)
GUISetState(@SW_SHOW, $idGui2) ;Gui 2 anzeigen
Case $idbtnICQ
MsgBox(0,"","Jetzt würde ICQ gestartet",0,$idGui1)
;Run("C:\Program Files\ICQ7.0\ICQ.exe")
Case $idbtnExit1, $GUI_EVENT_CLOSE
_end()
EndSwitch
Case $idGui2 ;ab hier ist Gui 2 dran
Switch $nMsg[0] ;welche Message wurde ausgelöst
Case $idMsgBox
MsgBox(0, 'Test', 'Test', 0, $idGui2)
Case $idZurueck, $GUI_EVENT_CLOSE
;GUISetState(@SW_Show, $idGui1) ;Gui 1 wieder anzeigen
GUISetState(@SW_ENABLE, $idGui1) ;oder Gui 1 wieder zur Bearbeitung zulsassen
GUISetState(@SW_HIDE, $idGui2) ;Gui 2 verstecken
Case $idbtnExit2
_end()
EndSwitch
EndSwitch
WEnd
Func _CreateGui2()
$idGui2 = GUICreate('GUI 2', 500, 300, 200, 50, -1, -1, $idGui1) ;wichtig ist der letzte Parameter falls beide gleichzeitig sichtbar sein sollen
;erzeugt eine GUI als Child von Gui1, die zurückgebebene ID wird in der Variablen $idGui2 gespeichert
$idMsgBox = GUICtrlCreateButton('&MsgBox', 20, 20, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "MsgBox" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
$idZurueck = GUICtrlCreateButton('&Zurück zu GUI 1', 20, 50, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "zurück" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
$idbtnExit2 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "beenden" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
EndFunc ;==>_CreateGui2
Func _end()
GUIDelete($idGui2)
GUIDelete($idGui1)
Exit
EndFunc ;==>_end
wichtig ist natürlich auch alle Variablen müssen eindeutig sein, nicht dass du dir beim Erstellen einer weiteren Gui die Variablen einer vorhergehenden überschreibst,
mfg autoBert
Wer sich der Sache annehmen möchte, dem würde ich das Script und eine genauere Beschreibung des Umstandes unter dem der Fehler auftritt zukommen lassen. Also bitte per PN melden bei Interesse.
Tut mir leid für die Geheimniskrämerei aber ich unterliege dabei auch gewissen Unternehmensauflagen.
Dann wäre dies ja etwas für die Jobbörse mit Gegenleistung, da der Betreffende dann sicher auch eine schriftliche Verschwiegenheitserklärung abgeben soll.
mfg autoBert
Die Ausgabe des Obfuscators im Striponly-Modus könnte auch ein passendes Skript produzieren
Wenn nicht, dann eben dieses zusammengefasste Skript kompilieren, verwenden und auf den Fehler warten.
Habe ich seben mit meinem URL-Manager ausgetestet:
Global Const $GUI_EVENT_CLOSE = -3
Global Const $GUI_ENABLE = 64
Global Const $GUI_DISABLE = 128
Global Const $CBS_AUTOHSCROLL = 0x40
Global Const $CBS_DROPDOWN = 0x2
Global Const $CB_INSERTSTRING = 0x14A
Global Const $CB_SETCURSEL = 0x14E
Global Const $__COMBOBOXCONSTANT_WS_VSCROLL = 0x00200000
Global Const $GUI_SS_DEFAULT_COMBO = BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $__COMBOBOXCONSTANT_WS_VSCROLL)
Global Const $tagPOINT = "long X;long Y"
Func _SendMessage($hWnd, $iMsg, $wParam = 0, $lParam = 0, $iReturn = 0, $wParamType = "wparam", $lParamType = "lparam", $sReturnType = "lresult")
Local $aResult = DllCall("user32.dll", $sReturnType, "SendMessageW", "hwnd", $hWnd, "uint", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
If @error Then Return SetError(@error, @extended, "")
If $iReturn >= 0 And $iReturn <= 4 Then Return $aResult[$iReturn]
Return $aResult
EndFunc
Global Const $HGDI_ERROR = Ptr(-1)
Global Const $INVALID_HANDLE_VALUE = Ptr(-1)
Global Const $KF_EXTENDED = 0x0100
Global Const $KF_ALTDOWN = 0x2000
Global Const $KF_UP = 0x8000
Global Const $LLKHF_EXTENDED = BitShift($KF_EXTENDED, ![]()
Global Const $LLKHF_ALTDOWN = BitShift($KF_ALTDOWN, ![]()
Global Const $LLKHF_UP = BitShift($KF_UP, ![]()
Func _WinAPI_GetClassName($hWnd)
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Local $aResult = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $hWnd, "wstr", "", "int", 4096)
If @error Then Return SetError(@error, @extended, False)
Return SetExtended($aResult[0], $aResult[2])
EndFunc
Func _WinAPI_IsClassName($hWnd, $sClassName)
Local $sSeparator = Opt("GUIDataSeparatorChar")
Local $aClassName = StringSplit($sClassName, $sSeparator)
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Local $sClassCheck = _WinAPI_GetClassName($hWnd)
For $x = 1 To UBound($aClassName) - 1
If StringUpper(StringMid($sClassCheck, 1, StringLen($aClassName[$x]))) = StringUpper($aClassName[$x]) Then Return True
Next
Return False
EndFunc
Func __UDF_DebugPrint($sText, $iLine = @ScriptLineNumber, $err=@error, $ext=@extended)
ConsoleWrite( _
"!===========================================================" & @CRLF & _
"+======================================================" & @CRLF & _
"-->Line(" & StringFormat("%04d", $iLine) & "):" & @TAB & $sText & @CRLF & _
"+======================================================" & @CRLF)
Return SetError($err, $ext, 1)
EndFunc
Func __UDF_ValidateClassName($hWnd, $sClassNames)
__UDF_DebugPrint("This is for debugging only, set the debug variable to false before submitting")
If _WinAPI_IsClassName($hWnd, $sClassNames) Then Return True
Local $sSeparator = Opt("GUIDataSeparatorChar")
$sClassNames = StringReplace($sClassNames, $sSeparator, ",")
__UDF_DebugPrint("Invalid Class Type(s):" & @LF & @TAB & "Expecting Type(s): " & $sClassNames & @LF & @TAB & "Received Type : " & _WinAPI_GetClassName($hWnd))
Exit
EndFunc
Global $Debug_CB = False
Global Const $__COMBOBOXCONSTANT_ClassName = "ComboBox"
Func _GUICtrlComboBox_InsertString($hWnd, $sText, $iIndex = -1)
If $Debug_CB Then __UDF_ValidateClassName($hWnd, $__COMBOBOXCONSTANT_ClassName)
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Return _SendMessage($hWnd, $CB_INSERTSTRING, $iIndex, $sText, 0, "wparam", "wstr")
EndFunc
Func _GUICtrlComboBox_SetCurSel($hWnd, $iIndex = -1)
If $Debug_CB Then __UDF_ValidateClassName($hWnd, $__COMBOBOXCONSTANT_ClassName)
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Return _SendMessage($hWnd, $CB_SETCURSEL, $iIndex)
EndFunc
Global Const $SS_ETCHEDHORZ = 0x10
Const $sElect = "bitte eine URL auswählen"
Global $URL
If Not FileExists(@ScriptDir & "\URL.INI") Then
$sData = "AutoIt=http://www.autoit.de" & @LF
$sData &= "Buch=http://www.autoit.de/index.php?page=Thread&postID=92818#post92818" & @LF
$sData &= "richtig Posten=http://www.autoit.de/index.php?page=Thread&threadID=4424" & @LF
$sData &= "Tutorial=http://wiki.autoit.de/wiki/index.php/Tutorial" & @LF
$sData &= "Skriptfehler finden=http://www.autoit.de/index.php?page=Thread&threadID=13785" & @LF
$sData &= "Hilfe=http://translation.autoit.de/autoitinfo/hilfedateien/AutoIt-Hilfe-Deutsch-3.3.6.1-Stand-09_05_10.zip" & @LF
$sData &= "MiniUrl-Manger=http://www.autoit.de/index.php?page=Thread&postID=164341#post164341" & @LF
IniWriteSection(@ScriptDir & "\URL.INI", "URLs", $sData)
EndIf
$hGui = GUICreate("MiniUrl-Manager", 300, 90, 302, 218)
$hcboProg = GUICtrlCreateCombo("", 8, 8, 200, 25)
$hbtnAdd = GUICtrlCreateButton("&Hinzufügen", 213, 8,80)
$hbtnDel = GUICtrlCreateButton("&Löschen", 213, 35,80)
$hlblURL = GUICtrlCreateLabel("", 8, 70, 290,25)
$hbtnOpen = GUICtrlCreateButton("&Öffnen", 8, 35,200)
GUICtrlSetState($hbtnOpen, $GUI_DISABLE)
GUICtrlCreateGraphic(0,65,300,2,$SS_ETCHEDHORZ )
read_INI()
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $hbtnAdd
$write1 = InputBox("URL", "Bitte eine gültige URL eingeben")
If $write1 <> "" Then
$write2 = InputBox("URL verwalten unter", "Bitte Kurzbegriff eingeben")
If $write2 <> "" Then IniWrite(@ScriptDir & "\URL.INI", "URLs", $write2, $write1)
GUICtrlSetData($hcboProg, $write2, $write2)
EndIf
show_Selection()
Case $hbtnDel
$sDel = GUICtrlRead($hcboProg)
IniDelete(@ScriptDir & "\URL.INI", "URLs", $sDel)
GUICtrlSetData($hcboProg,"")
read_INI()
Case $hcboProg
show_Selection()
Case $hbtnOpen
ShellExecute($URL)
EndSwitch
WEnd
Func read_INI()
$list1 = IniReadSection(@ScriptDir & "\URL.INI", "URLs")
ConsoleWrite($list1 & @CRLF)
if IsArray($list1) Then
For $i = 1 To $list1[0][0] +1 ;hier erzeuge ich den absichtlichen Laufzeitfehler
GUICtrlSetData($hcboProg, $list1[$i][0])
Next
EndIf
_GUICtrlComboBox_InsertString($hcboProg,$sElect,0)
_GUICtrlComboBox_SetCurSel($hcboProg,0)
EndFunc
Func show_Selection()
If GUICtrlRead($hcboProg) = $sElect Then
GUICtrlSetState($hbtnOpen, $GUI_DI SABLE)
GUICtrlSetData($hlblURL, "")
Else
GUICtrlSetState($hbtnOpen, $GUI_ENABLE)
$Prog = GUICtrlRead($hcboProg)
ConsoleWrite("ausgewählt: " & $Prog & @CRLF)
$URL = IniRead(@ScriptDir & "\URL.INI", "URLs", $Prog, "")
GUICtrlSetData($hlblURL, $URL)
EndIf
EndFunc
das Ergebnis weicht unwesentlich ab, wenn ich zu der angegebenen Zeilennr. die Anzahl der Includes im Originalskript:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/striponly
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: AutoBert: http://www.autoit.de/index.php?page…4341#post164341
Skriptbeispiel für den Umgang mit INI-Files und ComboBox
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
#Include <GuiComboBox.au3>
#include <StaticConstants.au3>
Const $sElect = "bitte eine URL auswählen"
Global $URL
If Not FileExists(@ScriptDir & "\URL.INI") Then
$sData = "AutoIt=http://www.autoit.de" & @LF
$sData &= "Buch=http://www.autoit.de/index.php?page=Thread&postID=92818#post92818" & @LF
$sData &= "richtig Posten=http://www.autoit.de/index.php?page=Thread&threadID=4424" & @LF
$sData &= "Tutorial=http://wiki.autoit.de/wiki/index.php/Tutorial" & @LF
$sData &= "Skriptfehler finden=http://www.autoit.de/index.php?page=Thread&threadID=13785" & @LF
$sData &= "Hilfe=http://translation.autoit.de/autoitinfo/hilfedateien/AutoIt-Hilfe-Deutsch-3.3.6.1-Stand-09_05_10.zip" & @LF
$sData &= "MiniUrl-Manger=http://www.autoit.de/index.php?page=Thread&postID=164341#post164341" & @LF
IniWriteSection(@ScriptDir & "\URL.INI", "URLs", $sData)
EndIf
$hGui = GUICreate("MiniUrl-Manager", 300, 90, 302, 218)
$hcboProg = GUICtrlCreateCombo("", 8, 8, 200, 25)
$hbtnAdd = GUICtrlCreateButton("&Hinzufügen", 213, 8,80)
$hbtnDel = GUICtrlCreateButton("&Löschen", 213, 35,80)
$hlblURL = GUICtrlCreateLabel("", 8, 70, 290,25)
$hbtnOpen = GUICtrlCreateButton("&Öffnen", 8, 35,200)
GUICtrlSetState($hbtnOpen, $GUI_DISABLE)
GUICtrlCreateGraphic(0,65,300,2,$SS_ETCHEDHORZ )
read_INI()
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $hbtnAdd
$write1 = InputBox("URL", "Bitte eine gültige URL eingeben")
If $write1 <> "" Then
$write2 = InputBox("URL verwalten unter", "Bitte Kurzbegriff eingeben")
If $write2 <> "" Then IniWrite(@ScriptDir & "\URL.INI", "URLs", $write2, $write1)
GUICtrlSetData($hcboProg, $write2, $write2)
EndIf
show_Selection()
Case $hbtnDel
$sDel = GUICtrlRead($hcboProg)
IniDelete(@ScriptDir & "\URL.INI", "URLs", $sDel)
GUICtrlSetData($hcboProg,"")
read_INI()
Case $hcboProg
show_Selection()
Case $hbtnOpen
ShellExecute($URL)
;ConsoleWrite($URL & @CRLF)
EndSwitch
WEnd
Func read_INI()
$list1 = IniReadSection(@ScriptDir & "\URL.INI", "URLs")
ConsoleWrite($list1 & @CRLF)
if IsArray($list1) Then
For $i = 1 To $list1[0][0] +1 ;hier erzeuge ich den absichtlichen Laufzeitfehler
GUICtrlSetData($hcboProg, $list1[$i][0])
Next
EndIf
_GUICtrlComboBox_InsertString ($hcboProg,$sElect,0)
_GUICtrlComboBox_SetCurSel($hcboProg,0)
EndFunc ;==>read_INI
Func show_Selection()
If GUICtrlRead($hcboProg) = $sElect Then
GUICtrlSetState($hbtnOpen, $GUI_DISABLE)
GUICtrlSetData($hlblURL, "")
Else
GUICtrlSetState($hbtnOpen, $GUI_ENABLE)
$Prog = GUICtrlRead($hcboProg)
ConsoleWrite("ausgewählt: " & $Prog & @CRLF)
$URL = IniRead(@ScriptDir & "\URL.INI", "URLs", $Prog, "")
GUICtrlSetData($hlblURL, $URL)
EndIf
EndFunc ;==>show_Selection
hinzuzähle stimmt es genau. Ob dies jetzt Zufall ist wage ich zu bezweifeln habe es aber nch nicht mit anderen Skripten ausprobiert,
mfg auoBert
Also um das "pushen" zu erklären.
Ich dachte ich hätte die Lösung gefunden und hab das in den Thread reingeschrieben und ihn als gelöst markiert. Funtioniert hatte es aber nicht, deswegen hab ich den Betrag wieder "geleert" und den Thread wieder auf offen gesetzt.
In einem solchen Fall löscht man einfach wieder den Beitrag, das man den Präfix umstellen kann hast du ja auch gefunden.
mfg autoBert
ZitatHeute, 13:39 Eröffnunsbeitrag
Heute, 13:57 sinnfreier Beitrag zum pushen,
So etwas führt in aller Regel dazu, dass das Thema ignoriert wird, so auch jetzt von mir,
autoBert
Hallo Julien,
ok Auftrag angenommen und (hoffentlich) erledigt du hast eine PN
mfg autoBert
Ich überprüfe stets die Koordinaten und nach jedem überprüfen, ob durch AutoIt Window Info oder speziellen Script die Koordinaten der gewünschten Position und sie ändern sich stetig. Gibt es da einen Grund und gegebenenfalls eine Lösung für?
Für die stetigen Änderungen der gewünschten Posistion musst du wohl den Entwickler des Prgrammes fragen, warum er die Elemente ständig anders platziert.
Damit man dir helfen kann solltest du die Anwendung benennen,
mfg autoBert
Hallo Julien,
du solltest auch die Deteien: @scriptdir\Data\DataList.txt und adresse.txt in deinen Eröffnungsbeitrag laden, bzw. angeben welche Dateien auf dem Server diesen entsprechen.
Adresse.txt enthält sicherlich
Da die Dateien auf dem Server eh nur sinnlosen Text enthalten könntest du auch ruhig kleinere einstellen,
mfg autoBert