Hallo nachtvogel85,
nimm statt einer List eine ListView, da kannst du mit _GUICtrlListView_InsertItem Items an jeder beliebigen Stelle einfügen,
mfg (Auto)Bert
Hallo nachtvogel85,
nimm statt einer List eine ListView, da kannst du mit _GUICtrlListView_InsertItem Items an jeder beliebigen Stelle einfügen,
mfg (Auto)Bert
Hallo CrazyER,
hier das geänderte Skript:
#include <Process.au3>
[/autoit] [autoit][/autoit] [autoit]Global $maxArray = 10 ;anpassen auf Druckeranzahl
Global $DruckerTyp[$maxArray]
Global $Tonerartikel[$maxArray]
Global $Artikelzusatz[$maxArray]
Global $Tonermeldebestand[$maxArray]
Global $Tonerbestand[$maxArray]
Global $TonerMaximalBestand[$maxArray]
Global $Meldung[$maxArray]
Global $TonerBestellmenge
Global $Output
Global $Section
Global $x
Global $y
Global $i
Select
Case $CmdLine[1] == "Geb.1"
$inifile = @ScriptDir&"\1_Tonerstandplugin.ini"
_INIlesen()
_Tonerlisteanpassung()
Case $CmdLine[1] == "Geb.2"
$inifile = @ScriptDir&"\2_Tonerstandplugin.ini"
_INIlesen()
_Tonerlisteanpassung()
Case $CmdLine[1] == "Geb.3"
$inifile = @ScriptDir&"\3_Tonerstandplugin.ini"
_INIlesen()
_Tonerlisteanpassung()
Case $CmdLine[1] == "Geb.4"
$inifile = @ScriptDir&"\4_Tonerstandplugin.ini"
_INIlesen()
_Tonerlisteanpassung()
Case $CmdLine[1] == "check"
_INIlesen()
_check()
Case $CmdLine[0] < 0
_RunDOS("echo Bitte Parameter mit angeben")
exit 3
EndSelect
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _INIlesen()
$i = 0
$y = 1
$x = 1
$Error = 0
$Section = IniReadSectionNames ($inifile)
$maxArray = $Section[0]
; Ini-Datei wird ausgelesen und in die Arrays geschrieben. $Tonerbestand-/meldebstand werden als Zahl eingelesen, damit ein Verlgeich funktioniert.
While $i < $maxArray
$DruckerTyp[$i] = IniRead($inifile, $Section[$y], "DruckerTyp","")
$Tonerartikel[$i] = IniRead($inifile, $Section[$y], "Tonerartikel","")
$Artikelzusatz[$i] = IniRead($inifile, $Section[$y], "Artikelzusatz","")
$Tonermeldebestand[$i] = Number(IniRead($inifile, $Section[$y], "Tonermeldebestand",""))
$Tonerbestand[$i] = Number(IniRead($inifile, $Section[$y], "Tonerbestand",""))
$TonerMaximalBestand[$i] = Number(IniRead($inifile, $Section[$y], "TonerMaximalBestand",""))
$i = $i + 1
$y = $y + 1
WEnd
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _check()
; Hier wird der eigentliche Check ausgelöst. Dieser prüft den Tonerbestand gegenüber dem Meldebestand.
$y = 1
$i = 0
While $i < $maxArray
If $Tonerbestand[$i] <= $Tonermeldebestand[$i] Then
$TonerBestellMenge = $TonerMaximalBestand[$i] - $Tonerbestand[$i]
$Meldung[$x] = '" | "'&$TonerBestellMenge&"x "&$Tonerartikel[$i]&" "&$Artikelzusatz[$i]&" fuer "&$DruckerTyp[$i]
$x = $x +1
$i = $i +1
Else
$i = $i +1
EndIf
WEnd
If $x >1 Then
$Error = 1
EndIf
; Hier wird der $Output mit der $Meldung befüllt/ergenzt
While $x > 0
$Output = $Output &$Meldung[$x]
$x = $x -1
WEnd
; Wenn ein Meldebestand unterschritten worde ist, wird hier die Warnung ausgegeben, ansonsten ist alles OK.
If $Error >= 1 Then
_RunDOS("echo Tonerbestand KRITISCH ! "&$Output)
exit 2
Else
_RunDOS("echo Tonerbestand OK")
exit 0
EndIf
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _Tonerlisteanpassung()
; Hier wird der Tonerstand angepasst, wenn das Plugin mit dem $Tonerartikel als Parameter aufgerufen wird
$i = 0
$y = 1
While $i < $maxArray
If $CmdLine[2] == $Tonerartikel[$i] Then
$Tonerbestand[$i] = $Tonerbestand[$i] - 1
IniWrite ($inifile, $Section[$y], "Tonerbestand", $Tonerbestand[$i] )
EndIf
$y = $y +1
$i = $i +1
WEnd
EndFunc
mfg (Auto)Bert
Hallo @Jautois,
autoBert: Wie der Fehler schon sag, gibt _StringBetween in Zeile 98 kein Array zurück. Ich weiß nicht was du in das InputFeld "Die Gleichung" eingeben hast, aber mit z.B.: "x^1=2" klappt es.
Die Labels sind bei mir nicht lesbar (zumindest ohne Bild), ich hatte ohne eine Einabe gestartet. Die Fehlermeldung habe ich nich weiter analysiert.
@ Sortoc: Ohne Erklärung der zulässigen Eingaben, habe ich später aber keine Gleichungen lösen können z.B.: 2*x² = 8 ergibt keine Lösung, also eine Erklärung ist da schon noch nötig,
mfg (Auto)Bert
Hallo Sortoc,
die Gui ist bei mir ruckzuck aufgebaut, wenn ich danah allerdings Start drücke steigt das Skript mit folgender Fehlermeldung aus:
>"C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Programme\AutoIt3\Examples\Tests\gleichunsrechner.au3" /autoit3dir "C:\Programme\AutoIt3" /UserParams
+>00:08:00 Starting AutoIt3Wrapper v.2.0.0.1 Environment(Language:0407 Keyboard:00000407 OS:WIN_XP/Service Pack 3 CPU:X86 OS:X86)
>Running AU3Check (1.54.14.0) from:C:\Programme\AutoIt3
+>00:08:01 AU3Check ended.rc:0
>Running:(3.3.0.0):C:\Programme\AutoIt3\autoit3.exe "C:\Programme\AutoIt3\Examples\Tests\gleichunsrechner.au3"
C:\Programme\AutoIt3\Examples\Tests\gleichunsrechner.au3 (99) : ==> Subscript used with non-Array variable.:
$expression = $left_side[0] & " - (" & $right_side[0] & ")"
$expression = $left_side^ ERROR
->00:08:06 AutoIT3.exe ended.rc:1
+>00:08:07 AutoIt3Wrapper Finished
>Exit code: 1 Time: 7.665
Alles anzeigen
aus,
mfg (Auto)Bert
Hallo,
wenn ich mir die aktuellste für AutoIt optimierte Scite Verison von der Homepage lade, dann kommt bei Kaspersky Internet Security eine Virenmeldung. Ist das ein Falschalarm?
Lade diese vERSION DOCH BITTE AUF VIRUSTOTAL.COM HOCH. Dort prüfen 40 verschiedene Scanner auf Viren, damit kannst du besser einschätzen ob es sich um einen Fehlalarm handelt,
mfg (Auto)Bert
schau mal in diesen Thread
mf (Auto)Bert
Hallo Imer,
Zitatdas Problem ist jetzt das die Checksummen immer die gleichen sind (auch wenn die Datei größer/kleiner ist/ich inen kack mit Editor reinschreib/rausmach)
Falls du es richti anwendest, deutet dies darauf hin, dass die Function fehlehaft ist.
ZitatHat vll einer ne Idee wie ichs lösen könnte?
Eine andere Function einsetzen (z.B.: _Crypt_HashFile ist zwar kein CRC sollte aber den sleben Zweckerfüllen), bzw. selbst eine entwickeln,
mf (Ato)Bert
Hallo opaed,
das in #2 gepostete Skript von PCKING erreicht bei mit eine Prozessorlst von über 50%, dass lag daran dass er im OnEvent-Modus in der Idle-Endlosschelife keinen sleep hatte. Übrigens ist der kleinstmögliche Sleepwert 10. Ein einfügen eines Sleep's verringert dir Last gegen null,
mfg (Auto)Bert
Hallo Jonathan,
das Skript beendet sich bei mir sofort wieder ohne eine Fehlermeldung,
mfg (Auto)Bert
Hallo der Storch,
ich habe das Skrip noch einmal geändert:
#include <GUIconstants.au3>
#include <Array.au3>
#include <File.au3>
Global $Start
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]GUICreate("Name:Testgui",800,100,0,0)
GUISetOnEvent($GUI_EVENT_CLOSE,"_x4") ;damit auch auf das X reagiert wird
GUICtrlCreateButton ("exe&1",0,20,180,50)
GUICtrlSetOnEvent(-1, '_x1')
GUICtrlCreateButton ("exe&2",200,20,180,50)
GUICtrlSetOnEvent(-1, "_x2")
GUICtrlCreateButton ("exe&3",400,20,180,50)
GUICtrlSetOnEvent(-1, "_x3")
GUICtrlCreateButton ("be&enden",600,20,180,50)
GUICtrlSetOnEvent(-1, "_x4")
GUISetState(@SW_SHOW)
while 1 ;im OnEventMode notwendig
sleep(1000)
WEnd
Func _x1()
$Start = 1
ControlClick("titel", "", "[CLASS:Button;INSTANCE:7]")
EndFunc
Func _x2()
$Start = 2
ControlClick("titel", "", "[CLASS:Button;INSTANCE:8]")
EndFunc
Func _x3()
$Start = 3
ControlClick("titel", "", "[CLASS:Button;INSTANCE:9]")
EndFunc
Func _x4()
Exit
EndFunc
#cs
If $Start = 1 Then
ControlClick("titel", "", "[CLASS:Button;INSTANCE:7]")
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit]If $Start = 2 Then
[/autoit] [autoit][/autoit] [autoit]ControlClick("titel", "", "[CLASS:Button;INSTANCE:8]")
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit]If $Start = 3 Then
[/autoit] [autoit][/autoit] [autoit]ControlClick("titel", "", "[CLASS:Button;INSTANCE:9]")
[/autoit] [autoit][/autoit] [autoit]EndIf
#ce
jetzt wird bei jedem Klick in deiner Gui der enzsprechende ControlClick ausgeführt. Bei der Version vob PC_King wirdwurde nach einmal starten, der ControlClick laufend wiederholt,
edit: sehe gerade PC_King hat von OnEvent-Modus auf MSG-Loop-Modus umgestellt, wenn du die ControlClicks in die entsprechende fun kopierst machen beide das gleiche,
mfg (Auto)Bert
Hallo Der Storch,
das geänderte Skript:
#include <GUIconstants.au3>
#include <Array.au3>
#include <File.au3>
Global $Start
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]GUICreate("Name:Testgui",800,100,0,0)
GUISetOnEvent($GUI_EVENT_CLOSE,"_x4") ;damit auch auf das X reagiert wird
GUICtrlCreateButton ("exe1",0,20,180,50)
GUICtrlSetOnEvent(-1, '_x1')
GUICtrlCreateButton ("exe2",200,20,180,50)
GUICtrlSetOnEvent(-1, "_x2")
GUICtrlCreateButton ("exe3",400,20,180,50)
GUICtrlSetOnEvent(-1, "_x3")
GUICtrlCreateButton ("beenden",600,20,180,50)
GUICtrlSetOnEvent(-1, "_x4")
GUISetState(@SW_SHOW)
while 1 ;im OnEventMode notwendig
sleep(1000)
WEnd
Func _x1()
$Start = 1
EndFunc
Func _x2()
$Start = 2
EndFunc
Func _x3()
$Start = 3
EndFunc
Func _x4()
Exit
EndFunc
If $Start = 1 Then
[/autoit] [autoit][/autoit] [autoit]ControlClick("titel", "", "[CLASS:Button;INSTANCE:7]")
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit]If $Start = 2 Then
[/autoit] [autoit][/autoit] [autoit]ControlClick("titel", "", "[CLASS:Button;INSTANCE:8]")
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit]If $Start = 3 Then
[/autoit] [autoit][/autoit] [autoit]ControlClick("titel", "", "[CLASS:Button;INSTANCE:9]")
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit]Kommntare sind im Skript,
edit: zu langsam
mfg (Auto)Bert
Hallo Cartan12,
Meine Bildschirmauslösung beträgt 1280 x 1024 Pixel. Die Webseite auf der ich Koordinaten ermitteln und anklicken will ist jedoch 1280 x 4986 Pixel gross.
Du scheinst einen seeeehr großen Monitor zu haben,
mfg (Auto)Bert
Hallo @ Cartan12
dein Code prüft nur ab ob das Element $array[5] ungleich leer ist. Zum prüfen ob es existiert ist dies:
[autoit]#include <array.au3>
$var = "Hall"
$array = StringSplit($var, "")
If IsArray($array) Then
_ArrayDisplay($array)
If $array[0] < 5 Then MsgBox(0, "!", "$Array[5] existiert nicht!")
If UBound($array) < 6 Then ConsoleWrite("$Array[5] existiert nicht!")
; ubound gibt die Anzahl zurück und da das Array 5 Elemente enthält [0] die Dimension enthält bei Ubound berüksichtien
EndIf
die bessere Methode,
mfg (Auto)Bert
Hallo m-obi,
siehe Hilfe: [quote]Checkbox, Radio, Group or Progress controls cannot be painted if the "Windows XP/Vista style" is used./quote]
Du kannst aber ein Raadiocontrol ohne Text erstellen und dahinter ein Label plazieren,
mfg (Auto)Bert
Hallo Ealendil,
leider lässt lies sich das Skript nicht kompilieren. Fehlermeldungen::
>"C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Programme\AutoIt3\Examples\Tests\t29.au3" /autoit3dir "C:\Programme\AutoIt3" /UserParams
+>03:35:07 Starting AutoIt3Wrapper v.2.0.0.1 Environment(Language:0407 Keyboard:00000407 OS:WIN_XP/Service Pack 3 CPU:X86 OS:X86)
>Running AU3Check (1.54.19.0) from:C:\Programme\AutoIt3
C:\Programme\AutoIt3\Examples\Tests\t29.au3(42,32) : WARNING: $Fo: possibly used before declaration.
ControlSetText($Form, "", $Fo rm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Programme\AutoIt3\Examples\Tests\t29.au3(42,32) : ERROR: syntax error
ControlSetText($Form, "", $Fo rm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Programme\AutoIt3\Examples\Tests\t29.au3(42,32) : ERROR: $Fo: undeclared global variable.
ControlSetText($Form, "", $Fo rm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Programme\AutoIt3\Examples\Tests\t29.au3 - 2 error(s), 1 warning(s)
!>03:35:08 AU3Check ended.rc:2
+>03:35:23 AutoIt3Wrapper Finished
>Exit code: 0 Time: 16.782
Alles anzeigen
Scheint sich beim Posten ein Leerzeichen in Zeile 42 eingeschlichen zu haben, nach entfernen aus $Fo rm wird $Form läuft es problemlos. Vom Konzept her erinnert es mich an Oscars Loginbox. Schöne Arbeit, weiter so
und herzlich willkommen im Forum,
mfg (Auto)Bert
Halo Trama,
ich habe kein KlickTel, kann mir aber durchaus vorstellen, dass du mit deinem Vorhaben gegen die AGB's bzw. Lizenzbestimmungen verstösst. Dies solltest du also vorher abklären. Grundsätzlich solltest du dir die Hilfe zu Send, ControlSend und MouseClick anschauen. Am besten arbeitest du dich durch die Kapitel der Hilfe ab dem Thema AutoIt Window Information Tool bis eischliesslich den Tutorials Tutorial - Notepad
und Tutorial - WinZip durch, dann hast du dass notwendige Grundlagenwissen um das Projekt zu realisieren,
mfg (Auto)Bert
Hallo baku,
alle Programme die in Ordnern liegen, der sich im Suchpfad befinden, können auf diese Weise gestartet werden. AUF BS-Ebene <WIN> und <R> drücken und der Ausführen-Dialog erscheint,
mfg (Auto)Bert
Hallo gixx,
Alles anzeigenHi,
Sorry erstmal, dass ich diesen verstaubten Thread wieder
aus der Kiste hole.
Aber ich habe eine Frage dazu und wollte keinen neuen
Thread erstellen. Also:
Gibt es die Möglichkeit, den "Windows-Rand" auch zu
überschreiben? In dem letzten Beispiel hier wird der ja
noch angezeigt.
MfG
qixx
einfach beim erstellen
[autoit]$hfrmMain = GUICreate("", $iWidht, $iHeight, 0, 0, $WS_POPUPWINDOW)
[/autoit]mfg (Auto)Bert
Hallo teido,
Herlich willkomen im Forum. Du musst das Skript zuerst speichern, bevor du es starten kannst
mfg Auto)Bert