1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. autoBert

Beiträge von autoBert

  • Include Excel undefined function

    • autoBert
    • 9. April 2016 um 10:24

    @Tweaky sucht schon seit längerem verzweifelt Hilfe für die Übersetzung zunächst auf den Stand 3.3.10.2 Wenn dieser Kraftakt geschafft ist wird es imho auch schnell eine dt. Hilfe 3.3.14.2 geben, da dann nicht mehr viele Änderungen sind.
    Für Excel,Word etc. kannst du mal in @Water's (Autor der Excel UDF) Signatur (z.B.: hier) schauen, da sind noch weitere Links, da sie auf das Entwicklerforum verweisen leider nur auf Englisch. Ich bin mir nicht sicher ob er am Übersetzungsprojekt mitmacht, aber als der Entwickler der UDF und deutsch als Muttersprache (naja Österreichisch) wäre er prädestiniert dafür. Ich gehe stark davon aus, daß er sich in diesem Thema noch meldet, dann kannst du gleich mal fragen ob er dt. Dateien als Vorbereitung für die dt. Hilfeübersetzung hat.

  • Problem bei zufälliger Zeilenausgabe

    • autoBert
    • 9. April 2016 um 04:18

    Und die Dateien zum testen soll man selber schreiben? Auf Anhieb sehe ich allerdings, daß die Func Los nie aufgerufen werden kann, da Opt("guioneventmode", 1) fehlt. In diesem würde sich die Gui nicht schliessen lassen da auch GUISetOnEvent($GUI_EVENT_CLOSE, 'DeineExitFunc') fehlt. Falls GuiOnEventModekannst du Zeilen 19-24 mit einer einzigen Zeile Sleep(1000) ersetzen. Falls nicht GuiOnEventMode (also GuiGetMsg-Modus) kannst du Zeile 15 löschen, mußt dann aber noch den ButtonClick im Switch-Block abhandeln (einfach mal das Beispiel zu GUICtrlCreateButton) anschauen.

    Egal welcher Modus Zeilen 27 bis 32 (Dateipfade) müssen vor die While Schleife verschoben werden. Lies dir in der Hilfe auf jedenfall den Abschnitt GUI Reference komplett durch, ist wichtig zu wissen. Den sonst passiert das was du gemacht hast 2 Konzepte durcheinander geworfen.


    Spoiler anzeigen
    Code
    $Liste1 = "Aktivität1.txt"
    $Liste2 = "Aktivität2.txt"
    $Liste3 = "Art1.txt"
    $Liste4 = "Art2.txt"
    $Liste5 = "Ort.txt"
    $Liste6 = "Zusatz.txt"
  • Include Excel undefined function

    • autoBert
    • 9. April 2016 um 03:49

    Du benutzt die dt. Hilfeübersetzung und verwendest daher noch die alten Beispiele für eine mittlerweile veraltete UDF? Mittlerweile hat @water die Excel.au3 komplet neu geschrieben. Aber auch andere Funktionen haben sich seit dem letzten Update der dz. Hilfe geändert. Alle die eine AutoItversion > 3.3.8.X benutzen, kann ich daher nur raten das englische Original zu installieren. Wer unbedingt auf die dt. Hilfe angewiesen ist und UDF's zum Officepaket benutzt sollte auf die letzte Version vor dem Redisign dieser UDF's zurück, afair 3.3.8.X.

    Das Skript im Anhang sollte funktionieren.

    Dateien

    _Excel_RangeWrite.au3 1,23 kB – 284 Downloads
  • Mehrere Text-Dateien lesen, einen variablen Text suchen und diesen verändern

    • autoBert
    • 8. April 2016 um 20:37

    Ja es ist möglich, am besten schaust du in der Hilfe nach File* bzw. _File* String*, RegEx*-Funktionen und _ReplaceStringInFile.

    Da hier kein 24/7 Supportseite ist brauchst du das Thema auch nicht pushen (geht auch nicht schneller), solange niemand geantwortet hat ust es in diesem Forum üblich das Thema zu bearbeiten/ergänzen.

    Edit: hilfreich wäre auch Beispiele vorher nachher einzustelleh

    mfg autoBert

  • Mittels FF.au3 drag and drop simulieren

    • autoBert
    • 8. April 2016 um 16:06

    Das wäre der bisher 1. plausible Grund ImageSearch zu nutzen. Mir ist keine Funktion in der FF.au3 mit bekannt die das Dropereignis simuliert.

    Edit: sollte mit _FFDispatchEvent möglich sein.

  • Alternativer Lösungsweg - GuiCtrlSetBkColor

    • autoBert
    • 8. April 2016 um 15:50
    Zitat von Yaerox

    Die Aussage kann ich grad nicht nachvollziehen. Sage ich das irgendwo?

    dann habe ich:

    Zitat von Yaerox

    Dann habe ich das nochmal gelesen und dachte ich kann dort eine Zahl angeben, die als Control-ID gesetzt wird. Dann wird jedoch die Zeile nicht gefärbt (Grund unbekannt):

    wohl falsch interpretiert.

    Zitat von Yaerox

    So wie du es machst (erstellen und dann in einer zweiten Zeile diese Information an die LV-Zeile anhängen) mach ich das aktuell ja auch.
    Man scheint dort ja alle control-ID zu erhalten

    man erhält damit ein Array mit allen Spalteninhalten zu einem LV-Item. Du mußt übrigens nicht alle Spaltenwerte angeben, nur die geänderten:

    Code
    GUICtrlSetData($cID_LVITEM2, "|New B||New D||" & $cID_LVITEM2)


    ein "zusammenstringen" mit Werten aus dem ResultArray von _GUICtrlListView_GetItemTextArray schadet aber auch nicht:

    Code
    $aItem = _GUICtrlListView_GetItemTextArray($idListview, 1);achtung Index nicht CtrlID
     	GUICtrlSetData($cID_LVITEM2, $aItem[1]&'|'&'New B|'&$aItem[3]&'|New D||'& $cID_LVITEM2)

    Wichtig zu wissen ist, daß _GUICtrlListView_GetItemTextArray den 0 basierten Index des LV-Items erwartet und nicht die CtrlID. Das schöne daran ist aber ist: ist kein Index oder -1 angegeben wird das 1. selektierte genommen. Deshalb immer nur in LV mit $LVS_SINGLESEL verwenden, bzw. Routine(n) anpassen:

    Code
    Case $idDel
    			AdlibUnRegister("_RandomOnOff") ;damit sich die Indizes nicht durch Neu-Sortierung ändern
    			$aSelected = _GUICtrlListView_GetSelectedIndices($listview, True)
    			If IsArray($aSelected) Then
    				For $i = 1 To $aSelected[0]
    					$aItem = _GUICtrlListView_GetItemTextArray($listview, $aSelected[$i])
    					If MsgBox($MB_YESNO + $MB_ICONQUESTION + $MB_DEFBUTTON2, $aItem[1], 'Soll Eintrag gelöscht werden?', $hGui) = $idYes Then
    						GUICtrlDelete($aItem[3])
    						$iItem = _ArraySearch($aNames, $aItem[1])
    						_ArrayDelete($aNames, $iItem)
    					EndIf
    				Next
    			EndIf
    			AdlibRegister("_RandomOnOff", Random(5000, 10000, 1))
    Alles anzeigen
  • Unterschiedliche Antwortzeiten der Anwendung dadurch sporadische Ausführung

    • autoBert
    • 8. April 2016 um 14:12

    WinWaitActive, dabei den TimeOutParameter mit ausreichender Zeit benutzen.

    Auch ein Umstellen deines Skriptes auf den GuiOnEventMode kann bei bestimmten Konstellationen helfen, dies kann ich aber ohne Skript für deinen Fall nicht beurteilen. Falls es wenn du selbst die Maus hin- und herbewegst schneller abläuft ist es aber so eine Konstellation.

  • Zugriff auf TreeView Control von regedit.exe, wenn regedit bereits geöffnet ist

    • autoBert
    • 8. April 2016 um 14:04

    da es so aussieht als hätte der Bengel auch im Entwicklerfoum als Eule getrollt und dort die Lösung selbst gefunden, hier die Lösung:

    Code
    #AutoIt3Wrapper_UseX64=y
  • Fenster mit TreeVieweinträgen und verschiedene EingabeFelder

    • autoBert
    • 8. April 2016 um 13:47

    du solltest dein bsiheriges Skript dazu einstellen, dann wird es einfacher zu helfen.

  • Alternativer Lösungsweg - GuiCtrlSetBkColor

    • autoBert
    • 8. April 2016 um 10:18

    du könntest die CtrlId's der LV-Items in einem Array speichern. Ich verstehe allerdings nicht warum es nicht möglich sein soll sie auch direkt in der LV abzuspeichern. Ich werde mal das verlinkte Beispiel so abändern und dann hierein editieren.
    Erledigt:

    C
    ;https://autoit.de/index.php/Thread/84194-Alternativer-L%C3%B6sungsweg-GuiCtrlSetBkColor/?postID=673544#post673544
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <ListviewConstants.au3>
    #include <array.au3>
    #include <File.au3>
    Global $aNames[1]
    _FileReadToArray('Benutzer.txt',$aNames,$FRTA_NOCOUNT)
    $hGui=GUICreate("LV-Items färben", 220, 400)
    $listview = GUICtrlCreateListView("Name|Status|CtrlID", 10, 10, 210, 350)
    For $i = 0 To UBound($aNames)-1
    	$iItem = GUICtrlCreateListViewItem($aNames[$i] & "|Offline", $listview)
    	GUICtrlSetData($iItem, "||" & $iItem)
    Next
    $idAdd=GUICtrlCreateButton('+',10,370,30)
    $idDel=GUICtrlCreateButton('-',180,370,30)
    _GUICtrlListView_SetColumnWidth($listview, 0, 140)
    _GUICtrlListView_SetColumnWidth($listview, 1, 40)
    ;_GUICtrlListView_SetColumnWidth($listview, 2, 0) ;0 = unsichtbar
    _GUICtrlListView_RegisterSortCallBack($listview)
    _RandomOnOff()
    GUISetState(@SW_SHOW)
    ;GUICtrlSetColor(-1, 0x22C21F)
    ;GUICtrlSetColor(-1, 0xAA0000)
    While 1
    	$msg = GUIGetMsg()
    	Switch $msg
    		Case $GUI_EVENT_CLOSE
    			_GUICtrlListView_UnRegisterSortCallBack($listview)
    			_FileWriteFromArray('Benutzer.txt',$aNames)
    			Exit
    		Case $listview
    			_GUICtrlListView_SortItems($listview, GUICtrlGetState($listview))
    		Case $idDel
    			$aItem = _GUICtrlListView_GetItemTextArray($listview)
    			If MsgBox($MB_YESNO+$MB_ICONQUESTION+$MB_DEFBUTTON2,$aItem[1],'Soll Eintrag gelöscht werden?',$hGui)=$idYes Then
    				GUICtrlDelete($aItem[3])
    				;to do auch noch aus $aNames löschen
    			EndIf
    		Case $idAdd
    			$sText=InputBox('Neuer Benutzer','Benutzer',Default,'',20)
    			If MsgBox($MB_YESNO+$MB_ICONQUESTION+$MB_DEFBUTTON1,$sText,'Soll Eintrag hinzugefügt werden?',$hGui)=$idYes Then
    				$iItem = GUICtrlCreateListViewItem($sText & "|Neu", $listview)
    				_ArrayAdd($aNames,$sText)
    				GUICtrlSetData($iItem, "||" & $iItem)
    				_GUICtrlListView_EnsureVisible($listview,UBound($aNames)-1)
    				GUICtrlSetBkColor($iItem,0x00FF12)
    				Sleep(2000)
    			EndIf
    	EndSwitch
    WEnd
    Func _RandomOnOff()
    	AdlibUnRegister("_RandomOnOff")
    	_GUICtrlListView_BeginUpdate($listview)
    	For $i = 0 To _GUICtrlListView_GetItemCount($listview)-1
    		$aItem = _GUICtrlListView_GetItemTextArray($listview, $i)
    		;_ArrayDisplay($aItem)
    		If IsArray($aItem) Then
    			If Random(1, 3, 1) = 1 Then
    				GUICtrlSetData($aItem[3], "|Off")
    				GUICtrlSetBkColor($aItem[3], 0xAA0000)
    			Else
    				GUICtrlSetData($aItem[3], "|On")
    				GUICtrlSetBkColor($aItem[3], 0x22C21F)
    			EndIf
    		EndIf
    	Next
    	If GUICtrlGetState($listview) = 1 Then
    		_GUICtrlListView_SortItems($listview, 0)
    		_GUICtrlListView_SortItems($listview, 1)
    	EndIf
    	_GUICtrlListView_EndUpdate($listview)
    	AdlibRegister("_RandomOnOff", Random(5000, 10000, 1))
    EndFunc   ;==>_RandomOnOff
    Alles anzeigen

    Edit: Add- und DeleteButton noch hinzugefügt.

  • While Schleife/Function unterbrechen/abbrechen

    • autoBert
    • 8. April 2016 um 01:02

    @Christopg54: da täuscht du dich. Auch im OnEventmodus wird eine gestarte Funktion zuende ausgeführt danach wird das nächste Event abgearbeitet. Bei Endlosschleifen also nie.

    @mmk 1988: schau dir https://www.autoitscript.com/wiki/Interrupt…unning_function an.
    Wichtiger zu wissen ist allerdings, daß Mausklicks und Co. das schlechteste Mittel sind da fehler anfällig dies besonders bei Benutzung mit unterschiedlichen Auflösungen.
    Wenn du deine zu automatisierende Anwendung nennst wird dir eine bessere/zuverlässigere Lösung gezeigt.

  • Excel UDF Schreibe in Zelle wenn leer

    • autoBert
    • 7. April 2016 um 14:10

    Vielleicht so:

    Code
    #include <Excel.au3>
    $pfad = @scriptdir&"\test.xlsx"
    $tabelle = "Tabelle1"
    $Spalte="B"
    $Zeile=3
    $wert = "12345"
    $oExcel=_Excel_Open(true)
    $oWorkbook=_Excel_BookOpen($oExcel,$pfad)
    _ExcelWriteIfEmpty($oWorkbook,$tabelle,$wert,$Spalte,$Zeile)
    _Excel_BookClose($oWorkbook)
    _Excel_Close($oExcel)
    
    
    Func _ExcelWriteIfEmpty($oWorkbook,$sTable,$sValue,$sCol,$sRow)
    	Local $sTmp, $sCell
    	Do
    		$sCell=$sCol&$sRow
    		$sTmp=StringStripWS(_Excel_RangeRead($oWorkbook,$tabelle,$sCell),7)
    		$sRow+=1
    	Until $sTmp = ''
    	_Excel_RangeWrite($oWorkbook,$sTable, $sValue,$sCell)
    EndFunc
    Alles anzeigen

    ungetestet sollte aber funktionieren

  • Variable deklarieren - isdeclared

    • autoBert
    • 6. April 2016 um 20:34
    Zitat von Zeitriss

    Ist es nicht Sinniger, das man die Variable einfach gleich in das Script A schreibt?

    da eine UDF imho nur Sinn macht wenn sie mehrfach verwendet wird, ist es am sinnvollsten die Variable in der UDF Global zu deklarieren. Genau so macht es Sinn diese ausgiebig zu testen, sprich das Thema ist an den Haaren herbeigezogen bzw zeugt von schlampigem Programmierstil.

  • Alle Fenster schließen

    • autoBert
    • 6. April 2016 um 20:15
    Zitat von BigRox

    Selbst wenn man die Windows Tastenkombination "<ALT> + F4" mit AutoIt an das Fenster sendet, funktioniert es nicht.
    Wenn man jedoch die Tastenkombination manuell eingibt, so schließt sich das Fenster und alle Unterfenster immer sofort.

    Du solltest das ganze mal mit #RequireAdmin am Skriptanfang versuchen.

  • Facebook Smtp

    • autoBert
    • 6. April 2016 um 13:24

    Tritt FB jetzt wirklich als EMail Provider auf? <X

  • Alle Fenster schließen

    • autoBert
    • 6. April 2016 um 10:48

    Ich hab zwar noch nie damit gearbeitet aber:

    Zitat von Helpfile


    _WinAPI_GetParent
    Retrieves the handle of the specified child window's parent window

    sollte die Lösung sein. Also einfach alle Kind-Fenster überspringen.

  • 2 Dienste, die gegenseitig voneinander abhängig sind - wie Abhängigkeit auflösen? GELÖST

    • autoBert
    • 4. April 2016 um 23:03

    Wurde dort mal eine Faxsofware Client/Server Probe installiert? Daran bin ich vor Jahrtehnten unter NT 4.0 schier verzweifelt. Wußte mir nur über Neuaufsetzen des OS zu helfen. Die beschriebene Situation darg ja eigentlich gar nicht vorkommen, falls Schadsoftware war der Übeltäter aber nicht konsequent genug, denn sonst hättest du jetzt einen ReBoot-Loop.

  • 2 Dienste, die gegenseitig voneinander abhängig sind - wie Abhängigkeit auflösen? GELÖST

    • autoBert
    • 4. April 2016 um 22:24
    Zitat von autoBert

    Kannst du den die Einstellung auf der Registerkarte Wiederherstellung für Telefonie nicht umstellen auf "keine Aktion ausführen"?

  • Klasse IE.au3 - Internetseite gibt keine Infos zurück

    • autoBert
    • 4. April 2016 um 14:00

    Ohne den Quelltext der Seite ist das ganze schier unmöglich, dauert auf jedenfall deutlich länger. Oder kann einer deiner Kollegen eine Demoseite (ohne Firmeninternas) online stellen? Muß halt selbes Schema wie Orinalseite einhalten,damit du es auf das Original übertragen kannst.

    Ohne eines von beiden wird dies Thema nur theoretisch diskutiert bzw. mit viel Trail and Error Versuchen ablaufen, ob's dann 1 Woche oder ein halbes Jahr dauert oder du schon vorher frustriert aufgibst kann ich nicht beurteilen.

    Oder Ihr holt euch einen externen Profi, mit Schweigeklausel im Vertrag.

  • Variablen und Pointer

    • autoBert
    • 3. April 2016 um 18:58
    Zitat von teamnoobPDB

    Ich drücke mich echt falsch aus. Ich will doch einfach nur wissen wie ich einen Pointer auf eine Variable erzeugen kann.

    Vor allem kannst du auch kein Beispielskript liefern, daß die Notwendigkeit verdeutlicht. Dies zusammen mit deiner (Betriebs-)Geheimniskrämerei macht das Ganze sehr suspekt.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™