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

Beiträge von Bitnugger

  • 2 Ethernet-Adapter Mac Adressen anzeigen auswerten

    • Bitnugger
    • 7. März 2017 um 03:12

    @bazii

    In deinem RegExp-Pattern ist noch ein Fehler drin... :D

    Die Beschreibung zu meinem Ethernet-Adapter Tunngle lautet:
    Beschreibung. . . . . . . . . . . : TAP-Win32 Adapter V9 (Tunngle)

    Wegen des [^-] wird aber nur das TAP gefunden...

    Hier mal eine leicht geänderte Version:
    AutoIt
    ;-- TIME_STAMP   2017-03-07 05:10:32
    
    
    #include <array.au3>
    
    
    Global $aNetAdaptersWMI = _GetMacAddressesWMI()
    Global $aNetAdaptersCMD = _GetMacAddressesCMD()
    _ArrayConcatenate($aNetAdaptersWMI, $aNetAdaptersCMD)
    _ArrayDisplay($aNetAdaptersWMI, '', "", 0, Default, 'Func|NetworkAdapter|MacAddress')
    
    
    ;---------------------------- Funktionen -----------------------------------------------------------
    Func _GetMacAddressesWMI()
    	Local $aReturn[1][3], $bY = False
    
    
    	If IsDeclared("oWMI") <> 1 Then
    		Local $oWMI = ObjGet("winmgmts:\\localhost\root\CIMV2")
    		If @error Or Not IsObj($oWMI) Then Return SetError(1, @error, 0)
    	EndIf
    	Local $aItems = $oWMI.ExecQuery("SELECT MACAddress, Name FROM Win32_NetworkAdapter " & _
    			"WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> " & _
    			"'Microsoft'))", "WQL", 0x10 + 0x20)
    
    
    	If IsObj($aItems) Then
    		For $x In $aItems
    			If $bY Then
    				ReDim $aReturn[UBound($aReturn) + 1][3]
    			Else
    				$bY = True
    			EndIf
    			$aReturn[UBound($aReturn) - 1][0] = 'WMI'
    			$aReturn[UBound($aReturn) - 1][1] = $x.Name
    			$aReturn[UBound($aReturn) - 1][2] = StringReplace($x.MACAddress, ':', '-')
    		Next
    		Return $aReturn
    	Else
    		Return SetError(2, 0, 0)
    	EndIf
    EndFunc
    
    
    Func _GetMacAddressesCMD()
    	$sCMD = _GetDOSReturn("ipconfig", "/all")
    	$aRegExRet = StringRegExp($sCMD, "(?s)[^-](?:Beschreibung|Description)[\.\s]+?:\s([^\r^\n]+).+?[^0-9A-F-]([0-9A-F]{2}(?:-[0-9A-F]{2}){5})[^-]", 3)
    	If @error Then
    		Return SetError(1,@error, '')
    	Else
    		Local $aReturn[UBound($aRegExRet)/2][3], $i = 0, $j = 0
    		While $i < UBound($aRegExRet)
    			$aReturn[$j][0] = 'CMD'
    			$aReturn[$j][1] = $aRegExRet[$i]
    			$aReturn[$j][2] = $aRegExRet[$i+1]
    			$i += 2
    			$j += 1
    		WEnd
    
    
    		Return $aReturn
    	EndIf
    EndFunc
    
    
    Func _GetDOSReturn($sCMD, $sParameter = '')
    	Local $sPara = '', $sReturn = '', $sLine
    	If $sParameter <> '' Then $sPara = ' ' & $sParameter
    	Local $iPID = Run($sCMD & $sPara, '', @SW_HIDE, 2)
    
    
    	While 1
    		$sLine = StdoutRead($iPID)
    		If @error Then ExitLoop
    		$sReturn &= $sLine
    	WEnd
    
    
    	Return $sReturn
    EndFunc
    ;------------------------------------------------------------------------------------------------
    Alles anzeigen
  • romaSQL

    • Bitnugger
    • 5. März 2017 um 20:56

    @4ern

    Ich habe mir mal die Mühe gemacht und alle Zeilen in der queryBuilder.au3 und romaSql.au3 geändert, bei denen ich auf den ersten Blick sehen konnte, dass ich diese Stellen andern angehen würde.
    Beide Versionen wurden mit Tidy formatiert...

    ;~ VORHER
    queryBuilder.au3 ... 52,3 k
    romaSql.au3 ........ 29,8 k

    ;~ NACHHER
    queryBuilder.au3 ... 50,1 k
    romaSql.au3 ........ 28,2 k

    In dem Archiv im Anhang sind beide Versionen zusammen mit jeweils einem Tidy-Protokoll... die beiden htm-Dateien stammen von WinMerge und zeigen beide Versionen nebeneinander an. So kannst du gut vergleichen wo was geändert wurde.

    romaSql-1.0.2_tidy\
    romaSql-1.0.2_tidy_changed!\
    queryBuilder.htm
    romaSql.htm


    In der example.au3 habe ich zur Vorsicht nun auch ein #include-once hinzugefügt...

    Dateien

    romaSql-1.0.2.rar 99,79 kB – 405 Downloads
  • romaSQL

    • Bitnugger
    • 5. März 2017 um 16:07

    Solange sich in den Includes nur Funktionen befinden, spielt es absolut keine Rolle, in welcher Reihenfolge sie geladen werden... in die Hose gehen würde es nur, wenn darin auch Befehle ausserhalb einer Funktion stehen und diese nicht in umgekehrter Reihenfolge ausgeführt werden dürfen.

    Ich lasse in meinen Scripten die Funktionen/Regionen z. B. bei jedem Aufruf von Tidy ordnen...

  • Internetexplorer minimieren für 1Minute dann 1Minute auf Vollbild dann wieder 1Minute minimieren in schleife

    • Bitnugger
    • 5. März 2017 um 15:48

    Aber besser noch so, weil so stellen wir sicher, dass wir immer mit denselben Windows hantieren.

    AutoIt
    ;-- TIME_STAMP   2017-03-05 15:48:06   v 0.1
    
    
    Global $hWndIE, $hWndNP, $aProcessWindows
    Run(@ProgramFilesDir & "\Internet Explorer\iexplore.exe")
    Run("notepad.exe")
    ; Window-Handles holen, damit wir immer dieselben Windows schließen!
    $hWndIE = WinWait("[CLASS:IEFrame]", '', 5)
    $hWndNP = WinWait("[CLASS:Notepad]", '', 5)
    If Not IsHWnd($hWndIE) Or Not IsHWnd($hWndNP) Then Exit 1
    
    
    AdlibRegister(_ShowHide, 1000 * 60)	; 1x pro Minute @SW_SHOW/@SW_HIDE umschalten
    
    
    While 1
    	Sleep(50)
    WEnd
    
    
    Func _ShowHide()
    	Local Static $vIEShow = @SW_SHOW
    	Local $vNPShow = $vIEShow
    	$vIEShow = ($vIEShow = @SW_SHOW) ? @SW_HIDE : @SW_SHOW
    
    
    	If WinSetState($hWndIE, "", $vIEShow) = 1 And WinSetState($hWndNP, "", $vNPShow) = 1 Then Return
    
    
    	; IE und/oder Notepad wurde/n beendet
    	Exit WinSetState($hWndIE, "", @SW_SHOW) - WinSetState($hWndNP, "", @SW_SHOW)
    EndFunc
    Alles anzeigen
  • Internetexplorer minimieren für 1Minute dann 1Minute auf Vollbild dann wieder 1Minute minimieren in schleife

    • Bitnugger
    • 5. März 2017 um 14:30

    Ich würde das so machen...

    AutoIt
    ;-- TIME_STAMP   2017-03-05 14:26:24   v 0.1
    
    
    Run(@ProgramFilesDir & "\Internet Explorer\iexplore.exe")
    Run("notepad.exe")
    
    
    AdlibRegister(_ShowHide, 1000 * 60)
    
    
    While 1
    	Sleep(50)
    WEnd
    
    
    Func _ShowHide()
    	Local Static $vIEShow = @SW_HIDE, $vNPShow = @SW_SHOW
    	$vIEShow = ($vIEShow = @SW_HIDE) ? @SW_SHOW : @SW_HIDE
    	$vNPShow = ($vNPShow = @SW_SHOW) ? @SW_HIDE : @SW_SHOW
    
    
    	If WinSetState("[CLASS:IEFrame]", "", $vIEShow) = 0 _
    	Or WinSetState("[CLASS:Notepad]", "", $vNPShow) = 0 _
    	Then Exit ; ID und/oder Notepad wurde/n beendet
    EndFunc
    Alles anzeigen
  • romaSQL

    • Bitnugger
    • 5. März 2017 um 11:28

    Anstelle der vielen #ignorefunc würde ich es so machen...

    ; queryBuilder.au3
    #include-once
    #include <romaSql.au3>

    ; romaSql.au3
    #include-once <-- hier hast du es vergessen
    #include <Array.au3>
    #include 'queryBuilder.au3'

  • romaSQL

    • Bitnugger
    • 5. März 2017 um 04:55
    Zitat von alpines

    Nein. $DB = NULL ist nicht dasselbe wie $DB.

    Allerdings bin ich mir beim zweiten nicht sicher ob das absichtlich oder unwissentlich so geschrieben wurde.

    Oh ja, hast recht... das war ein Schnellschuss... grins. Das Beispiel habe ich so zusammengestellt. Danke, hast du gut erklärt.

    Die Klammern kann man sich aber doch sparen...

    AutoIt
    Local $DB = NULL, $USER = NULL, $PASSWORD = NULL, $SERVER = NULL, $errorLogin = False
    
    
    If ($DB = NULL) OR ($USER = NULL) OR ($PASSWORD = NULL) OR ($SERVER = NULL) Then $errorLogin = True
    ConsoleWrite('$errorLogin = ' & $errorLogin & @CRLF)
    
    
    If $DB = NULL OR $USER = NULL OR $PASSWORD = NULL OR $SERVER = Null Then $errorLogin = True
    ConsoleWrite('$errorLogin = ' & $errorLogin & @CRLF)
  • romaSQL

    • Bitnugger
    • 5. März 2017 um 01:09
    Zitat von 4ern

    Bzgl. den AU3 Check habe ich diesen total vergessen, da ich ich den einfach nicht nutze. Hat den Hintergrund, das mein Code oft komplexer ist als dieser und ich immer und überallel mit #forcref etc. arbeiten muss und ich somit nur noch mehr arbeit habe.

    Ich denke, dass es sich eher umgekehrt verhält... auf dem ersten Blick mag deine Rechnung eventuell aufgehen, dass du so weniger Arbeit hast, doch auf lange Sicht ist es definitiv nicht der Fall, denn genau betrachtet, hilft dir der AU3 Check sogar enorm, indem er dich dazu zwingt deinen Code bzw. deinen Programmierstil zu verbessern, wodurch du dich dann später selbst auch besser in deinem Code zurechtfindest und insgesamt weniger Fehler machst. Viel wichtiger ist jedoch dabei, dass du den Users, die deine Tools benutzen, das Leben dadurch viel einfacher machst und sie quasi ohne dein direktes Zutun vor bösen Fehlern/Eigentoren bewahrt bleiben, nach denen sie sonst womöglich sehr lange suchen müsten.

    PS: Ist das nicht dasselbe?

    AutoIt
    Local $DB = NULL, $USER = NULL, $PASSWORD = NULL, $SERVER = NULL
    
    
    If ($DB = NULL) OR ($USER = NULL) OR ($PASSWORD = NULL) OR ($SERVER = NULL) Then $errorLogin = True
    ConsoleWrite('$errorLogin = ' & $errorLogin & @CRLF)
    
    
    If $DB Or $USER Or $PASSWORD Or $SERVER = Null Then $errorLogin = True
    ConsoleWrite('$errorLogin = ' & $errorLogin & @CRLF)
  • jEdit für AutoIt

    • Bitnugger
    • 4. März 2017 um 23:11

    JEdit... der Stinker... sagt, er hätte die Plugins alle installiert, aber hatte er dann doch nicht... deshalb konnte ich die Sachen auch nicht finden - erst beim 5. oder 6. Anlauf klappte es mit dem autralischen Server. Nervig dabei ist, dass er bei einem Fehler die ausgewählten Plugins wieder abwählt.

    Die von mir genannten Punkte sind somit alle erledigt!

    Dann solltest du den Pfad für die Update_UDFs auf deiner Webseite noch korrigieren.

    Danke für deine Hilfe...

  • jEdit für AutoIt

    • Bitnugger
    • 4. März 2017 um 21:49

    Hallo @Stilgar,

    ich bin gerade dabei das JEdit zu installieren, doch dies gestaltet sich schwieriger, als erwartet!

    Hier mal die bis dato aufgetretenen Probleme:

    • Clipper-plugin - ist nicht in der Liste enthalten; wobei JEdit auch Probleme hat, einen Server zu erreichen.
    • User-Profile - hier ist es widersprüchlich...
      Auf deiner Webseite schreibst du:
      Source: .......... Destination: ...... e.g:
      %programfiles% ... %programfiles% .... C:\Program Files\
      %appdata% ........ %appdata%\jedit ... C:\Users\YourUserName\AppData\Roaming\jedit
      In der c:\Program Files\jEdit\macros\AutoIt\Update_UDFs.bsh steht allerdings...
      String sPath = System.getProperty("user.home") + "\\.jedit\\autoitscript\\jEdit4AutoIt_UDF_Updater.a3x";

    Edit:

    Anpassung:
    10) Die Plugin Einstellungen Aufrufen ("Plugin/Plugin Options ...")
    10.1) "Console/Error Patterns" für die Fehlerauswertung noch folgende Werte eintragen:
    jedit4autoit.thorsten-willert.de/index.php#commando_error
    10.2) "CtagsSideKick/General" In ctags path: "C:\Programme\ctags\ctags.exe" eintragen

    Bei 10.1 - "Console/Error Patterns" finde ich nicht...
    Bei 10.2 stehe ich echt auf dem Schlauch und weiß nicht, was du damit meinst.

  • romaSQL

    • Bitnugger
    • 3. März 2017 um 12:05

    Ausführbar ist eine Sache, ob es Sinn macht, eine andere.

    Z. B. Zeile 1016 in queryBuilder.au3 - was ist in $C1?: __4ern_SQL_Console('error', 'ORDER BY -- QUERY BUILDER', StringFormat('(%s) ist valider ORDER BY Keyword', $C1))

  • romaSQL

    • Bitnugger
    • 3. März 2017 um 10:52

    Ja, sicher, aber da sind noch mehr Fehler in den Scripts... in queryBuilder.au3 und romaSql.au3 - Variablen vor Aufruf nicht deklariert usw.

  • romaSQL

    • Bitnugger
    • 2. März 2017 um 22:47

    Also bei läuft das Example nicht...

    roma.jpg

  • Internetexplorer minimieren für 1Minute dann 1Minute auf Vollbild dann wieder 1Minute minimieren in schleife

    • Bitnugger
    • 2. März 2017 um 21:56

    Was ist das denn bitte für ein Buchstabensalat - ein Einzeiler?

    So kann das definitiv nicht funktioneren. Du solltest dein Script in einen Code-Tag einbetten... so wie dies hier... das machst du mit diesem Symbol </>.

    AutoIt
    Example()
    
    
    Func Example() ; Run Notepad
    	Local $iPID = Run("notepad.exe") ; Wait 10 seconds for the Notepad window to appear.
    	Local $hWnd = WinWait("[CLASS:Notepad]", "", 10) ; Set the state of the Notepad window to "hide".
    	Sleep(2000) ; Set the state of the Notepad window to "show".
    	WinSetState($hWnd, "", @SW_HIDE) ; Wait for 2 seconds.
    	Sleep(2000) ; Set the state of the Notepad window to "show".
    	WinSetState($hWnd, "", @SW_SHOW) ; Wait for 2 seconds.
    	Sleep(2000) ; Close the Notepad window using the handle returned by WinWait.
    	ProcessClose($iPID)
    EndFunc   ;==>Example
    Alles anzeigen
  • Listview mit mehr als 260 Zeichen

    • Bitnugger
    • 2. März 2017 um 19:54

    Ich denke mal, du suchst das hier...

    https://www.autoitscript.com/forum/topic/17…drawn-listview/

    Pro Item im ListView kannst du max. 4095 Zeichen schreiben...

    Nachtrag:

    ...angezeigt werden jedoch max. 259 Zeichen.

    "Der Text der ListViewItems sollte 259 Zeichen nicht überschreiten oder unerwartetes Verhalten kann auftreten."

    Quelle: https://msdn.microsoft.com/en-us/library/…witem.text.aspx

  • Editor SciTE

    • Bitnugger
    • 2. März 2017 um 19:20

    Wenn du mit SciTE suchst, kannst du die Treffer markieren....

    SciTE-Alle-Markieren.jpg

  • Psexec Remote CMD

    • Bitnugger
    • 22. Februar 2017 um 22:12

    Mit PsExec hatte ich auch so meinen Kampf... ^^

    Hier mein Script, wie ich es gelöst habe:

    _PSEXEC
    AutoIt
    #include <AutoItConstants.au3>
    
    
    ;-- TIME_STAMP   2017-02-22 21:55:24
    
    
    ; RunAs-Parameter
    Global $g_sUserName = @UserName, $g_sDomain = @ComputerName, $g_sPassword = '$uFYa2s-mc!P', $g_iLogon_Flag = $RUN_LOGON_NOPROFILE, $g_sWorkingDir = @SystemDir, $g_iSW_SHOW = @SW_HIDE, $g_sAdminName = 'Administrator', $g_sAdminPassword = '+rR9ryc!Q2jwP7'
    
    
    ; PsExec-Parameter
    Global $g_sPSEXEC = 'F:\Progdir\Sysinternals Suite\PsExec.exe', $g_sPS_Domain = '\\ILLUMINATI', $g_sPS_UserName = $g_sUserName, $g_sPS_Password = $g_sPassword, $g_sPS_RelWorkingDir = 'drivers', $g_sPS_Command = '"' & @ComSpec & '" /K "Dir c:\"'
    
    
    ; PsExec als normaler User ausführen
    _PSEXEC($g_sUserName, $g_sDomain, $g_sPassword, $g_iLogon_Flag, $g_sPS_Domain, $g_sPS_UserName, $g_sPS_Password, $g_sPS_RelWorkingDir, $g_sPS_Command, $g_sWorkingDir, $g_iSW_SHOW)
    
    
    ; PsExec als Administrator ausführen
    $g_sPS_Command = '"' & @ComSpec & '" /K "set"'
    _PSEXEC($g_sUserName, $g_sDomain, $g_sPassword, $g_iLogon_Flag, $g_sPS_Domain, $g_sAdminName, $g_sAdminPassword, $g_sPS_RelWorkingDir, $g_sPS_Command, $g_sWorkingDir, $g_iSW_SHOW)
    
    
    ;            1s          2s        3s          4i            5s           6s             7s             8s                  9s            10s           11i
    Func _PSEXEC($sUserName, $sDomain, $sPassword, $iLogon_Flag, $sPS_Domain, $sPS_UserName, $sPS_Password, $sPS_RelWorkingDir, $sPS_Command, $sWorkingDir, $iSW_SHOW)
    
    
    	;                          1s    2s    3s   4i            ps  5s    6s    7s     8s  9s             10s  11i
    	Local Static $FO = 'RunAs("%s", "%s", "%s", %i, ' &"'"& '"%s" %s -u %s -p %s -w "%s" %s' & "'" & ', "%s", %i)'
    
    
    	;                               1s          2s        3s          4i            ps          5s           6s             7s             8s                  9s            10s           11i
    	Local $sCMD = StringFormat($FO, $sUserName, $sDomain, $sPassword, $iLogon_Flag, $g_sPSEXEC, $sPS_Domain, $sPS_UserName, $sPS_Password, $sPS_RelWorkingDir, $sPS_Command, $sWorkingDir, $iSW_SHOW)
    
    
    	ConsoleWrite(StringFormat('\n%s\n\n', $sCMD))
    
    
    	Local $iErr = Execute($sCMD)
    	If @error Then ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & "   var: $iErr --> " & $iErr & @CRLF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @CRLF)
    EndFunc   ;==>_PSEXEC
    Alles anzeigen
  • Navigation in Gui per TAB

    • Bitnugger
    • 14. Februar 2017 um 17:29
    AutoIt
    <#include <WinAPI.au3>

    Hier hat sich ein "<" an den Anfang der ersten Zeile geschmuggelt... ;)

  • Daten Aufbereiten

    • Bitnugger
    • 14. Februar 2017 um 17:09
    Zitat von autoiter

    Nein, das ist nicht notwendig. Das macht doch schon die Funktion von UEZ, wenn man True mitgibt.

    Nope... macht sie nicht!

    Denn dazu müsste die Zeile 389 in dem Script included_Base64_db.au3 so aussehen:

    AutoIt
    Local Const $hFile = FileOpen($sSavePath & "\sqlite3_x86.dll", 26)
    ; $FO_OVERWRITE  ( 2) = Write mode (erase previous contents)
    ; $FO_CREATEPATH ( 8) = Create directory structure if it doesn't exist (See Remarks).
    ; $FO_BINARY     (16) = Force binary mode (See Remarks).
    ;
    ; 2 + 8 + 16 = 26

    Dort steht aber:

    AutoIt
    Local Const $hFile = FileOpen($sSavePath & "\sqlite3_x86.dll", 18)
  • Daten Aufbereiten

    • Bitnugger
    • 14. Februar 2017 um 11:24

    @autoiter

    Du solltest vor Ausführung der Zeile 8 besser überprüfen, ob das Unterverzeichnis "\Data\" existiert und falls nicht, es ggf. anlegen...

    AutoIt
    If Not FileExists($sWorkDir & "SQLite3_x86.dll") Then
    	If Not FileExists($sWorkDir) Then DirCreate($sWorkDir)
    	_sqlite3_x86dll(True, $sWorkDir)
    EndIf


    PS: Ich würde das auch mit SQLite machen.

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™