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

Beiträge von WhiteLion

  • GameSync - Keep your Games Synced!

    • WhiteLion
    • 8. Oktober 2012 um 17:06

    tut sich wohl nix mehr.... weder registrieren geht, noch downloaden.

  • Multiplayer-Spiel mit Irrlicht

    • WhiteLion
    • 8. Oktober 2012 um 16:28

    hmmm, client wirft fehler:

    Spoiler anzeigen

    E:\test\test3\AutoOS\Client_alt.au3(262,9) : ERROR: $lx already declared as parameter
    Dim $lx,
    ~~~~~~~^
    E:\test\test3\AutoOS\Client_alt.au3(262,13) : ERROR: $ly already declared as parameter
    Dim $lx,$ly,
    ~~~~~~~~~~~^
    E:\test\test3\AutoOS\Client_alt.au3(262,17) : ERROR: $lz already declared as parameter
    Dim $lx,$ly,$lz,
    ~~~~~~~~~~~~~~~^
    E:\test\test3\AutoOS\Client_alt.au3(262,21) : ERROR: $nr already declared as parameter
    Dim $lx,$ly,$lz,$nr
    ~~~~~~~~~~~~~~~~~~~^
    E:\test\test3\AutoOS\Client_alt.au3(274,9) : ERROR: $lx already declared as parameter
    Dim $lx,
    ~~~~~~~^
    E:\test\test3\AutoOS\Client_alt.au3(274,13) : ERROR: $ly already declared as parameter
    Dim $lx,$ly,
    ~~~~~~~~~~~^
    E:\test\test3\AutoOS\Client_alt.au3(274,17) : ERROR: $lz already declared as parameter
    Dim $lx,$ly,$lz,
    ~~~~~~~~~~~~~~~^
    E:\test\test3\AutoOS\Client_alt.au3(274,21) : ERROR: $nr already declared as parameter
    Dim $lx,$ly,$lz,$nr
    ~~~~~~~~~~~~~~~~~~~^
    E:\test\test3\AutoOS\Client_alt.au3(398,48) : ERROR: $level already declared as parameter
    Dim $level = 1; rausnehmen bei mehreren Dateien
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test\test3\AutoOS\Client_alt.au3 - 9 error(s), 0 warning(s)

  • WinEX UDF v0.1 - 473 Funktionen um die Windows-Standard-Dll

    • WhiteLion
    • 8. Oktober 2012 um 11:26

    denke für den api-viewer ... in deutsch wäre eine übersicht der WinAPI funktionen wie wie sie die autoit hilfe bietet natürlich ein traum.

  • adresszeile aller browser und deren geöffnete tabs auslesen !?

    • WhiteLion
    • 15. August 2012 um 11:29

    ja, das war eine gute idee, schade das firefox nicht geht. :(

  • adresszeile aller browser und deren geöffnete tabs auslesen !?

    • WhiteLion
    • 15. August 2012 um 08:15

    danke, hmmm, also das klingt alles iwie komplizierter als ich es mir vorgestellt habe.
    ich hatte jetzt eigentlich gehofft das ich das ohne hooking oder sniffing hinbekommen könnte.
    damit wir nicht aneinander vorbeireden:
    ich möchte eine aktion auslösen, wenn eine domain angesurft wird, also der nutzer sich z.B. auf:
    "www.autoit.de/abc" befindet...

  • OpenCV meets AutoIt

    • WhiteLion
    • 14. August 2012 um 19:35

    ich bin begeistert das du dir die arbeit machen möchtest! bleib dran!

  • adresszeile aller browser und deren geöffnete tabs auslesen !?

    • WhiteLion
    • 14. August 2012 um 19:18

    wie die überschrift schon sagt.... ich würde gerne wissen wie ich von chrome / IE / firefox die momentan gerade angesurften adressen auslesen kann? - hat jemand etwas nützliches gesehen (udf o.ä.) was ich evtl. verwenden könnte !?.
    ziel ist es, bei bestimmten domains mein programm agieren zu lassen...

  • drag and drop auf listview / list

    • WhiteLion
    • 16. April 2012 um 19:07

    moinsen,
    ich probiere gerade mal drag and drop aus....
    eigentlich hab ich gedacht, dass es recht einfach geht ... also beim input tut es das ja auch.
    allerdings würde ich gerne drag and drop auf ein listview oder list item machen... hat jemand ein beispiel ?
    ich bekomm´s jedenfalls nicht hin.

  • File/Bytepatcher (suchen und ersetzen mit Patternmaske)

    • WhiteLion
    • 3. April 2012 um 14:17

    [Update 1.1a]
    die dll wurde per array in das script includiert.

    [Initial 1.0.a]
    So, nach anfänglichen Schwierigkeiten hier meine c++ dll als udf für Autoit.
    Mit Beispiel (Alles auch im rar - Archiv):

    Wozu das Ganze?:
    Wenn man eine Datei hat in der man einen/mehrere Bytestring/s sucht, der im String
    unbekannte oder sich ändernde Bytes enthält, dann kann dieser hiermit gesucht und ganz oder teilweise (auch mit einer Patternmaske) ersetzt werden. Das Ganze funktioniert auf Dateiebene mit jeglicher Art von Binärendateien;
    sowohl die Dateien, als auch die Suchstrings können dabei so groß sein, wie es der Buffer hergibt.
    Es funktioniert auch mit mehreren/verschiedenen Bytestrings beliebig oft hintereinander.

    Wir suchen z.B. "3BC3EB9529000000A1" wobei hier in hex umgewandelt wird.
    Die Maske ist z.B. "xxx?????x" d.h. die ersten 3 bytes und das letzte Byte des Strings müssen gefunden werden!
    ... tun sie das, wird nach gleichem Prinzip ersetzt ... alles was "x" beim Ersetzen ist, wird vom "replacestring" an die Stelle geschrieben, wo "searchstring" gefunden wurde!

    Vorteile: Wahnsinnige Geschwindigkeit... selbst bei großen Dateien... ...dank Dll (= neuer Thread) arbeitet es parallel zum autoit script. wer möchte, darf gerne mal Speedtests machen (würde mich freuen / z.B. im vergleich zu Autoit)


    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <search_and_replace.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Suchen & ersetzen...", 250, 100, -1, -1)
    $Button1 = GUICtrlCreateButton("Search and Replace", 25, 50, 200, 25, $WS_GROUP)
    GUICtrlCreateLabel("Beispiel!", 100, 20)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    ; Example how so search and replace bytes unknown bytes
    ; in searchbytes and in replacebytes
    ; Note: This does not increase the filesize! It will replace
    ; the bytes at where the searchmask was found!
    ; pls give credit if you use my dll!
    ; Greetings - WhiteLion

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _Patch()
    EndSwitch
    WEnd

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

    Func _Patch()
    MsgBox (0, "!!!", "Before continue, test -> PatchMe.exe")
    MsgBox (0,"_Fileread", "Filesize in bytes: "&_FileRead("PatchMe.exe"))
    MsgBox (0,"_FilePatch", "Count of replacements: "&_FilePatch("3BC30F8494000000a1", "xx??????x", "3BC3E99500000090a1", "??xxx??x?"))
    MsgBox (0, "_FileWrite", "Writing file went well: "&_FileWrite("Done.exe"))
    MsgBox (0, "Finished", "Now test -> Done.exe")
    EndFunc

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

    udf:

    Spoiler anzeigen
    [autoit]

    #include-once
    #region Search_And_Replace

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

    Global $sPath = @TempDir & "\", $bData[3] = [1]
    ; String mit den Binärdaten von: sar.dll
    $bData[1] &= "0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000000100000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A240000000000000095C01DD1D1A17382D1A17382D1A1738242EFEB82D0A17382CA3CED82D2A17382CA3CD982DFA17382CA3CEF82D4A17382CA3CD882D7A17382D8D9E082D3A17382D1A172825BA17382CA3CDC82D2A17382CA3CE882D0A17382CA3CEE82D0A1738252696368D1A17382000000000000000000000000000000000000000000000000504500004C01030097C87A4F0000000000000000E00002210B010A00004000000010000000B00000D0EE000000C00000000001000000001000100000000200000500010000000000050001000000000000100100001000000000000002004001000010000010000000001000001000000000000010000000BC02010080000000B80101000401000000000100B8010000000000000000000000000000000000003C0301001800000000000000000000000000000000000000000000000000000000000000000000009CF000004800000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000B00000001000000000000000040000000000000000000000000000800000E055505831000000000040000000C000000032000000040000000000000000000000000000400000E02E7273726300000000100000000001000004000000360000000000000000000000000000400000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000332E303800555058210D090209D23FA2B0251D2E4F56C30000CE2E0000007A00002604001AFB776FFFC701000053F4FF25055188CC00558BEC568BF1C70615FFB1FF1915F6450801740A560C0483C4048BC65E5DFFE56DF6C20400CC002CF057B9520083FE0472168BBBD6B6FFFF8B023B01751283EE29C102261573ECF9B7DFFE85F674440FB60202392BC77531120176350FB6420134CD4B77790110200276240202FF4BF3D20F0376130349032BC1C1F81F5F83FD0BDBFEC8015EC35F33C004CC008B0885C97414B36FDFFE9C50BC85C0A78B108BC8836A01FFD0296DFFBF75CF8BC08B481481E1FFF9FFFF81C900082A89F6ED6FB60E5D1E1F6AFF6812417B64A105FE77BBBB4581ECD40653560D801833C5508D45F464A3FBEEEDF61908085086FF33DBEE85A8C745FC14DDDD7EE1E80818EC8D8D3859FF510B0B4CC6EEB7DFBE1701837D1C854D0873038D046A218DB5501DFEDF6F771C1A4C6A38C0751A8B952E8B4A046A028D8C0D2C633FF60BBE9CEB188B85194800B7FBDB816473395DA40F858D708B0D1085DDDD6FB48B16F051B75204525A1FCC9815C68E6DE4C82D988B8E8BACAFDDDEBFB1A88945F0C784150F195444A88AC63EDB75A202330D8C0E885DFC377882FB1BDBADA808A0BF720D8BEFF47F179A4BF8D108890DF4595E5BB1D9EDC68BE5031C00C05353FC38DB809D85800820127CCC086BEFC3DF030836862C412132C6BB0C533C27FBAEA30728881C02A1D1F45034EC26193336DA385008221CEFC28EECEC5381A15BE181DD0E2359535088848D75B0D8EC17510D0C719477094732424A4890527285F04E8B35345803564269144D57830C19935B9F2C51DBF153C656579A8B018D7170368975947BCB187B443190914EA2910E6CF6EC100C928BCE917CE42135075F5EC30F4203B52E9899DC72F5537FEE840C2113C475D40718BED3F60AAC8BF8090814157C12BE7D773B41F9BF1028397DE8720981D451FFD6780F131E0915958F52589F8491FC025451F98D5508522C3C7EE68D85181A0C0CD6A718F1DE2C9CF69B24060F8494BDC821239361F05C9CCB42B20053F588D07221933418303083D9261788E61CF42CE376D2D649E92D05F97ECB0E5976AA5152288CD5B60C331AAACB211B18926EB74DF788468955890DCC100099043789B709A1404DFD5B0DF03393B18CA7CDA2E4857F3F18607C906083EC2C5382F8C2D61A645DADD6F223E0895DEC6FB71EEB0B01163C3BC6B9E7020B3BC374AE7D9BE50885DBDB8B1DD556246EDB1C2ED606801690593CDC0D3658DBB63CFE8B3C100C30C84533F0DFE32CBE30F74DCC3975405A123C67A55BC83C520E2E45506B765B9B3A19DC4E5152D41F8C754B06204E1049C8E624CBB32410207DECB6ADC1B05792DD2CE09656B2DBC59659D01E1B"
    $bData[1] &= "833DBB2C006CA6DDDFE4F70F86BBE7F7DE7A78DC7360FE1BB4110FB6032BC2740CB3EDDB9A78737F01753C33D2042808CC5FFF17FE7FD48BCBF7D903F18BC303F98D49453C303F75058A08880C38139BDCED42403BD172EE2D138BD3500B1942E215904F47902339923827162D482F969ABF74CB77934BA652187FE0510B538C51090C3248090C9415A5132F1CFFBE817DE0FC6618180A87979E3B0FA5E10B85C27D643156EC2BFB2B1AFAFFD67855D88D6CE80778756E8A0E88080FBE16A123E98B45E4716AA474B183C1616AFCEE55F03147C9EFEC5103D63451A0A85046FB6D86FBFF4DD87583DD6FAFF003D840890E6099FE703B05C20F824AFE518F7361F274241E10E0240F522B9D05E7205B21C848DA26CF402C08E83FBF8544533540A0A752B872CC1A9252988FA77EF0FDCE9253CD0C56052888534061A96C4A50105BDB4CC420CF0063E08363837D5F11F00F54155707684832C2AD51492C52497C51D8E410060C0891072681333DE4BE5C202CCF752410D7547509B378EE891F6754C19690580FD515B77E6AF06D53758A85D8106EFC7356C9B5DE05BA13D289A66AD0EEDDED75160A391D12D40F95C00E076806BFFFFBB4EB0506C4895E10C7461487881EBD256250220DB38B25BE307A6E61837E14B27E6F496CD706B13AC2461025F14A452930AF13C82470022F087DBB81BFB50877B8F08D4F70C707C248C7474FE56E71AC54665060D37718D5183B0B2C5CCF47F0165C07EEE010540706C7040FF99118DB6ABA79EC1D540018DBFEA9CEBA5404885E5002491748616BDF462EA0F45489564C0531C761C9236B2BFDBF40ADD8730B6CBE9909C0B0688E16C0C10F99EC5558C532C0C746EE2C2464467754CBF889196C094479FA0383785463A366A8FF9322849B7A9B8A6C6A1050646703CFF2856C5262FBFA08CB2F0C4BFFAE8B750883C6DB66BBB5F0578BFE393675BCFFEB55DE9CD1B6E51B4C84020E8B841010080FE7CA76124575893F874C0D4E3BFB751323C3A46BEA10F75390C87F905742077DEF4049844357F25356F1E920FDFFDD4744FCA4741E8B4E108D5648391175148B563CFDED6DABA0E711112089010C302BC08902381216ECBB9A74382716C8C203A316CABC1C3C1F4823A3B0B1008B4154C21E8C0C0FE0A859C30F964C1665784FA87D17218C5CA88BD983FAFFC037542ABCCB3210B88B4324FB4BBC3DEE2008348B30423BCE7315FF0815C7B66F14FF01893088F1C228837B5178A2835492DA7A43704AFC1BBE8A4B483BC11643408B533C50505280DA8DE6C6C74C60294375221903671B140B95C2A49C548A15CE7683F8FF3F9AB251D38CAF3BCE8855D3251CD501FA06855BE81CD4900B5CF083FF10FD022DD780224052CC5203CE512BB4A3D6C4C803D98B4B9B37174EBA50DD434C18700C0F88925DA2B9395861818FDE47BD0BF735B3430332232BF17427CE5EA09B0E184BB5566A019A0C5DB2255E103BF0B9F8375CC65B0BB3FD4349013955C815CA1A07698625EE0CA79683F920F9CE477BBA44F983CAFF2BD17786B5AF71DD806BEF7EFEFE0F87A90B3BFE73475D6567D7DCFBC01E0C52CE0E45842605FEC2B3D08655D481890411894411007C6CC36D2310217FE49EC60430003DCCDD36200F353275D114B6C600B860789B16E603754D5E5D4DD395EB81D0CA5F740F432B75979E250B1C97EB320B83A60E830BC90E231A81EB16A41E0C1BE1BC40E017294B6A818CBE07CFD168C1469808D3F07DC1D4B137008B2D2881732683FBAA7D61A18313B6593BD375191CFD17BE5031527620FF0EAA01F7D81BC05E23C3C1D79922992633392C3464ECB6A30B2C135033C350C974C6B79BDA12688D4648547411881803E4CE5ABB831D3C5B3F5EA7D347B081E288C6129A05ADF15B8B04C103D03BC23E55BC00DFA0E1678B501C579CD28BF89E9C7D2B4A59055F0BC01510C75F41480B21014F2FB561A99C470233F69174268BA9B56DB54F0A1B57800A8A1C2DBF696B7315C2497F208B078D50173497FEA18CBE1434397754470E0247C9C8F2F34F118B4757CFCB48B7B72544751E3C54573F640454643323D648C0DB363A8EE9127921C61C0006FC44347D0F567E648BD830FB703C2EDFD88843C9AFC883F901350136FE8D6C7001291C55E83BD6D4BC5C9BBCF1E7B655D4521535A486A9A6142737E746F6DECAF8881C01AA5D2D1E4E2A44E0BB1046FAB7CEFA14E95DC85250ACC3F0567C066959BB4F47B774F300182D398E7E5DD566E5F1CD14B9FBE401727064395DE8A90561DA31A4D3AF5E7DD3B33B4F1196E60CA4519CBABDA417B13212EABCD339D23573B79A7547A5551345245C78F6C133C94619CC7D54523B0F73D422D4CA66EB5F6ED60A482F4F461C531B4AAD2B5A8D287E1D0FBEA9B58DBE8BE8E39A4416FF4E5120BD5BD7B1A9081C7FE9B49873DE0837153E0D4DD451474289A47B0F83A5D6D28DE4CBEC0C85D9CB26DBC2A5C643489228751A3914051483B635027E0E080CA58680734B7CC7FF83D668060A106C41C29DC2915F760C848185DF3FB2D70BD675063C741715141D260C67AD504F986C68F39D50EAAE616D8D5424C482700967B6EDD4154B7B10791D11799E6553434B53C5F6B63D994C338B371489480A4BC7E242AF5BD9E340046B500C7732486D1510E114F832B917B6B74349045F1A049A5E89103817B260AF022826FFAD76A9E10B580C064D9CD257E32BB5DCB6314472894C3999EA13760E649081C7608DED1B276BAA0BCF7415B654635C960FEC575652F8508B4B445051F585C2813AE4C4C389534C"
    $bData[1] &= "CCB550F6950CE7BBEAE7CE5E2B15A0A42EEC317B5B73C7E9305EEC22E7502826F535B206CC8FE24E614387AB0CE16108CB85D2E3FA9628B5C70BECC9B868EBC65AB5162EC0977ABD5C42ADDB4F498B7E54DBC6467DEFD94A0B4C857218806C46DF6EAD547208787E2002248946306D2D582C34A033944E413B281908980C00BC4D02CF25076F8325007424E883A50F440C6A24D27B1601C79149C0687905D25970027B505FCF4D080CD6165D122432F8F4B874A2602FA6740D5F79108A9D3570C31FB95F10A4969C10CF41AC4E76C416AF8D59480B6243703BB21405B5C30278A86D502C2045C50DA2C8879887D74B700AA94946A253C3E29144B159CF4DD82065152C00ED4ADC1A17100873480F506A55B71F60047FBAE6561472410EEBBB810B57812B424104321A5E18AC0818097CC64008A0C3E003E616DC08055F3BF77462B76EAF1263837F227312AD1041EA6FC0D95157B17C6EEB0A8B178916A33962F07EA12921D83B396B754E148A3E47077978A153C2CF8B794BFB730BF616441E2ACCAC3BC773C063028EFFF83BF1751C8D0C1F126E174B04616CC9085F2199FED0B581C0760B62AD382761879BF01357125FBD65B8196EB75D1D4114970939247228E3EB260EDA6ADC1875E729EEF80AB96D988106F556065F0D30A2C0830A5703CB92726CB335C320322F0E0438308EB381050DDF57A1DCE442B646D8C1C19306070B858C8F5372ACFE6FCE9A1EDE0A16D62BC703D95003DF03D15362CDB9B3577C487C167E8DB72DDC0B5B726E0E7101A860B9C0E2B0CE09CC8F286AB5320653ED6D8E151BB888B2BB366A40ABE0DAB3B150D4A06E93FE8501B35E390CC40BD616AE0E8404113A58A7DB42EA30023450791AB0C566C07EE23216C8B4BB920A1AB50520EB0BDA10A480AD53B33BCBA2801C8C4A3BC30305E940A45F4E3EE42434B2148F401818082D99248E45B7BB3DFBEA5E011C7B4909547BB98AF5E003A4A0A61329AB1366348A77452173529905B8D5579BBA20D051B703CA6D506EFBD6936A5883E8F61B48741C070243879E786D4CEE46D432935B25CCD51CE0384D7D55943C2037D02BF2535452C1EA2CC997B89377805C5693686E9FE7AC16C8936B2E28AB93000155E46E424B49731BADCE162BC0C35A6FE11A0BB001480B8B840CAAC5D9E20C08BF502748DAB76E700A7522484029703C893212CAE0E52D280A8B40C989081FA996DB5C2F25323234D097966A6D892E315236847820E18DB9ED03375F0E40383DD03F1557D26B71C24927422F3E7825419008ED7508B4056341FBA8DC82081B0C19A388BBC8DC08BADAC0519D3838AD094B02C731B94208B8A91358A919A0C529E060328EA4C3BF80BF1886123DC0B1896519C21235DC8008FDCE0FE2762B376EBFC0EB035F14B8ABAA00F7E6C3D1E9F7DF72FFD1EA3BCA7613B8FEA1828D34193BD87605BE0DDAADC185DF8D4E23BB3BC81E3A23F1A5E9FF7713518C14DB76E376A159EB4D09EC5103DCFAECEDADEE215184985B0455DC5215E0363880DCA1C73D04873DAB36B77F019036E8DB1F7CC5C6F7D642B8211EE1C3A275685D6EBA1EBC64DB741A46EE07C75350B4BD25E0386219CF0FE01DB865E41D3989078977373AA2DD525F10E15DF8801F000C0E57125B0CA3C50B83931C16526A00C70BA9D8836AC9B21FE4A1A1C2EC100F2D3C090E5916B60F75298DCF5004F0FCC792E5234DF051F0CCC8240F04BF3EFA241004D746B3E35F2CF42DDA41EB038F8A104084AEF9783B6428AE4C32584C3224170E6FDF2D322033FFA27C1F7F9FC7CF7C37E0F6F6157F053B21760E2B041BCF59D889BAD11DF17DDCEB078DDC8BFB5F32380B8E428531F76034CAA10BD67245CFC253401BE46EAA707C3032E644303C4E59A33018C2883B8A1BF759D1FA0F94C188082884C975A5778723B5E5E4213CE33A1425C0BA1BFC1047407437D77C2D99DBDFA244030122798A4C3040766B05683EE9020938525CB5073E306C4F85AC774D4A80466E17A9752E8BCE9ED476FB3D0C283138E1576C50685CD4BAE0DA1C3BD799CCDB5A63C17B9D33035220034D3517AC249C701E1C6AD214296E3503CED3AC044246DA487ED0AFCFAE1A6EEE174B733838F60746FC53C648ABC658C383C3FF83D7FF5B74A9335AF82041642483DCEC6DAAEE0F8C71427F4C84674CF3F41EDE837509EF37264C157F4FBD3AFFEBBCD608B3016A04E68DC18288CEB8192215C3490E8C08694FBA86DB25921C8D581090038D607485238A205F0B688D37C37C1CA2EE16894D2B86738D2D966A7659CB380ADEB3835660E8AD2613228B63591D85DA3CD89D3C238C3764D0E93C09E4321E583CDC0E0D4DC9237B351427DB5B40063236B40DB9DF0C8A41747094518C433E4E253F53C33E2BE305E4849F3E68D0466B557B3B5115F90019C23ED8078B488686A3A4394F5AE956C345849BFE8DA42487553EE843D9DE8EF1546E8855FA2B63EBB10C84C83623654FEBCBE410C60CB8302446C8C922C35D3F3E7906DA007214F9F4E0C02E08634AE4DD24859CFFC70C7D6FD02AF0C48BF08B073B700C7323A2F0762B820CB1EF751D80777CF91BDBD7171ED81A128B5034B2EB065B17A52E5CEBE3DA19528EF0C9A7B875064B6DF057A950CC8DC0F6C41CEFE478E049940A4CA0D90D5B6851425280B1EED03E4085F936C04000573E074CAB7A60022161E86D7D62AC9DAC6F56504962800396540449A20F470D24073FEEBEAD0CC046014C51B85DA8D3AE89EC0511BC0F68E668F7EDD5B88805A89D2BBCE4256492B12F33C427D8D4C90C4164C4842877"
    $bData[1] &= "91B1B1F01EE005E42343938564E421BFEC4086048600F024630F3902860C28203B0093DF1C91860C6D0565B4F71D2CC6263078AEA046005C610FFD7B3DCF58F4FE4E720FA1459804BE63037B6362351D682F046C49BC8D72950D9FB529A6F90D6C04BB2985D81506424BC8C4521726B14B8EFC8385BC85A85F29024207C2BC5E795B2FAA190EA4E1FCFCD2A57A1B174EC8572FF4BAE39770B7E8885DE09F8D9B0D5F1141848D1ACD3AD3CE62A0E02E15D8DE40518BCC8959A0C6445230566DB6419819575657BD2A97D3FC7B4BD214DBF421F088E00C141B1960FCFED05BEC3262807C7F7CA2CB0036E2C47378A251860AB5F4AFDE1C946A35C2F292039FD0FDDF0111545852897C2424895C242C302833801102E76C0A7BB28057365464512D918058406CFBC200C61AF66774438F9562B6A50231515152D85A21238400B8DF2E4B713B567470880360898C24AE6B9AB38012504C3C075C0F2EDE6C862C6E1128188D7801F65BA842CD3AD1C7E2C474136C233C42998BCE51858D246426680D22895F37860FDB656C9418488B4C0CF1C70BA61B73547F5C565CF38B90930D84FFEF56C6502EC125E4408BDB8DBA48B7DB14601D2C8C083C68100066E43E2CF46B58FB61DCDDC989646D1E8D515F194184DB6F0BD966A5CA6B333059A40B468C37443105F7034F942494A1B424B80674F7968B747E7C93A1BC24A015481F80338ED669061CC0D2E6B68D9B392850C4703CBF86090D03C01550957E0163AC731B2574EA60C64BFE300BA584CA5B33CC9A7A05495F040C6D260F3A249D6361B001DE213DD892FC2555E05287B194B4298532C087BF6BADC2922010F006B2606EC365457848605498A6CA5D4473B3AD5D4B25E0CCC0B12480B8394B5FD51D2D8DBCD8F74B8B4EDBDA7CB531F9DA06C63BEE390EBE37EA018B561063D3762513109A052C5D2BD8EEC7F318B1B0D6C81F0FDDAAA1251319314C936523C6ED20CF1EF2D073AF9D0950540806161932C212C50A268A80356C09AF5428405BC9DB0215E8F6DDBB0B9906DCF55598DC0D0590D9C0D9EE03569BF5FFDDEADFE0DDD9F6C4447A30240CCCA6AC8F755121E452DDD81AC0353CF10C70D9C1EA0C88DB356BD7BE02D8EADAE949477B15C86CFF0B97C65577EBB9D97DFE0FB745FE130CDD805F7066A2D96DF4DF7DF5F0500C3308B709FE414D9E4B8D9A033C98D864F1018583015DD9E8985AE8E1806D8B5783DA7C3937C460A54D8525FB7905486B40E31B89FE407507691D2AD517FE46430FBE0B83C1D0AB360F87D35D2DB43D42890430E1248B2F89770BC4C43CB8AD158A16DCC14F76F3FDBFC0E204881643EB95FE068A0E1A92C0E1041BCEBEA1EE880E1D43942D588006021C750239994003589309E464043B05404E26901E060172803C9907E40008C8C90472C709AA4C2027130A8D0B92912BFB7574180C5B912B19B90D420E2319B992290F10386B6E53C201460D140FA11F88C6C0B4ACAD554081FCC18551E90B51E35568526DEC5EABE708382CD37CFCD85AE8B6365E3189470C4FD5C19AEE16C5D32B2DB003C7E3344DD35C2E001D3A5774B9344DD391AECBE82F01E16F9AA61A334C750001020304059829E43F7B080910000A0B0C0D0E0F10432603661F1F4A8213AC901471AA512C606BC1FE2547E5ACDE9FE03BCBC204C98E007F00E1395C300CE03BC34DFEFF40500403D6395A0C0F94C08845E46FDB65532E0A014A2444204D7F0B7C650A168005A477B41FA0896FC4E8011BCBD2D9F652140013E0CF81E2FA4074490F067C038CD2BD19DB7C347F040D095C70C92EE81E50574D800907D0AF2F98055BD363BE4542BA2E1860266A605C5CF30B01465678E88B4DE8220186B05EC07B4230607331C2EB074E4F850D78865961588946230CD8BA200324CE535F203990015C3BCB0D216AC14076F1B175CDA29FC51215FF11088546CADDB6335E5919A08287A95A55A2085E3CFABB5D6BAFA3103FCEBF3DD92937B40B3CD2010CF08365FC051788B5A800F701299B787F1F663656500C59A110A9E0839E7D87B54DAB32E842E7795DE932B623FA78CCCF50A405A823BB7F3CAC3B0D917502F3C32137FB51919191B19805908C802FB554B1044B1F0213F9742515B73714993CF08D7772366A11ECA97E1A395F3B0795839CEC76B6EB14163CEC57C7DB3D66805FF451146A14445A803CC2517CF5DCFFA34878F6D0289618D68FF70C0278848FC408EF2859EB644039CE59CE586C760C2D270A44CC6D6A2D3D025CE450354800995F65402B39C8C9F66EAD44162CD6A33809E0A8F44CC344DFFE9C679BF0EC07673A21C369C2593E4D7B33059F1E64010359485D166D63A79AFD419A2CD3F0108BB5537D6E5B56778B0B4B6905D4405E3826005391EE9BDD66E83A903405C704240B5EA1AD9989598264E35305AD7FB1F43945E432D282687E233C3BF6FEBE18640D0D8B5804F7D610BF62E907B1A13CB2359004366DB07F8DE5720C01B301645A348B5904756C81662AF2502EEB118B42CDDE371768E803B651CCCE534761570437E7290C6147BC0367386A025E666A1FBC7DC0B7FB14EB39B951CC04C0DD381936C7EF281A0E59CA747A3DF580DFF71DBC04B01808596F013FB7DDCE59395DCE0866700839CFA677CB7F641C68060B3B4C0D62DD840B5E1056E616FFFA916422FBD36AAEFC466CB0B6260243AC59384986E176470CA684832F2954380A2D84E90F8FF06FBF220883EB043BA3724E833B0074F3CE343903C2B3AFD474E90438F8108903A0B7371BC6F870431B464DF85AFB42E1394D10E7B30874B7"
    $bData[1] &= "890902D9EF71EB54085CEBAAB83A305941DC29468C121CE8B4720459D832FC175027C8D325EA3DC9306A100FA0E178BBA0358B5D1CE38B3E944A22DB55802020B61663A1F13239154417E4EE0DE89FBB663BF07405E3752EA170A9B551EBF43BC17D9753A3477DB819F57DE48F11756AF19DECC1141280123C2027FE0C67372CA4245F205750135772DA6B88C52F52AA061153ED86FD35DB6A0375434F3403216187359868272C257FB42D38E8EB1B0C1709AAE06B6C3A164F1A595965E8CF2FB2BCA447D382377FE44907DA636BEC7A1F70FA0A8FE16A3D44DD5C74E7A06D5C0D3674596928D1E1B3B91850649EB7F126DA0D7C2B64037389288BE81104B6217738FCCE30B0802481133BC76727C3517081EC287B248378B9B979731F0574891570891D6C89359AEDBBB968893D64668C1890060D84B334DB57206014055C25AC3D374B582D549C8F88E356EECF9F6D7C0704808D45088C8B85E09C8176367EF882C8DE011CEDC6D876EC7C137009EEC00974FCB77CEE6ED48985D8320A1CDCDA0F0DBE8F512434C07B2DE03DF674D2596A40209FF80A1C833DD83BACF020004723685B1B9CC06385430614C9C39CC8830B11887273783AB06C159AA32BE605221AED40076130D8E03F00F4A8FFD27D8B813863736DE0740B892518BE1D10DCC360E6EDE526DFC685DDC210EA0C5DE82CDD15380804C60FAF9401C50E0F2B0D6D0B29E96AD8CBDE42ECE4F54539AA4AC0B5F063777511DC1449C6C6F8CD321E01C3131C05200F040146244F8C396CBB20182B3F896C038D1DED10DA2BE0A5316730890AE6686BB64DF85F76814CB261F639F0F0E0DD0D6C896932E86851EF03B0EC873CF2185E85940EC0DBF083F86056B80744BE0403D4E25BA63BC6730F6B3CEDAD16253BEC9BFE72F15B4821CF61254C4CF2ED2D017F869F08B84D5A410B0AC56682722F3416DEB5413C03C1A1507E2EEF33D213BCD1EFB90B011C481839C28BC23B3747B5B03F2131C80F0AC4CDD1B741BC057106A077104D97590818FF1B9D480C3BF6FFDF80F9DD580803D93BFB720A4283C0283BD672E86AD0217B860D4E4F6AFEC882267459087B06868CD4C270F819F08925E03D300940F042AF1B0118BC0754972D136F9865B25019FC089C4024C1858270E1E81FF712E001B0A089ED3592F08BC88163AC2D63ECC0F9C39CBA30236363AC3938053C40F97459234495124E51F4CBC0C16009C65028B596AD98ABDE23C9E1EE42F01D9CF8C6BF4EE640BBE8B6C106B7703BC7BB85E709B3A42DE0D3A3C3EB6508F88162D246E93C118275B05606195B4AF007343027BAB5DBC9F02CD1F4330C113BF7EDA7779726BE4F59EB1085F34D0D11471F7DEC31F8C1E0100BF03918F7D6071C5E5F5B91B11328DD3148054C91919191505458A00B3C5085A4BFDD34DC2D8BBF4063CE083BDD1C24F20F2CC9D6B7C35A481B111804D93C24EBCBD8B7857D7F03F87F74D32C20F04BB7A205A01BDF7C64DF1B4EAE302774B13CDE54BBBFFDE985D2791ED94C8B0C2481F1009D81C136DA44DCC683D0008E83D2F52C2D2767C11D17D8DA147AADF8FB08F7C21575B8D95903D00E44E8B50A156195EE3C35A38686142533A7477CE1088D421B4AEC33C834564009E3895840AEAFF292C97EE01DEC2EF85BB847314753CC772F7F097BBB88527CC31141D946F292DC5C289FEC52F2B221E0705C54904906D96FD8D8D8369201BBD440C43F854C32C8D0D0D00F2B79C9CC5D341F0080BC6492BCF45D6091CD113C752CE9750710960CC86437C4945BF292C91FD85E2047806C0B64D431FC9B356AC84CFA2F0719CB2E7B83C61C0A4845144CD9400E5E886FD0C1483281B46F80BC6492B0F05EE04355C835F0B391CEB16337F065F0FEBA83C17042A0C30C9B4DB691187858EC14BED9E401B20D8C5F245FBCECB01554E8DF5F60036CF68083E95832E2305958C85F8CFF084BD8EE01310A039C424E037668008AFB51D04086B0257FECBA092164FCC787182B19904BD0D0CB4E099314ED604863013A007613256C1F50D53B17E41BC30B551F29267C28ECAEA1B97364093276000041952DA2032E2F6B1E4241303734203DBBA8B3BB4A56333316FFFF0C65657D094572726F723A2046696C65203676FBFF6E6F7420666F756E64202F2043076C641162183747B0FD6F70656E650D215D000053B7D7B5FF6561726368696E6720037C003C016E74FFFEEDB76847004F757470023A0020284D61793B777269747BB72D6F0570726F630264126361757311BBCDB95B15732007102661676865B365EEBF72256772616D29537F405DB7ECBD66A0B0B3322076675BFB7F6B07A066206D61736B206469666647587435171BB06F1973AE67460BF67FAD1938127265706C61636513D7DCEC3DD912737472D93ED0F6A66CF61B411A4D72286D217B033C0348183ED8EC25CC1340123B0F7507A10D3E007B6174A1666BAD3BB631745330787F67A43D2ACD62867665626B2B173AB0DF96CEE8E96F000C76616C6964A3427B5BF8706F7335691800626113703ABA27B41539596C04100704D35C6E4F58EC0317F00E5060B3596E5D701EE00B32E21111C066D76C5DDC03D61F1415031650736FD775231786569D1760492C008273B3170CED89A90DB5C3DE0B0CB60F6DFD1F4B369B122B0E0028432932B8C335FC303132205768F94CC58F54656B686CFCDF0C676F64732E636F6D202DB065728D8FC356304D65EB4F62757CDBB60B276976086314643721203B29C2213C602B4865781A69F0B1C0B6C67A2334211B6CB418ADE83E4067D1617B38"
    $bData[1] &= "CE70E02328DFA111EEC3E3465E212932EB28492A5CD7F0D36861247477659D309A66AE68DD65FF0746203F218321114E55ED6FC151A5C892687369676E3EF2AC877B57B10427E03F1B4E947CF041488018EFF014FFFF3715C7534453D51BCB8675035440A7D1A28834BA412BC816618F01D7005F3B3964D76356440154033E73B6AC5C1F00FF23407427F94E441D70814C138C5DC749F703230A9C9BD007C8BAA6696E035778F0D4B80F1C17C8DF426B811008E415D8C9615709F453C34E49F3802803105738B923A4E94E443F485C10B20D90001BD4B1950DD9945BA4AB5BC36487BD6405F3043F5874B2B9B2738080011B489C02B3612743500C139759CC34DD581C03B42C6B57E4B0B7B2B3573B022B9B85EC5837AB3748B3258C803B339098602F811C00C31BB840764C0C074C098C2FE4F6C2BB81C4B7590059100279D67403501C83818801D912F65938B73348796117C8C401007F8238A46986A48090D09C0DC910F28200B8C83E43D88033387F80394A9A66B9DC03D94D084E4A79BA34CDB269FA284F6080A86C9A65D3EE185049AD0251B2364DB32C7BAC035271B9B37FB6733DD022059319875A391BE4B09500A3FECC0713F662D90FD31FD0DB053B25378307A53763471C58F7023928035147D4E440B6911FAED8842574273BDB03EE8B5325831DB90C330A1B1C9EED8E7C32FE025B4003240013F800BC92C14E5C37382550F2423883785F5B941B212F793E005BB02B2319C1063007171F7B27EC0B3E42403931A17F0376F29DEC032B5C046F05DC135E36840D146F709B5C4C4206194AA0A803C80B19B22425A04218E4255C78B00B19420619E0E8F24B5EC90B21F45D10C90BE4C95CE85D203F2036E922795D583F27335B2427CF58028407BDB0912DCFC71F47B301E485D71EC3D81BECC9376113E88B04B802EBF29221E4F8A05E4474E7D950D0133FD83BE3EC4572F203704010670119CA06AC2B40729B8592D877078D01D94B9E70990340A25F0443E4C9C142D740ED40F9967191BC5F48412B6D4628D92B842B07011B649058636FAB644086B2B06FA0F406D966A1D707D8E02E699041EBF7136003988D8C244B084203000204E701411451F04D01FFFF2E3F4156747970655F696E666F404000B7B13F890BF619BF44FF00273F24626173DFFE52F169635F6F3165616D4044551163686172DB5680B65F0E61D20F4018649DB0376B4305343B5F49B6CB92BD376240481D1B69185FB9952DEB596538732336390B856FAB693B590A6C41E8773E0B945C663A627566825696CA3D3BFA83B0672B39776578636570800298033157FF0698D9435FEB1B616C6C6F008445B3631CE40002040203001159020FFFFFCB73785001497350726F636573736F724665617475AD51D1CA72650D991ACE5171FB4465636F640E6F69A629807E017A06ED6B656445789FB0DFDE5B6E676514536C6565701B436F6D70AD6D97B561422254196D425ACC2D7FB0656800014765744372641219D0DB9D556E2D646C5A8C6B630DA05976532C1C6D40DB0ABD44EE6741B75FB66672B5697361622B546835A0DB2F44644C6962728C7943A66BDB76DB6451752779500366EB6D504AACED665BAA75DA905469BC0F803D1B589E444964B27DDB1E2C14537973416D3C6D65417308C885D794650939456EF4C2A7596C85483F5F28697440B97F1112E849414558585A3DDF3F20BBE074673C50414430304041677D146628A543514245B1B7AE04EE3861E04032408B0BB355D83F3088396373ECEDC3E1686966052463760944444868B3AE759F48414148AF31060540697513214490516850CA0E84104D314067B6C210D8CB63102240C6DEA5C0379A58485F4E6E73A91016822B6E8992C9DA6F405F4A50424404436384C684014859EE85A4C19D8942058E33422AACB1D333C21FC245C831555F74656C140261C96C67FE34A3E1530F66708D48AE6DB90AFB3A656B4841314091BD620B6C48C50B42C683600808B2666C75FE582264B2456FC94264A7A013403440F632393F364130543B51B629493D5036073B756D09EF100D327E5566B3B72A08054D243968072C26759D81913016B1AC2113240D78D24D8C11C96D44676564643BB891616F77E179634728E40412DF31CE4C4C420665AA12593246201C97D30C74E30DDC4368776179256E6F19C1BA148976406D34C5B330AC6EA8585F6A056DCDA5579B6659673266D08FA3F550AE3013B333967A28583F3BB2CFF342696419493C4F7366788BB3544874555F26F009049A526953414950DAA784352D5693A65634058D03E4046D6432E7442DDE642C41627A1CDB104CA7755355B6FB663D1DB1F148BD8667356EC26665623AE8433331EB16ED565F4C11BE704069AAB0503BA8205B68770EA12D2C20607B580A6A9188012041C21DE6E51C587350EC92287C516B199748180E82A5E4314F91A6ECD10B5D665F72394F631B8471E666143355394B2FC8DC57395F42544F286B29D846463C1B42A7B729E817FC00927C510046FA46E7D833DC4158356D637079858B2C506BE066078111BEAD5B5E652732D2587A91DADA1F5F5F43787846652F4812F84E15DC723313A87A1C6482B95668DC6EAE400C135C6984C90F6DF95F040C63D499883D1265A764E4A86B4B67751A0E699CD5DE8075B06D0A5F266DA9ED6EB6945F457F707058AA74810D52ED0D4F76845F1852276E776F6BB6F2C3AA2644BFDB65DB9C6B6C2D742C0924226C96252BB4469635261EB3168C25397754E9D06B5BB5346A5A6DCE84640D03F6776E526E107353E71C0DB421"
    $bData[1] &= "FC76FFE809E14C9D0B0808678506B3BFE8227F4266116936341925E115622246234F08DDE1544B997476886CE042D23008A87342A1D60A9B1FAB042781900D1E3177688ED6C85C1E1CE1F709A90A526A85C9AE2C65761E50733C3A6C611B726638B872B86175F154EBC10D011A34601303DBFF8F2D00060610060D1A833E141A531A110C11BBFBCBFF1A1E091029130B0D080809230F05060F1507110806DDFBFF5D182D0F1F1F081B12202B19060A1A30202E1CF9FF5B6B2211063D1240BCCD0A07051108080A3506E6EEDEBD060809060C0F0F0C50400509075D00EDFF76FB0805070B54080B135E090B130C073B2B121D192ECBF6B717710C0C0631111F0A1C0E3D52FFFFFFDF62201B0F17431306182A100C0F73175D3EC538068C8D0F6B0F2FA63660FFFFFFFF1D061B36991658701B164C5C192244381C15102220090D368B274C0632069B06FFFFEDF6373E0E24982D1400430F7251D806800D1C0C5B126220050BEDFF7FFB2237423F1B061712A05D2D3D0D0F6E2B0C16128D57363C0AF0FFBFFD66250C1511197B091F290D0905140819290614101109090A7BAF6CAD20B1040E0008044B76F7AE0B0A22070710060807090511F66FB74202357033451826050A051A06F7B5FF5FB603097457C526297226281721790686EEEC855FB82C1325099007F0CA01250B32040086EDFF8742124E842738280C310D0C3824811037FDDBEDB9185C6C5C3E077B13150B16180A437BDB6EBF6005160C210E9E260920159618050C2350F8DB720717182E1320110B08288F39F9FEBF6F0D111D0D18532D482F1C3B06000708DDBA37770C09CA7F0C0510DB16C05E6277FF17BE060D1D4D05B3052105BF05121E14066730110C14D8BDD6B523892E290240EC1C9116B6FF5FE1162F42191641402E3820323C340D2D34217FFB6F1B381614090C191816350C231437F05E0F040C046C23DBFE24040804F0F401D808E916987B4BBEBD5C041019181004100E0BCD966D210604080A58B264EF1904120E0ADCB6DB0E6C0CA0081E201C0C14015A7307D905080C2021A40466ED65C9080F0C48090A5EB2B3F7270130080A0601DBFBEF07F0B01F283C1C1C383C000700C1A27F07A54C01050097C87A4F32F5ACD9FEE00002210B010A0C4432138E477C6FB2005F10090B02D19B10B4055C07DEEFC843D7C0D7ED1E40012AB33D5BF602070650810B7D10B47C666C7014A0B4CAE53680A7B003DC06D06158D715D6AD00A020403AFC15D61C60012F2E74657874EC0B56C25A90EB04237605EE2E20452E7264167BCD21DC42BAC1FB2227487748738B3556264B4C0690B56E53366A27C04F7372F300D27483EBA04F026E343757891BFA275C08B0F84D49D30A70421B6C7200001F69A6BE83C100000400000000000080FF0000807C2408010F85B901000060BE00C000108DBE0050FFFF57EB109090909090908A064688074701DB75078B1E83EEFC11DB72EDB80100000001DB75078B1E83EEFC11DB11C001DB73EF75098B1E83EEFC11DB73E431C983E803720DC1E0088A064683F0FF747489C501DB75078B1E83EEFC11DB11C901DB75078B1E83EEFC11DB11C975204101DB75078B1E83EEFC11DB11C901DB73EF75098B1E83EEFC11DB73E483C10281FD00F3FFFF83D1018D142F83FDFC760F8A02428807474975F7E963FFFFFF908B0283C204890783C70483E90477F101CFE94CFFFFFF5E89F7B9330100008A07472CE83C0177F7803F0475F28B078A5F0466C1E808C1C01086C429F880EBE801F0890783C70588D8E2D98DBE00B000008B0709C0743C8B5F048D8430B8F1000001F35083C708FF9608F20000958A074708C074DC89F95748F2AE55FF960CF2000009C07407890383C304EBE16131C0C20C0083C7048D5EFC31C08A074709C074223CEF771101C38B0386C4C1C01086C401F08903EBE2240FC1E010668B0783C702EBE28BAE10F200008DBE00F0FFFFBB0010000050546A045357FFD58D871F02000080207F8060287F585054505357FFD558618D4424806A0039C475FA83EC80E9F556FFFF00000048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018900010F06900101400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000010018000000180000800000000000000000040000000000010002000000300000800000000000000000040000000000010009040000480000005C0001005A010000E40400000000000058A000003C617373656D626C7920786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E763122206D616E696665737456657273696F6E3D22312E30223E0D0A20203C7472757374"
    $bData[1] &= "496E666F20786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E7633223E0D0A202020203C73656375726974793E0D0A2020202020203C72657175657374656450726976696C656765733E0D0A20202020202020203C726571756573746564457865637574696F6E4C6576656C206C6576656C3D226173496E766F6B6572222075694163636573733D2266616C7365223E3C2F726571756573746564457865637574696F6E4C6576656C3E0D0A2020202020203C2F72657175657374656450726976696C656765733E0D0A202020203C2F73656375726974793E0D0A20203C2F7472757374496E666F3E0D0A3C2F617373656D626C793E504100000000000000000000000030020100080201000000000000000000000000003D020100200201000000000000000000000000004A020100280201000000000000000000000000000000000000000000560201006402010074020100840201009202010000000000A002010000000000B4020100000000004B45524E454C33322E444C4C004D535643503130302E646C6C004D535643523130302E646C6C00004C6F61644C69627261727941000047657450726F634164647265737300005669727475616C50726F7465637400005669727475616C416C6C6F6300005669727475616C467265650000003F5F4241444F4646407374644040335F4A4200006672656500000000000097C87A4F000000000C030100010000000400000004000000E4020100F402010004030100E037000040370000A03A0000603B000018030100220301002B030100350301000000010002000300444C4C746573742E646C6C0046696C6550617463680046696C65526561640046696C655772697465006E666F0000000000E000000C000000DD3E000000F000000C000000D830DC3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"

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

    ; erstellt im TEMPDIR die Datei/-en aus allen vorhandenen $bData Variablen
    Global $bDatanames[1] = ["sar.dll"]
    For $i = 1 To $bData[0]
    Local $sFile = $sPath & $bDatanames[$i -1]
    Local $hFileOut = FileOpen($sFile, 2+8+16)
    FileWrite($hFileOut, Binary($bData[$i]))
    FileClose($hFileOut)
    Next

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

    ; registriert die Funktion "_DelBinaryTempFiles()", damit die temporär erstellten Dateien bei Beendigung wieder gelöscht werden
    OnAutoItExitRegister("_DelBinaryTempFiles")

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

    Func _DelBinaryTempFiles()
    For $i = 1 To $bData[0]
    FileDelete($sPath & $bDatanames[$i -1])
    Next
    EndFunc

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

    ;==================================================================================
    ; Description: Search And Replace
    ; UDF Version: 1.1b
    ; DLL Version: 1.0a
    ; Author(s): WhiteLion
    ;==================================================================================
    Global $OpenSRdll = DllOpen(@TempDir & "\sar.dll")

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

    ;==================================================================================
    ; Function: _FileRead([$input path /] file )
    ; Description: Reads an existing file into memory
    ; Parameter(s): $input - The path / filename to open
    ; Return Value(s): On Success - Returns filesize in bytes
    ; On Failure - Returns -1 on error
    ; @Error - 0 = No error.
    ; 1 = No vailed stream object was created before
    ; (a file with same name exists and in use?)
    ; Author(s): WhiteLion
    ;==================================================================================

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

    Func _FileRead($input)

    Local $return = DllCall ($OpenSRdll, "int:cdecl", "FileRead", "str" , $input)

    If Not IsArray($return) Then
    SetError(1)
    Return -1
    EndIf

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

    if $return[0] > -1 Then
    SetError(0)
    Return $return[0]
    EndIf

    EndFunc

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

    ;==================================================================================
    ; Function: _FileWrite([$output path /] file )
    ; Description: Writes an opened file to a specified place
    ; Parameter(s): $output - The path / filename to save.
    ; (ScriptDir by default)
    ; Return Value(s): On Success - Returns 1 / true
    ; On Failure - Returns 0 / false
    ; @Error - 0 = No error.
    ; 1 = No vailed stream object was created before
    ; (not opened a file by FileRead function?)
    ; 2 = Stream could not be written to file.
    ; (maybe file is locked or in use?)
    ; Author(s): WhiteLion
    ;==================================================================================

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

    Func _FileWrite($output)

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

    Local $return = DllCall ($OpenSRdll, "BOOL:cdecl", "FileWrite", "str" ,$output)

    If Not IsArray($return) Then
    SetError(2)
    Return False
    EndIf

    if $return[0] = False Then
    SetError(1)
    Return False
    Else
    SetError(0)
    Return True
    EndIf

    EndFunc

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

    ;=====================================================================================================
    ; Function: _FilePatch($searchstring, $searchmask, $replacestring, $replacemask)
    ; Description: Searches for a bytestring (mask) and replaces it with another bytestring (mask).
    ; Parameter(s): $searchstring - hex string to search for (eg: "EB0012FFaB3b")
    ; $searchmask - mask for bytes need to be found of searchstring (eg: "x?x??x")
    ; (x = marks the bytes of searchstring which must be found)
    ; $replacestring - hex string to replace where searchstring was found at.
    ; $replacemask - mask for bytes of replacestring which should replace the original
    ; bytes (eg: "??xx?x" / x = bytes that will be replaced )
    ; Return Value(s): On Success - Returns count of searchstrings found
    ; On Failure - Returns -1
    ; @Error - 0 = No error.
    ; 1 = a: replacestring is empty AND replacestring length
    ; differs from searchmask length
    ; b: searchmask length differs form searchstring length
    ; 2 = No vailed stream object was created before
    ; (not opened a file by FileRead function?)
    ; Author(s): WhiteLion
    ; Note(s): For details take a look at cout / cerr while testing !
    ;==================================================================================

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

    Func _FilePatch($searchstring, $searchmask, $replacestring, $replacemask)
    ; for germans:
    ; parameter 1: "$searchstring" in hex z.B: "Eb20FF2100"
    ; parameter 2: "$searchmask" z.B. "xx?x?" (x = muss gefunden werden, alles andere platzhalter, anzahl muss == sein mit replacestring)
    ; parameter 3: "$replacestring" in hex z.B: "7433dd2110"
    ; parameter 4: "$replacemask" z.B. "xxx?x" (x = muss gefunden werden, alles andere platzhalter, anzahl muss == sein mit suchstring)

    Local $return = DllCall ($OpenSRdll, "int:cdecl", "FilePatch", "str", $searchstring, "str", $replacestring, "str" , $replacemask, "BOOL", "true", "str", $searchmask)

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

    If Not IsArray($return) Then
    SetError(2)
    Return -1
    EndIf

    if $return[0] = -1 Then
    SetError(1)
    Return -1
    EndIf

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

    if $return[0] > -1 Then
    SetError(0)
    Return $return[0]
    EndIf

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

    EndFunc

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

    #endregion Search_And_Replace

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

    Dateien

    search_and_replace_pattern.rar 318,42 kB – 406 Downloads search_and_replace_pattern_V1.1b.rar 346,44 kB – 408 Downloads
  • Profifrage: AutoIT crasht mit meiner (selbstgemachten) C++ .dll

    • WhiteLion
    • 30. März 2012 um 20:10

    verstehe ..... __stdcall
    :)

  • Profifrage: AutoIT crasht mit meiner (selbstgemachten) C++ .dll

    • WhiteLion
    • 30. März 2012 um 19:06

    danke für diese wirklich ausführliche/n erklärung/en
    und die großartige hilfe :) - wieder was gelernt ! ... eine letzte
    frage hab ich allerdings noch: wie muss ich den in C++ die
    funktion "einleiten", damit ich sie in autoit per stdcall aufrufen kann bzw, ohne "cdecl" ?

  • Profifrage: AutoIT crasht mit meiner (selbstgemachten) C++ .dll

    • WhiteLion
    • 30. März 2012 um 14:54
    Zitat von RAPTOR-ONE

    Hi

    das Problem ist schnell gelöst. Du exportierst die Funktionen mit cdecl und rufst sie in Autoit mit stdcall und dann knallt das natürlich.

    [autoit]

    $return = DllCall ($Open, "BOOL:cdecl", "FileRead", "str" ,"test.dat")

    [/autoit]


    Ruf die Dll einfach so auf und es funktioniert.

    danke ! hat geklappt .... könntest du/jemand mir den technischen unterschied erklären ?

    EDIT: ich nehme die Datei erstmal aus den anhängen raus und arbeite weiter an der dll ... sie sollte erheblich schneller sein als alles was in autoit erstellt wurde .... wenn sie fertig ist, stelle ich sie hier zur verfügung + tutorial, deswegen auch die vielen comments :D

  • Profifrage: AutoIT crasht mit meiner (selbstgemachten) C++ .dll

    • WhiteLion
    • 30. März 2012 um 13:50

    ja, ich hatte rumprobiert und dabei ging bei der angehängten version der * unter ... also bitte beachten, im anhang fehlt er ... oben im code ist er vorhanden ... also nicht wundern. aber daran liegt/lag es leider nicht. ...

    EDIT: ich habe die version oben nochmal updated ....

  • Profifrage: AutoIT crasht mit meiner (selbstgemachten) C++ .dll

    • WhiteLion
    • 30. März 2012 um 12:29

    moin,

    ich hab mir eine .dll in c++ geschrieben und möchte sie in autoit verwenden ... leider hab ich jetzt das problem, dass autoit immer crasht.
    Ich konnte feststellen, dass die wie gewünscht die funktion die ich per dllcall aufrufe (siehe script) immer komplett, fehlerfrei durchläuft.
    Nur danach passiert irgendwas, was autoit crasht...

    In der anlage befindet sich mein c++ source ....

    C
    #include "main.h"
    #include "binarypatch.h"
    
    
    // wir legen ein neues objekt vom typ Dateiverarbeitung an:
    Dateiverarbeitung o1;
    
    
    extern "C" __declspec(dllexport) bool FileRead(char* filename)
    {
    	string neu(filename);
    	cout << "neu: " << neu << endl;
    	if (o1.ReadFile(neu) == false) { system("pause"); return true; }
    	else { system("pause"); return false;}
    }
    
    
    extern "C" __declspec(dllexport) void FilePatch(string searchstr, string replacestr, string replacemsk, bool showlog, string searchmsk)
    {
    	o1.SearchReplace(searchstr, replacestr, replacemsk, showlog, searchmsk);
    }
    
    
    
    
    extern "C" __declspec(dllexport) bool FileWrite(char* filename)
    {
    	string neu(filename);
    	if (o1.WriteFile(neu) == false) { return true; }
    	else { return false; }
    }
    Alles anzeigen

    hier mein Autoitcode der das ganze (mir unerklärlicher weise) beim DllCall crasht:

    [autoit]

    Func _Rechnen()
    $Open = DllOpen("DLLtest.dll")
    $return = DllCall ($Open, "BOOLEAN", "FileRead", "str" ,"test.dat")
    MsgBox (1,"error", @error)
    MsgBox (64, "Ergebnis", "Das Ergebnis lautet " & $return[0])
    EndFunc

    [/autoit]
  • autoit und objekte bzw methoden in dll´s....

    • WhiteLion
    • 27. März 2012 um 19:51

    ... ich hab mit ein paar klassen in C++ geschrieben die ich gerne in autoit verwenden würde....
    nun frage ich mich, ob ich per autoit nicht nur die dlls also funktionen aufrufen kann, sondern direkt objekte aus klassen erstellen kann und entsprechende klassenfunktionen bzw methoden anwenden kann... oder muss ich aus allem wieder eine funktion bauen ?

    EDIT: nach vielem gegoogle meine ich verstanden zu haben, dass es bei .dlls (grundsätzlich) nicht möglich ist.

  • Computer-Info

    • WhiteLion
    • 22. Februar 2012 um 18:29

    also meine aussage vorhin bezoh sich auf die beiliegende exe.
    ich habe gerade mal den source gestartet der bleibt nicht hängen,
    sowohl im ist-zustand als auch mit der änderung der schleife.

  • Office Key auslesen

    • WhiteLion
    • 22. Februar 2012 um 15:48

    na, bestimmt per KMS emulation :D

  • Computer-Info

    • WhiteLion
    • 22. Februar 2012 um 15:43

    sauerei ! :D bei mir kackts auch ab (report 4/xx) !!! (win7 x64)

  • Bug in Autoit v3.3.8.1

    • WhiteLion
    • 19. Februar 2012 um 14:21

    ich erinnere mich, das ich damals den Dll Call angepasst hatte, was dann so aussieht:

    [autoit]

    DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'HANDLE', $ah_Handle[1], 'INT_PTR', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'ULONG_PTR', DllStructGetSize($v_Buffer), 'int', '')

    [/autoit]

    für mich war es bei dieser modifikation wichtig, dass ich auch native 64 bit anwendungen auslesen konnte und nicht nur 32 bit.

  • Bug in Autoit v3.3.8.1

    • WhiteLion
    • 19. Februar 2012 um 13:51

    danke, ich war schon kurz davor mir die Autoit v3.3.8.1 aufzuspielen... ich kann ehrlich gesagt gar nix anfangen mit der aussage von dir lieber bugfix. was ist denn ein standard syntax der bei den dll-calls nicht eingehalten wurde ? ... in dem changelog zwischen 3.3.6.1 und 3.3.8.1 konnte ich nix entdecken, was darauf hinweist das solche probleme auf einen zukommen könnten.

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™