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. BugFix

Beiträge von BugFix

  • Punkt 15 Uhr - Drucken nicht mehr möglich [GELÖST]

    • BugFix
    • 22. September 2010 um 18:01

    Wenn ich das Problem an M$ melden würde bekäme ich bestimmt zur Antwort: It's not a bug - it's a feature! :rofl:
    Wir haben in der Firma ein Arbeitsgruppen-Netzwerk. Als Arbeitsstationen werden XP-PC verwendet. Der Drucker hängt über einen Printserveradapter im Netzwerk.
    Auf einem PC zeigt sich nun seit einigen Tagen folgendes Problem: Er arbeitet tadellos bis 15 Uhr. Dann ist kein Drucken mehr möglich. Der Auftrag hängt lokal auf dem PC. Die anderen Mitglieder der Arbeitsgruppe können munter weiter drucken - nur der PC nicht. Mit einem Neustart ist das Problem behoben. Es erfolgt keine Fehlermeldung, Netzwerk ist weiter intakt (andere Arbeiten in Netzwerkanwendungen können durchgeführt werden).
    Wo soll ich da bloß suchen. :wacko:

    Also wenn ihr Ideen habt - her damit. ;)

  • In ext. Datei nach Wörtern suchen

    • BugFix
    • 22. September 2010 um 11:50
    Zitat von Scritch

    Local $sOut = ''

    Es wird eine leere Variable zum Aufnehmen der später in die Datei zu schreibenden Einträge erstellt.

    Zitat von Scritch

    For $i = 1 To UBound($aVergleich) -1

    Start bei Index=1 (schau in die Hilfe, an Index=0 steht die Anzahl der gelesenen Zeilen), bis zum letzten Eintrag mit Index= UBound (Anzahl Einträge im Array) -1, da Index mit 0 beginnt ist letzter Wert 1 kleiner als Anzahl.

    Zitat von Scritch

    $sOut &= $aVergleich[$i] & @CRLF

    Hier wird der Variablen, deren Inhalt in die Datei geschrieben werden soll der jeweilige Eintrag (nicht in Tabu und nicht in Referenz) hinzugefügt + Zeilenumbruch. Somit braucht man die Variable später nur direkt in die Datei schreiben. Jede Zeile enthält dann einen Wert.

  • Auto-It: Administration von COM+ Komponenten

    • BugFix
    • 22. September 2010 um 11:25

    Du willst ja Komponenten installieren. Ich habe mich damit bisher nie befasst, aber mal kurz bei MSDN nachgelesen.
    Folgendes sollte doch laufen:

    [autoit]

    Local $oCatalog = ObjCreate("ComAdmin.COMAdminCatalog")
    Local $compName = "Q277984"
    Local $aInstallComponents[2] = ["Q277984.dll","Q277984b.dll"]
    Local $aInstallCLSID[2] = ["{44DAAEC9-F383-42CC-BA1A-8F3A036B0DAE}", "{DB2E2C08-2285-4105-925E-B7ECBA8C6C5D}"]

    [/autoit][autoit][/autoit][autoit]

    $oCatalog.InstallMultipleComponents($compName, $aInstallComponents, $aInstallCLSID)

    [/autoit]


    Als Skript verteilen an die Arbeitsplätze und mit Eintrag in RunOnce ausführen. Dann brauchst du dich nicht um User/PW kümmern.
    Vielleicht geht es auch nicht ;) - wie gesagt, ist eigentlich nicht meine Baustelle. :D


    Edit:
    Wenn du mit COM+ herumdoktorst - vielleicht kannst du das ja auch brauchen:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    ; Rückgabe als String
    ConsoleWrite(_COMplusAppl_Get() & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    ; Rückgabe als Array
    $aRet = _COMplusAppl_Get(True)
    _ArrayDisplay($aRet)

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _COMplusAppl_Get([$fRetArray=False])
    ; Description:: Auflistung aller aktiven COM+ Anwendungen
    ; Parameter(s): optional $fRetArray Standard ist False = Rückgabe als @CRLF getrennter String
    ; Return Value(s): @CRLF getrennter String (Standard) oder Array mit Anzahl in $array[0]
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _COMplusAppl_Get($fRetArray=False)
    Local $oCatalog = ObjCreate("ComAdmin.COMAdminCatalog")
    Local $oApplications = $oCatalog.GetCollection("Applications")
    $oApplications.Populate
    Local $sAppl = ''
    For $oApp In $oApplications
    $sAppl &= $oApp.Name & @CRLF
    Next
    $oCatalog = 0
    If $fRetArray Then Return StringSplit(StringTrimRight($sAppl, 2), @CRLF, 1)
    Return StringTrimRight($sAppl, 2)
    EndFunc ;==>_COMplusAppl_Get

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _COMplusAppl_ShutDown()
    ; Description:: Beenden aller aktiven COM+ Anwendungen
    ; Parameter(s): keine
    ; Return Value(s): Anzahl beendeter COM+ Anwendungen
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _COMplusAppl_ShutDown()
    Local $oCatalog = ObjCreate("ComAdmin.COMAdminCatalog")
    Local $oApplications = $oCatalog.GetCollection("Applications")
    $oApplications.Populate
    Local $count = $oApplications.Count
    For $oApp In $oApplications
    If $oApp.Name <> "System Application" Then $oCatalog.ShutdownApplication($oApp.Name)
    Next
    $oCatalog.ShutdownApplication("System Application")
    $oCatalog = 0
    Return $count
    EndFunc ;==>_COMplusAppl_ShutDown

    [/autoit]
  • Auto-It: Administration von COM+ Komponenten

    • BugFix
    • 22. September 2010 um 10:41

    Ich kann da bei mir leider nicht viel testen - habe nur localhost ;).
    Vielleicht stolpert ja einer unserer Netzwerkadmins hier drüber.

    Das Umsetzen von VBScript ist nicht so schwer. Schau doch mal die Befehlszeilen im direkten Vergleich an. Sie sind sich ziemlich ähnlich.

  • Word Dokument durchsuchen und Infos rausfiltern

    • BugFix
    • 22. September 2010 um 10:38

    Es geht - aber ein Problem ist, wenn die Inhalte sich von mal zu mal unterscheiden (Zeilen innerhalb eines Feldes).
    Das Unterscheiden, ob mit Chr(13) ein Zeilenumbruch in der Zelle stattfindet oder die nächste Zeile erreicht wird oder das Tabellenende und somit ein 'normaler' Zeilenumbruch in Word erfolgt ist fast unmöglich.
    Aber schau dir mal diesen Link an: Link, Dort geht es genau um solche Probleme. Das Portieren von VBA nach AutoIt wird wohl keine Probleme bereiten.


    Edit:
    Hab mal ein Bsp. erstellt. Auslesen der ersten Tabelle.
    Das Entfernen von Chr(7) habe ich mit integriert - hab aber k.A. ob das in jeder Tabelle enthalten ist, oder nur in dieser.

    Spoiler anzeigen
    [autoit]

    #include <Word.au3>
    ; Zugriff auf geöffnetes Worddokument - anderenfalls _WordDocOpen() verwenden
    Local $oWordApp = _WordAttach ("E-Runde.doc - Microsoft Word", 'Title')
    ;~ Local $countTable = $oWordApp.ActiveDocument.Tables.Count ; falls Anzahl Tabellen unbekannt und alles ausgelesen werden soll
    Local $rows, $columns, $val

    [/autoit] [autoit][/autoit] [autoit]

    ; Tabelle 1 hat in Zeile-1 Überschrift - wird nicht ausgelesen, da Spaltenzahl ungleich der Spalten in den Einträgen
    ConsoleWrite('Tabelle1 - Teilnehmer:' & @CRLF)
    $rows = $oWordApp.ActiveDocument.Tables(1).Rows.Count
    $columns = $oWordApp.ActiveDocument.Tables(1).Columns.Count

    [/autoit] [autoit][/autoit] [autoit]

    $i = 1 ; Zeile
    $j = 1 ; Spalte
    While True
    $i += 1
    If $i = $rows +1 Then
    $i = 2
    $j += 2
    EndIf
    If $j = 5 And $i = 2 Then ConsoleWrite('Tabelle1 - Verteiler:' & @CRLF)
    If $j > $columns Then ExitLoop

    $oWordApp.ActiveDocument.Tables(1).Cell($i,$j).Select
    $val = StringReplace(StringStripWS($oWordApp.Selection.Text, 3), Chr(7), '')
    If $val <> '' Then ConsoleWrite($val)

    $oWordApp.ActiveDocument.Tables(1).Cell($i,$j+1).Select
    $val = StringReplace(StringStripWS($oWordApp.Selection.Text, 3), Chr(7), '')
    If $val <> '' Then ConsoleWrite($val)
    WEnd

    [/autoit]
  • In ext. Datei nach Wörtern suchen

    • BugFix
    • 22. September 2010 um 10:23

    Ich habs mal schnell zusammengebastelt:

    [autoit]

    Local $fileTabu = 'Pfad_zur_Datei'
    Local $fileReferenz = 'Pfad_zur_Datei'
    Local $fileVergleich = 'Pfad_zur_Datei'

    [/autoit][autoit][/autoit][autoit]

    Local $aTabu, $aReferenz, $aVergleich
    _FileReadToArray($fileTabu, $aTabu)
    _FileReadToArray($fileReferenz, $aReferenz)
    _FileReadToArray($fileVergleich, $aVergleich)

    [/autoit][autoit][/autoit][autoit]

    Local $sOut = ''

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To UBound($aVergleich) -1
    _ArraySearch($aTabu, $aVergleich[$i], 1)
    If @error Then ; Eintrag nicht in Tabu enthalten
    _ArraySearch($aReferenz, $aVergleich[$i], 1)
    If @error Then ; Eintrag nicht in Referenz enthalten
    $sOut &= $aVergleich[$i] & @CRLF
    EndIf
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    ; Ich weiß nicht genau in welche Datei du das Ergebnis schreiben willst.
    ; So kannst du an eine bestehende anhängen oder auch eine neue Datei schreiben:
    Local $fh = FileOpen('Pfad_zur_Datei', 1)
    FileWrite($fh, $sOut)
    FileClose($fh)

    [/autoit]
  • OpenGL UnsetPrint und ObjectDelete geht nicht richtig

    • BugFix
    • 21. September 2010 um 21:07

    Ich kenne das Problem nicht, aber prüfe doch sicherheitshalber immer vor dem Löschen, ob das Objekt wirklich noch existiert.

    [autoit]

    If IsObj($oVar) Then 'Objektdelete-Befehl' ; nach Objekttyp unterschiedlich

    [/autoit]


    Bitte auch beachten, dass die Objekte manchmal in bestimmter Reihenfolge zu löschen sind - wenn sie voneinander abhängig sind.
    Und verwende z.B. nicht _GDIPlus_ShutDown() und erst danach _GDIPlus_ImageDispose ($hImage) o.ä. ;-).

  • Daten aus dynamischen labels auslesen

    • BugFix
    • 21. September 2010 um 18:05

    Du mußt die ID ( Rückgabe von GUICtrlCreateLabel ) in einem Array auffangen, dann kannst du darauf zugreifen.

    [autoit]

    For $i = 0 To UBound($aLabel) -1
    $aLabel[$i] = GUICtrlCreateLabel(..)
    Next

    [/autoit]
  • Auto-It: Administration von COM+ Komponenten

    • BugFix
    • 21. September 2010 um 17:56

    Du mußt die notwendigen Argumente in das Array $aAppID einfügen.

    Spoiler anzeigen
    [autoit]

    ;~ ' VBScript source code
    ;~ if WScript.Arguments.Count <> 1 Then
    ;~ WScript.Echo "usage: COMAdmin <appid>"
    ;~ WScript.End
    ;~ end if

    [/autoit] [autoit][/autoit] [autoit]

    ;~ appID = WScript.Arguments(0)
    Dim $aAppID[1] = ['Argument1'] ; Argumente hier auflisten, Anzahl Arrayelemente anpassen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $oCatalog = ObjCreate("ComAdmin.COMAdminCatalog")

    [/autoit] [autoit][/autoit] [autoit]

    $oApplications = $oCatalog.GetCollection("Applications")

    [/autoit] [autoit][/autoit] [autoit]

    $oApplications.PopulateByKey($aAppID)
    $oApp = $oApplications.Item(0)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ ' Or

    [/autoit] [autoit][/autoit] [autoit]

    ;~ $oApplications.Populate
    ;~ For $oTempApp In $oApplications
    ;~ If $oTempApp.Name = "System Application" Then
    ;~ $oApp = $oTempApp
    ;~ ExitLoop
    ;~ EndIf
    ;~ Next

    [/autoit] [autoit][/autoit] [autoit]

    ;~ ConsoleWrite($oApp.Name & ": " & $oApp.Value("Identity") & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ $oApp.Value("Identity") = "LocalSystem"
    ;~ $oApp.Value("Identity") = "Interactive User"

    [/autoit] [autoit][/autoit] [autoit]

    ;~ $oApp.Value("Identity") = "DOMAIN\newIdentity"
    ;~ $oApp.Value("Password") = "newPassword"

    [/autoit] [autoit][/autoit] [autoit]

    ;~ $oApplications.SaveChanges()

    [/autoit] [autoit][/autoit] [autoit]

    ;~ ' Iterate Components of the application if you need to.
    $oComponents = $oApplications.GetCollection("Components", $oApp.Key)
    $oComponents.Populate
    For $oComp In $oComponents
    ConsoleWrite("Component: " & $oComp.Name)
    ConsoleWrite(" " & $oComp.Value("CLSID") & @CRLF)
    Next

    [/autoit]
  • In ext. Datei nach Wörtern suchen

    • BugFix
    • 21. September 2010 um 16:49

    Versuchs mal selber, hier das Gerüst:
    - Mit _FileReadToArray alle 3 Dateien in jeweils ein Array einlesen
    - Array "Vergleichen" durchlaufen
    - suche aktuellen Eintrag in "Tabu" (vorhanden, weiter mit nächstem Eintrag)
    - nicht vorhanden: suche Eintrag in "Referenz" (vorhanden, weiter mit nächstem Eintrag)
    - nicht vorhanden: Eintrag in Ausgabestring schreiben ($out = $out & $Eintrag[$i] & ',')

  • ArrayDelete()

    • BugFix
    • 21. September 2010 um 16:35

    Bsp.:

    [autoit]

    Local $aIndex[6] = [7,6,3,2,1,0] ; Indexwerte müssen fallend enthalten sein!

    [/autoit][autoit][/autoit][autoit]

    For $i = UBound($aIndex) -1 To 0 Step -1
    _ArrayDelete($ArrayToDelete, $aIndex[$i])
    Next

    [/autoit]
  • ArrayDelete()

    • BugFix
    • 21. September 2010 um 16:31

    In einer Schleife - aber rückwärts! Anderenfalls stimmt die Indexzuordnung nicht mehr.

  • Hex zu Dez

    • BugFix
    • 21. September 2010 um 16:29
    Zitat von Knuckels

    wo müsste ich denn jetzt diese funktion einfügen


    Schau dir progandys Bsp. (Post 7) an.
    Dort ersetzt du

    [autoit]

    MsgBox(0, "", $sText & @CRLF & Dec($sText))

    [/autoit]

    mit

    [autoit]

    MsgBox(0, "", $sText & @CRLF & _Dec($sText))

    [/autoit]

    und fügst die Funktion mit in das Skript ein.

  • Hex zu Dez

    • BugFix
    • 21. September 2010 um 16:14

    Eigene Funktion benutzen:

    [autoit]

    $hex = "0105c0aa90"
    ConsoleWrite(_Dec($hex) & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    Func _Dec($sHex)
    Local $exp = 0, $dec = 0, $a = StringSplit($sHex, '')
    For $i = $a[0] To 1 Step -1
    $dec += Dec($a[$i])*(16^$exp)
    $exp += 1
    Next
    Return $dec
    EndFunc

    [/autoit]
  • In ext. Datei nach Wörtern suchen

    • BugFix
    • 21. September 2010 um 15:50
    Zitat von Scritch

    Es ist ein Wort pro Zeile was in dem anderen Dokument gefunden werden soll.


    Dann werd doch bitte mal ganz konkret:
    - Hast du eine Liste mit "Suchwörtern" in einer Datei (1 Begriff/Zeile)?
    - In der zu überprüfenden Datei: Kommt der jeweilige Suchbegriff nur einmal od. evtl. öfter vor?
    - Was erwartest du für eine "Antwort" von der Funktion?
    Am Besten, du stellst mal entsprechende Musterdaten rein, vorher - nachher.

  • StringRegExp Array auf Index 0 setzen

    • BugFix
    • 21. September 2010 um 15:44
    Zitat von AutoITboy

    wenn ich die Funktion StringRegExp benutze erhalte ich ein Array. Meistens sind die einzelnen Arrayindizes leer bis auf eines. zB. 86.


    Wenn keine Werte enthalten sind, ist dein Pattern nicht optimal. Wenn das Pattern auf die Aufgabe korrekt abgestimmt ist, sind auch entsprechend Werte enthalten.

  • In ext. Datei nach Wörtern suchen

    • BugFix
    • 21. September 2010 um 15:36

    Dafür würde ich grundsätzlich lieber WinMerge verwenden. Wenn es nur kleinere Texte sind, kannst du es auch so lösen: Schnittmengen und Differenzmengen ermitteln.

  • .DLL wofür benötigt?

    • BugFix
    • 19. September 2010 um 23:20

    DLL

  • Checkbox speichern

    • BugFix
    • 19. September 2010 um 20:37

    Wenn es größer wird - mit Array arbeiten.
    Mal als grobes Bsp.:

    Spoiler anzeigen
    [autoit]

    Local $INI = @ScriptDir & '\MEINE.INI' ; <== deine INI-Datei

    [/autoit] [autoit][/autoit] [autoit]

    Local $aCheckBox[200][2] ; <== zum Speichern Checkbox-ID und Status

    [/autoit] [autoit][/autoit] [autoit]

    If Not FileExists($INI) Then ; wenn INI noch nicht existiert, wird sie angelegt
    For $i = 0 To UBound($aCheckBox) -1
    IniWrite($INI, 'settings_CB', 'CheckBox' & $i, 0) ; erster Wert 0=UNCHECKED
    $aCheckBox[$i][1] = 0
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;...
    ;...

    [/autoit] [autoit][/autoit] [autoit]

    ; GUI erstellen und Checkboxstatus auslesen - setzen
    $gui = GUICreate('..')
    For $i = 0 To UBound($aCheckBox) -1
    $aCheckBox[$i][0] = GUICtrlCreateCheckbox('...', .....)
    $aCheckBox[$i][1] = IniRead($INI, 'settings_CB', 'CheckBox' & $i, 0)
    If $aCheckBox[$i][1] Then
    GUICtrlSetState($aCheckBox[$i][0], $GUI_CHECKED)
    Else
    GUICtrlSetState($aCheckBox[$i][0], $GUI_UNCHECKED)
    EndIf
    Next

    [/autoit]
  • Checkbox speichern

    • BugFix
    • 19. September 2010 um 20:16

    Speichere den Status in einer INI-Datei.
    Beim Start lädst du die INI und setzt danach CHECKED oder UNCHECKED.

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™