MSDN Eintrag in Autoit nutzen?

  • vermutlich mit h2au3.au3/exe das Ist ein Konvertierungsscript welches mit dem Namen "h2au3" hier im Forum zu finden ist.

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Oder inbem du das mit den Infos unter "DLLStrucrCreate" in das AutoIt-Äquivalent übersetzt.

  • Also bei dem h2au3 bekomme ich nur das raus. Bringt mir aber so ja nichts:

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hi chip,

    [autoit]

    ; --- $WLAN_AVAILABLE_NETWORK
    Global Const $WLAN_AVAILABLE_NETWORK = _
    "DOT11_SSID dot11Ssid;" & _
    "DOT11_BSS_TYPE dot11BssType;" & _
    "ULONG uNumberOfBssids;" & _
    "BOOL bNetworkConnectable;" & _
    "WLAN_REASON_CODE wlanNotConnectableReason;" & _
    "ULONG uNumberOfPhyTypes;" & _
    "BOOL bMorePhyTypes;" & _
    "WLAN_SIGNAL_QUALITY wlanSignalQuality;" & _
    "BOOL bSecurityEnabled;" & _
    "DOT11_AUTH_ALGORITHM dot11DefaultAuthAlgorithm;" & _
    "DOT11_CIPHER_ALGORITHM dot11DefaultCipherAlgorithm;" & _
    "DWORD dwFlags;" & _
    "DWORD dwReserved;"
    $tWLAN_AVAILABLE_NETWORK = DllStructCreate($WLAN_AVAILABLE_NETWORK)

    [/autoit]


    $tWLAN_AVAILABLE_NETWORK ist jetzt die Fertige Struct. Mit DllStructGetPtr kannst du einen Pointer zu der Struct ermitteln und ihn in DLL calls verwenden.

    €dit: Da fehlen noch haufenweise unterstrukturen. Hab ich übersehen :rolleyes:. Wie macht man sowas überhaubt ? Noch anderer Structs erstellen und dann die Pointer reinschreiben ?

  • @Sprenger: Nein, das ist nicht fertig. Da gibt es die Unterstrukturen, die noch implementiert werden müssen.
    Edit: So ungefähr sollte es klappen:

    Spoiler anzeigen
    [autoit]


    ; ProgAndy
    Func _SubStruct_GetSize($tagSUBSTRUCT)
    Return DllStructGetSize(DllStructCreate($tagSUBSTRUCT, 1))
    EndFunc

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

    ; ProgAndy
    Func _SubStruct_Get(ByRef $tSTRUCT, $vElement, Const $tagSUBSTRUCT)
    Local $pTarget = DllStructGetPtr($tSTRUCT, $vElement)
    If @error Or $pTarget = 0 Then Return SetError(1,0,0)
    Local $tSUBSTRUCT = DllStructCreate($tagSUBSTRUCT, $pTarget)
    If @error Then Return SetError(2,@error, 0)
    Return $tSUBSTRUCT
    EndFunc

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

    ; ProgAndy
    Func _SubStruct_Declaration($tagSUBSTRUCT, $sName="")
    If $sName = "" Then Return "byte[" & _SubStruct_GetSize($tagSUBSTRUCT) & "];"
    Return "byte " & $sName & "[" & _SubStruct_GetSize($tagSUBSTRUCT) & "];"
    EndFunc
    Global Const $DOT11_SSID_MAX_LENGTH = 32
    Global Const $WLAN_MAX_PHY_TYPE_NUMBER = 8
    Global Const $tagDOT11_SSID = "ULONG uSSIDLength; BYTE ucSSID[" & $DOT11_SSID_MAX_LENGTH & "];"

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

    ; --- $WLAN_AVAILABLE_NETWORK
    Global Const $tagWLAN_AVAILABLE_NETWORK = _
    _SubStruct_Declaration($tagDOT11_SSID, "dot11Ssid") & _ ;DOT11_SSID
    "int dot11BssType;" & _ ; DOT11_BSS_TYPE is enum
    "ULONG uNumberOfBssids;" & _
    "BOOL bNetworkConnectable;" & _
    "dword wlanNotConnectableReason;" & _ ; WLAN_REASON_CODE
    "ULONG uNumberOfPhyTypes[" & $WLAN_MAX_PHY_TYPE_NUMBER & "];" & _
    "BOOL bMorePhyTypes;" & _
    "ULONG wlanSignalQuality;" & _ ; WLAN_SIGNAL_QUALITY
    "BOOL bSecurityEnabled;" & _
    "int dot11DefaultAuthAlgorithm;" & _ ; DOT11_AUTH_ALGORITHM
    "int dot11DefaultCipherAlgorithm;" & _ ; DOT11_CIPHER_ALGORITHM
    "DWORD dwFlags;" & _
    "DWORD dwReserved;"
    $tWLAN_AVAILABLE_NETWORK = DllStructCreate($tagWLAN_AVAILABLE_NETWORK)
    $tWLAN_AVAILABLE_NETWORK__DOT11_SSID = _SubStruct_Get($tWLAN_AVAILABLE_NETWORK, "dot11Ssid", $tagDOT11_SSID)

    [/autoit]

    Einmal editiert, zuletzt von progandy (11. Februar 2011 um 16:18)