Frohe Nachricht: Gun-Food hat den Fehler ausgemerzt - das Forum läuft wieder. Herzlichen Dank dafür.
Beiträge von BugFix
-
-
ich meine den Parameter
Na dann sag das doch gleich
iParam kann nur Integer sein. Außerdem sollte man folgenden (in der AutoIt-Hilfe nicht dokumentierten Zustand) berücksichtigen:
Integer 1 - 1000 in iParam werden vom System verwendet zur Zuordnung von IDs!
Also geh auf Nummer sicher und erhöhe beim Eintragen in iParam deinen Wert um z.B. 2000 und beim Auslesen ziehst du diese dann wieder ab.
Du kannst doch statt der Arraywerte, den Index des Arraywertes eintragen. Damit hast du doch auch direkt Zugriff auf deinen Eintrag. -
Es heiß nicht umsonst: _AddString

Also verpacke deine Zahlen als String: "0.123" -
Verwende folgendes Pattern:
[autoit]$string = StringRegExpReplace($string, "(<.>)([^<]+)(</.>)", "$2")
[/autoit] -
Möchte auch mal meinen Senf dazugeben:
Wenn schon Mathe draufsteht, sollte auch wirklich Mathe drin sein (also kein GUI oder GDI+ -Gedöns).
Als Matheaufgaben, die interessant sind und auch von allen angegangen werden können, würde ich Aufgaben sehen, in denen es darum geht neue/andere Lösungswege zu durchaus auch bekannten Problemen zu entwickeln. Dann liegt das Hauptaugenmerk auf der Logik als A und O der Mathematik.
Also dann viel Spaß dabei.
-
mal ein "X" oder "POQ" stehen kann und ich die Zeichanzahl nicht weiß.
In meinem Beispiel ist es völlig egal, wie lang die Inhalte der beiden Zellen sind. Ich speichere die Länge und formatiere danach die entsprechende Anzahl an Zeichen.
Und für die Farbe,Schriftart etc. kannst du natürlich auch Variablen verwenden, denen du einen entsprechenden Wert zuweist. -
Hast du dran gedacht, dass PixelGetColor absolute Koordinaten verwendet?
-
Spontan mir einfallende Lösung: PixelGetColor()
-
Schau in der Hilfe unter "ObjEvent" - da findest du einen Objekt-Error-Handler.
-
Ich hatte denselben Lösungsweg wie Oscar, auch mal in eine Funktion verpackt. Sollte dir dann einfacher fallen es zu nutzen.
Mit Parameter $array = 1 wird ein Array zurückgegeben.Spoiler anzeigen
[autoit];==============================================================================
[/autoit]
; Gibt eine Anzahl Zufallszahlen ohne Doppel als String oder Array zurück
; Bereich von - bis festlegbar (positiv Integer)
; mit -1 für Anzahl werden alle Zahlen des Bereichs in zufälliger Reihenfolge
; ausgegeben
;==============================================================================
Func _RandomExt($iBis, $iVon=1, $iAnzahl=-1, $array=0)
Local $count = $iBis -$iVon +1
If $iAnzahl = -1 Then $iAnzahl = $count
Local $aValue[$count], $start = $iVon, $sOut = '', $random
For $i = 0 To $count -1
$aValue[$i] = $start
$start += 1
Next
For $i = 0 To $iAnzahl -1
$random = Random(0, $count -1 -$i, 1)
$sOut &= $aValue[$random] & ','
$aValue[$random] = $aValue[$count -1 -$i]
Next
$sOut = StringTrimRight($sOut, 1)
If $array Then Return StringSplit($sOut, ',', 2)
Return $sOut
EndFunc ;==>_RandomExt -
Na siehste, wie einfach es ist, wenn du sagst, was du vor hast.
Maus brauchst du nicht. Du willst dem User ja nur einen Mauszeiger zeigen der bestimmte Dinge tut:
- MauszeigerIcon auf Mini-GUI platzieren, die du transparent machst
- statt echter Maus die Maus-GUI bewegen
- die tatsächlichen Mausklicks kannst du ja mit ControlClick realisieren, da Paint Standard-Windows Ctrl verwendet -
Du machst ja ein riesen Geheimnis draus.
Also du willst die Maus mit Präzision auf dem Monitor rumschubsen und der User soll sie sehen aber nicht selbst eingreifen können?
Da fällt mir nix zu ein.
-
Wie gesagt, die Maus an einer Position halten ist kein Problem, mein Programm muss sie aber verändern können. Lediglich der User soll die MausPos nicht verändern dürfen
Na dann fängst du die Maus mit _MouseTrap an der gewünschten Position und bei Bedarf gibst du sie frei und setzt sie an eine andere Position (MouseMove), wobei ich den Sinn dahinter nicht erkennen kann. Wozu brauchst du die Maus, wenn der User sie nicht benutzen soll? Dann kannst du sie doch einfach ausblenden. -
[autoit]
$status = ControlCommand($sTitle, "", "[CLASS:Button; INSTANCE:1]", "IsChecked", "") ; 1 für Checked
[/autoit] -
Dann probier mal den Aufruf "Rundll32.exe mouse,disable"
-
Fang doch die Maus mit _MouseTrap in einem ganz kleinen Bereich und verstecke den Cursor.
-
Registriere WM-Message "WM_KEYDOWN" und zähle damit.
-
Dein Pattern reicht nicht ganz.
Hiermit sollte auch das gehen. -
Hier mal noch eine Version, die flexibel ist (von-bis).
Spoiler anzeigen
[autoit]Local $Path = "C:\test\test.xls" ; 'Deine_Excel_Datei'
[/autoit] [autoit][/autoit] [autoit]
Local $sheetRead = "Tabelle1" ; "Name_Tabellenblatt_zum_Auslesen"
Local $sheetWrite = "Tabelle2" ; "Name_Tabellenblatt_zum_Schreiben"
Local $ReadRange = "A2:B14" ; der zu lesende Bereich (2 benachbarte Spalten)
Local $aRead = StringSplit($ReadRange, ':', 2)
Local $Col_start = StringRegExp($aRead[0], '\D+', 1)
Local $Row_start = StringRegExp($aRead[0], '\d+', 1)
Local $Row_ende = StringRegExp($aRead[1], '\d+', 1)
Local $Row_count = $Row_ende[0] - $Row_start[0]Local $sRead, $tmp, $iStart, $iLen
[/autoit] [autoit][/autoit] [autoit]
Local $oExcel = ObjCreate('Excel.Application')
$oExcel.Visible = 1
Local $oBook = $oExcel.Workbooks.Open($Path)For $i = 0 To $Row_count
[/autoit]
; === erstes Tabellenblatt auswählen, Werte auslesen
$sRead = $oBook.Sheets($sheetRead).Range($aRead[0]).Offset($i, 0).Value
$tmp = $oBook.Sheets($sheetRead).Range($aRead[0]).Offset($i, 1).Value
$iStart = StringLen($sRead)+2
$iLen = StringLen($tmp)
$sRead &= ' ' & $tmp
; === zweites Tabellenblatt zum Schreiben auswählen und Wert eintragen
$oBook.Sheets($sheetWrite).Range($aRead[0]).Offset($i, 0).Value = $sRead
; === Formatieren
With $oBook.Sheets($sheetWrite).Range($aRead[0]).Offset($i, 0).Characters(1, $iStart-2).Font
.Name = "Arial"
.FontStyle = "Fett"
.Size = 12
EndWith
With $oBook.Sheets($sheetWrite).Range($aRead[0]).Offset($i, 0).Characters($iStart, $iLen).Font
.Name = "Times New Roman"
.Size = 10
.ColorIndex = 3
EndWith
Next
Der einfachste Weg ist immer:
- was du tun willst in einem Makro aufzeichnen
- das Makro in VBA öffnen
Dort siehst du dann die verwendeten Methoden etc.
Wie du siehst, ist die Umsetzung in AutoIt problemlos. -
Eine weitere Variante wäre auch noch dieses: Symbiose: Array + Structure = StrucList ; Zugriff kpl. assoziativ
Du siehst: AutoIt - Unendliche Weiten