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

Beiträge von funkey

  • Statusbar - Verschiedene Farben für die einzelnen Parts

    • funkey
    • 21. März 2013 um 22:11

    Für mich ist der grafische Schnick-Schnack, den du, Eukalyptus, Andy und ein paar andere machen cool. ;)

  • Statusbar - Verschiedene Farben für die einzelnen Parts

    • funkey
    • 21. März 2013 um 22:05

    Danke!
    Cool ist für mich zwar was anderes, aber manchmal könnte es ganz nützlich sein.

  • LibHaru Wrapper-UDF - PDFs erstellen mit der libHaru-DLL

    • funkey
    • 21. März 2013 um 05:45

    Hallo,
    ich habe mich nun endlich entschlossen die LibHaru-DLL (http://libharu.org/) in AutoIt zu wrappen. Damit können sehr schnell mittels Code PDF-Dateien erstellt werden. Anbei die UDF, ein Beispiel und die DLL. Bisher habe ich ca. 40% der 200 Funktionen gewrappt. Jeder ist eingeladen daran weiterzuarbeiten, damit die Bibliothek vollständig in AutoIt genutzt werden kann. Ich habe die DLL bereits genutzt, um einen CSV2PDF-Generator zu machen. Es gibt zwar bereits eine PDF-UDF komplett in AutoIt (http://www.autoitscript.com/forum/topic/11…ur-application/), aber die konnte ich aufgrund der langsamen Geschwindigkeit nicht nutzen.

    Happy Coding!

    Dateien

    libhpdf.DLL.rar 238,86 kB – 821 Downloads LibHaru Header files.rar 11,49 kB – 829 Downloads
  • Statusbar - Verschiedene Farben für die einzelnen Parts

    • funkey
    • 20. März 2013 um 23:53

    Hallo,
    hab gerade für das englische Hilfeforum folgenden Code geschrieben, um verschiedene Farben für die einzelnen Parts einer Statusbar anzuzeigen.
    Das kann sicher auch hier der/die eine oder andere gebrauchen.

    mfg
    funkey

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    Global $hGUI, $hStatus
    Global $aParts[3] = [75, 150, -1]

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

    $hGUI = GUICreate("StatusBar Set BkColor", 400, 300)
    GUIRegisterMsg($WM_DRAWITEM, "_WM_DRAWITEM")
    $hStatus = _GUICtrlStatusBar_Create($hGUI)
    GUISetState()

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

    ;~ _GUICtrlStatusBar_SetBkColor($hStatus, 0x5555DD)

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

    _GUICtrlStatusBar_SetParts($hStatus, $aParts)
    _GUICtrlStatusBar_SetText($hStatus, "Part 1", 0, $SBT_OWNERDRAW)
    _GUICtrlStatusBar_SetText($hStatus, "Part 2", 1, $SBT_OWNERDRAW)
    _GUICtrlStatusBar_SetText($hStatus, "Part 3", 2, $SBT_OWNERDRAW)

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()

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

    Func _WM_DRAWITEM($hWnd, $Msg, $wParam, $lParam)
    #forceref $Msg, $wParam, $lParam
    Local $tDRAWITEMSTRUCT = DllStructCreate("uint CtlType;uint CtlID;uint itemID;uint itemAction;uint itemState;HWND hwndItem;HANDLE hDC;long rcItem[4];ULONG_PTR itemData", $lParam)
    Local $itemID = DllStructGetData($tDRAWITEMSTRUCT, "itemID") ;part number
    Local $hDC = DllStructGetData($tDRAWITEMSTRUCT, "hDC")
    Local $tRect = DllStructCreate("long left;long top;long right; long bottom", DllStructGetPtr($tDRAWITEMSTRUCT, "rcItem"))
    Local $iTop = DllStructGetData($tRect, "top")
    Local $iLeft = DllStructGetData($tRect, "left")
    Local $hBrush

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

    Switch $itemID
    Case 0
    $hBrush = _WinAPI_CreateSolidBrush(0x555500)
    _WinAPI_FillRect($hDC, DllStructGetPtr($tRect), $hBrush)
    _WinAPI_SetBkMode($hDC, $TRANSPARENT)
    DllStructSetData($tRect, "top", $iTop + 1)
    DllStructSetData($tRect, "left", $iLeft + 1)
    _WinAPI_SetTextColor($hDC, 0x00FFFF)
    _WinAPI_DrawText($hDC, "Part 1", $tRect, $DT_LEFT)
    _WinAPI_DeleteObject($hBrush)
    Case 1
    $hBrush = _WinAPI_CreateSolidBrush(0x00FF00)
    _WinAPI_FillRect($hDC, DllStructGetPtr($tRect), $hBrush)
    _WinAPI_SetBkMode($hDC, $TRANSPARENT)
    DllStructSetData($tRect, "top", $iTop + 1)
    DllStructSetData($tRect, "left", $iLeft + 1)
    _WinAPI_DrawText($hDC, "Part 2", $tRect, $DT_LEFT)
    _WinAPI_DeleteObject($hBrush)
    Case 2
    $hBrush = _WinAPI_CreateSolidBrush(0xABCDEF)
    _WinAPI_FillRect($hDC, DllStructGetPtr($tRect), $hBrush)
    _WinAPI_SetBkMode($hDC, $TRANSPARENT)
    DllStructSetData($tRect, "top", $iTop + 1)
    DllStructSetData($tRect, "left", $iLeft + 1)
    _WinAPI_DrawText($hDC, "Part 3", $tRect, $DT_LEFT)
    _WinAPI_DeleteObject($hBrush)
    EndSwitch

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

    $tDRAWITEMSTRUCT = 0
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_DRAWITEM

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Winamp Library _Winamp_GetVersion - Problem

    • funkey
    • 20. März 2013 um 00:43
    [autoit]

    ;Version will be 0x20yx for winamp 2.yx. versions previous to Winamp 2.0,
    ;typically (but not always) use 0x1zyx for 1.zx versions. Weird, I know.

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

    Global $Version = 20579

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

    MsgBox(0, "Version", Hex($Version, 4))

    [/autoit][autoit][/autoit][autoit][/autoit]
  • @scriptdir wechselt?

    • funkey
    • 14. März 2013 um 12:15

    Hat wahrschenlich was mit dem WorkingDir zu tun. wenn du Exe2 von Exe1 aus startest solltest du bei Run() auch den 2.Parameter "workingdir" mit dem Pfad der Exe2 befüllen.

  • Hilfe mit UDP Broadcast

    • funkey
    • 12. März 2013 um 13:56

    Hallo!
    Aufgrund des Threads [ offen ] Ausgehende IP erzwingen / ForceBindIP habe ich mich wieder mit einem alten Thema von mir beschäftigt und damit auch gelöst.
    Anbei der Source-Code um alle Siemens Sentron Geräte im Netzwerk über UDP-Broadcast zu ermitteln.

    Spoiler anzeigen
    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=PAC.ico
    #AutoIt3Wrapper_Res_Comment=Siemens Sentron-Geräte auflisten
    #AutoIt3Wrapper_Res_Description=Siemens Sentron-Geräte auflisten
    #AutoIt3Wrapper_Res_Fileversion=0.9
    #AutoIt3Wrapper_Res_LegalCopyright=funkey 2013
    #AutoIt3Wrapper_Res_Language=3079
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/striponly
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Array.au3>
    #include "socket_UDF.au3"

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

    TCPStartup() ; WSAStartup
    Global $iSock = _socket($AF_INET, $SOCK_DGRAM, $IPPROTO_UDP)
    ;~ ConsoleWrite("Socket: " & $iSock & @CRLF)

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

    Global $tBroadCast = DllStructCreate("int broadcast")
    DllStructSetData($tBroadCast, "broadcast", 1)

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

    Global $iSockError = _setsockopt($iSock, $SOL_SOCKET, $SO_BROADCAST, $tBroadCast) ; Broadcast erlauben
    If $iSockError Then
    ConsoleWrite("SetSockOpt error setting broadcast!. Windows Sockets Error Codes: " & _WSAGetLastError() & @CRLF)
    _closesocket($iSock)
    TCPShutdown() ; WSACleanup
    EndIf

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

    Global $tTimeVal = DllStructCreate("DWORD timeout")
    DllStructSetData($tTimeVal, "timeout", 200) ; Timeout von 200ms

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

    $iSockError = _setsockopt($iSock, $SOL_SOCKET, $SO_RCVTIMEO, $tTimeVal) ; Timeout für recv einstellen
    If $iSockError Then
    ConsoleWrite("SetSockOpt error setting recv timeout!. Windows Sockets Error Codes: " & _WSAGetLastError() & @CRLF)
    _closesocket($iSock)
    TCPShutdown() ; WSACleanup
    EndIf

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

    Global $iBind = _bind($iSock, @IPAddress1, 17009) ; Lokale IP-Adresse und Port zu verwenden
    If $iBind Then
    ConsoleWrite("Bind error: " & $iBind & @CRLF) ; 0 ist OK
    _closesocket($iSock)
    TCPShutdown() ; WSACleanup
    EndIf

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

    ;~ ConsoleWrite("Lokaler Port: " & _Ws2_GetLocalPort($iSock) & @CRLF)

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

    Global $iConnect = _connect($iSock, "255.255.255.255", 17008) ;Broadcast auf Port 17008
    If $iConnect Then
    ConsoleWrite("Connect Error! Windows Sockets Error Codes: " & _WSAGetLastError() & @CRLF)
    _closesocket($iSock)
    TCPShutdown() ; WSACleanup
    EndIf

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

    Global $bToSend = Binary("0x3101FFFFFFFFFFFF") ; Sentron-Geräte meldet euch!! ;)
    Global $tSendBuffer = DllStructCreate("byte[" & BinaryLen($bToSend) & "]")
    DllStructSetData($tSendBuffer, 1, $bToSend)

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

    Global $iSend = _send($iSock, $tSendBuffer)

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

    Global $tRecvBuffer = DllStructCreate("byte[512]")
    Global $iRecv
    Global $aData[1][6] = [["MAC", "IP", "Subnetmask", "Gateway", "Bestellnummer", "Infotext"]]
    Global $iDevices = 0

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

    While 1
    $iRecv = _recv($iSock, $tRecvBuffer)
    If $iRecv = -1 Then ExitLoop ; Timeout

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

    $iDevices += 1
    ReDim $aData[$iDevices + 1][6]

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

    $aData[$iDevices][5] = DllStructGetData($tRecvBuffer, 1)
    $aData[$iDevices][0] = _BytesRecvToMAC($aData[$iDevices][5])
    $aData[$iDevices][1] = _BytesRecvToIP($aData[$iDevices][5], 9)
    $aData[$iDevices][2] = _BytesRecvToIP($aData[$iDevices][5], 13)
    $aData[$iDevices][3] = _BytesRecvToIP($aData[$iDevices][5], 17)
    $aData[$iDevices][4] = _BytesRecvToString($aData[$iDevices][5], 21, 18)
    $aData[$iDevices][5] = _BytesRecvToString($aData[$iDevices][5], 41, $iRecv - 41)
    WEnd

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

    _closesocket($iSock)
    TCPShutdown() ; WSACleanup

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

    _ArraySort($aData, 0, 1, 0, 1) ; Anhand der IP-Adresse sortieren
    _ArrayDisplay($aData, "Gefundene Geräte")

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

    Func _BytesRecvToIP($bBytes, $iOffset)
    Return StringFormat("%i.%i.%i.%i", BinaryMid($bBytes, $iOffset, 1), BinaryMid($bBytes, $iOffset + 1, 1), BinaryMid($bBytes, $iOffset + 2, 1), BinaryMid($bBytes, $iOffset + 3, 1))
    EndFunc ;==>_BytesRecvToIP

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

    Func _BytesRecvToMAC($bBytes)
    Return StringFormat("%02X-%02X-%02X-%02X-%02X-%02X", BinaryMid($bBytes, 3, 1), BinaryMid($bBytes, 4, 1), BinaryMid($bBytes, 5, 1), BinaryMid($bBytes, 6, 1), BinaryMid($bBytes, 7, 1), BinaryMid($bBytes, 8, 1))
    EndFunc ;==>_BytesRecvToMAC

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

    Func _BytesRecvToString($bBytes, $iStart, $iLen)
    Return BinaryToString(BinaryMid($bBytes, $iStart, $iLen))
    EndFunc ;==>_BytesRecvToString

    [/autoit]

    Dateien

    Sentron.rar 3,53 kB – 677 Downloads
  • SchrotterChwebnode - Projekte Sammlung

    • funkey
    • 11. März 2013 um 21:25

    Ich werde mir keines dieser Programme anschauen, aleine schon wenn ich die Größe der Programme mit minimalem Nutzen sehe, weiß ich, dass da einiges an nicht gewünschtem Zeug mitkommt.
    Außerdem ist das wie bereits gesagt das falsche Forum und auch der Titel des Threads sollte SchrotterChwebnode's Programmsammlung oder so heißen.

  • Kommunikation zweier autoit programme

    • funkey
    • 11. März 2013 um 09:07

    Du kannst das über verschiedene Varianten lösen.
    Z.B über TCP-Funktionen, oder über eine temporäre Datei (Das Hauptprogramm überprüft ob die Datei vorhanden ist, löscht sie und beendet sich)
    oder auch über ein verstecktes Control im Hautprogramm (Updater schreibt 'Exit' in Control, Hauptprogramm überprüft den Text des Controls, wenn es z.B. 'Exit' enthält, beendet es sich).

    Ich habe z.B. auch folgendes bei mir im Einsatz: Hauptprogramm.exe überprüft das Vorhandensein von Hauptprogramm.exe.update.exe. Falls vorhanden beendet es sich, benennt sich selbst über einen Batch-Befehl in Hauptprogramm.exe.old.exe um und Hauptprogramm.exe.update.exe in Hauptprogramm.exe und startet diese. ;)

  • Nach (DLL-)Funktion -> Exit

    • funkey
    • 10. März 2013 um 12:09

    cdecl

  • Nach (DLL-)Funktion -> Exit

    • funkey
    • 9. März 2013 um 11:12

    Ich habe den Fehler schon gefunden! :D
    Aber: Wie legal ist es denn, diese API zu benützen??

  • StringRegExp / String splitten

    • funkey
    • 9. März 2013 um 10:17

    Und meine ;)

    [autoit]

    #include <String.au3>
    #include <Array.au3>

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

    Global $sString = "ID1 F2 A3"

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

    $sString = _StringInsert($sString, " ", StringInStr($sString, "F") - 1)
    $sString = _StringInsert($sString, " ", StringInStr($sString, "A") - 1)
    $sString = StringStripWS($sString, 4)

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

    Global $aString = StringSplit($sString, " ", 3)

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

    _ArrayDisplay($aString)

    [/autoit]
  • Ausgehende IP erzwingen / ForceBindIP

    • funkey
    • 13. Februar 2013 um 13:14

    So, hab mir nun das ganze angeschaut und die benötigten Funktionen nach AutoIt portiert.
    Ob die IP-Adresse auch gebunden wird kann ich nicht testen, der ausgehende Port wird aber erfolgreich gebunden.
    Angehängt die Funktionen und ein Beispiel, das bei mir tadellos funktioniert. Natürlich ist es auf meine Testumgebung abgestimmt.

    Dateien

    TCP-Funktionen.au3 3,75 kB – 663 Downloads
  • AutoIt Studio: Funktion wird nicht ausgeführt (gar nicht aufgerufen)

    • funkey
    • 11. Februar 2013 um 11:55

    Wahrscheinlich wird diese Zeile nicht im Code eingefügt:

    [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit]
  • DriveSetLabel unter Windows 7 funzt nicht

    • funkey
    • 5. Februar 2013 um 22:36

    Kann es sein dass man #RequireAdmin braucht?

  • Happy Glückwunsch Andy zum 47'ten

    • funkey
    • 5. Februar 2013 um 08:19

    Zu spät ;(

    Aber trotzdem noch nachträglich alles Gute zu deinem Geburtstag! :party:
    Bleib so wie du bist, und bleib gesund!

  • Bytelänge von Textzeile herausfinden

    • funkey
    • 2. Februar 2013 um 13:48
    Zitat von AspirinJunkie


    Bist du sicher dass du FileReadLine richtig benutzt?
    Ich vermute mal ganz stark, dass du die Zeilennummer als zweiten Parameter einträgst und in der Schleife hochzählen lässt.
    Das muss natürlich furchtbar langsam sein.
    Wenn du es so machst wie im Beispiel in der Hilfe zu FileReadLine (also ohne die Zeilennummer einzutragen, sondern einfach die Datei Zeile für Zeile durchgehen) ist das ganze alles andere als langsam.

    Hast du das gelesen?
    Du sollst den zweiten Parameter von FileReadLine() nicht verwenden! Du brauchst $Line gar nicht.

  • DLL Call - Dism API DismOpenSession

    • funkey
    • 2. Februar 2013 um 07:36

    Auf den ersten Blick hast du nur eines noch falsch gemacht.

    [autoit]

    $Return[0] = DllStructGetData($tDismMountedImageInfo, 1)

    [/autoit]


    müsste

    [autoit]

    $Return[0] = DllStructGetData($wchar, 1)

    [/autoit]

    und

    [autoit]

    $Return[1] = DllStructGetData($tDismMountedImageInfo, 2)

    [/autoit]


    müsste

    [autoit]

    $Return[1] = DllStructGetData($wchar2, 1)

    [/autoit]


    heißen.

  • DLL Call - Dism API DismOpenSession

    • funkey
    • 1. Februar 2013 um 20:35

    So ungefähr hätte ich mir das vorgestellt:

    Spoiler anzeigen
    [autoit]

    $wchar = DllStructCreate("WCHAR[260]")
    $ptrwchar = DllStructGetPtr($wchar)

    $wchar2 = DllStructCreate("WCHAR[260]")
    $ptrwchar2 = DllStructGetPtr($wchar2)

    Global Const $tagDismMountedImageInfo = "ptr MountPath;ptr ImageFilePath;UINT ImageIndex;Int DismMountMode;Int MountStatus"


    Global $tDismMountedImageInfo = DllStructCreate($tagDismMountedImageInfo)
    DllStructSetData($tDismMountedImageInfo, "MountPath", $ptrwchar)
    DllStructSetData($tDismMountedImageInfo, "ImageFilePath", $ptrwchar2)

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • DLL Call - Dism API DismOpenSession

    • funkey
    • 1. Februar 2013 um 19:04

    PCWSTR ist eigeltlich ein Pointer auf einen WSTR. Da müsstest du einen ptr nehmen und diesen mit einem Pointer einer DllStruct aus WCHAR befüllen. Das ganze natürlich beide Male. Alles klar? ;)

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™