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

Beiträge von UEZ

  • Auswertung vom Schtasks.exe Output

    • UEZ
    • 12. April 2010 um 20:15

    Hi,

    ich möchte den Output von schtasks /query /s localhost /fo csv /v filtern, indem ich nur die Schedule Tasks filtere, die nur aktiv sind!

    Spoiler anzeigen
    [autoit]


    Local $server = "localhost"
    Local $run = Run(@ComSpec & " /c schtasks.exe /s " & $server & " /query /fo csv /v", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $c, $l, $string, $tmp, $chk, $output
    While 1
    $l &= StdoutRead($run)
    If @error Then ExitLoop
    WEnd
    ConsoleWrite($l & @CRLF)

    [/autoit]

    Das Ganze soll natürlich sprach- und OS unabhängig sein, d.h. das Skript soll genauso auf Deutschen wie auch z.B. französischen, Win2003, Win2008, etc. System laufen!

    Ich dachte da an RegExp, aber weiß nocht nicht, wie...

    Hat jemand eine Idee?

    Gruß,
    UEZ

    PS: eine Möglichkeit siehe Post #6 unten.

  • "Binärbild" mit GDI laden!

    • UEZ
    • 9. April 2010 um 22:34

    Hier ein Beispiel:

    Spoiler anzeigen
    [autoit]


    ;coded by UEZ 2010
    #include <GDIPlus.au3>
    #include <Memory.au3>
    #Include <WindowsConstants.au3>

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

    Opt("MustDeclareVars", 1)
    Opt("GUIOnEventMode", 1)

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

    #region GDI+ ini
    _GDIPlus_Startup()

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

    Local $sData
    $sData &= "0x89504E470D0A1A0A0000000D49484452000000BD000000680806000000A424F1AC0000002574455874417574686F7200416C616E20486F726E6520287777772E616C616E686F726E652E636F6D2940C00F520000001774455874436F707972696768740057697A6574202F204E65786F6E3EF7BB7A0000200049444154789CED7DAF7E233D93EE33BB4B022BF0850AFCA0062EECC0033B97E0C0039D4B882F21A687C574599A7E2CA2CB223A6C8A86E500A9A4925ADD6E274EE2CCA4E697B1AD56EBEFA35255A924FDC03761D55307C010601800189E816137B0FFE4A27DD33BD08FCF2EC047D2EDDA1000308300BE03A3E33A1203559867C6D6791EE2F7D12BDFF4B5E88F077D043A01B06074007A0668846EA2F081329899C18CF8C73B666C3CC37D5805BEE9E8F447837EBDA20E400FD08AAA6753EC9AA6E24416EF1CC3795C00F8167DBE28FDD76717E098B45E1101B805D0830BFC964C1D19DC299C190081EBD1919EE5970DE1C933CE313D76BEE984E9CB827EBD220B6005A0634614D651CA278C24B624628029835EA207059653988A0E66C07BD6D8BFC237E0BF2C7D55F1860CE1B731004060661813657205E811E08124A610283D8E161B888E2A03C17B868B420CC5E49CC78FBE2303E02E06EF76036FDEA18EDFF44EF455404F000C80C7C9089481690C1578272A79B78F4036949FB1FA2F003EC8EF08E95E7BC6B6EFA8A300762323230C13F600FDDC0DFCCDFDBF007D05D05B2205F609588964038AC0A7007C6620CC0801C43EBE4F04D83838F4A0E060CF0433E03CC318720458E81924225E449F387B38665C3AFF2DF69C3A9D3AE83B223C00186BA23571FE48E00712F03DE7DF0278C46735F00BDD801A612208A93C7DC8C03B878B37D7FA9BDE95FEF3B30B304316C0FF3D3BC3BF96021E009EE5EF19C019E07F85CF7FFE01FE6508D69EE19F7FCE52C43300FC1CDE3C3B3B8B8930F8F919CF78C6F3F333CE9E43E414A6326366E0EC0C8C6780813380F819C3311BE29B8E4BA7CAE909C08A08B78BDF9831BC5B4389B3278575B4EC9AF58122CEC4200B524D5CB80AA10E8C1D80ADFF5EB53D693A5593655841C578857492D1B7569504F0B6FD8E801608E20D33C09EA3A84309F8222E81831F822F97A50606AE99BF17ABBE0A9D2AA7CFB23C5080583E0E61A57D47D91E1F81CB3ECBF3200C04B035D4FB68FE0C8380731C148A3013B021C2600C4C8C71A7B2F4CCFC7370DF1CFF14E914414F00D604AC81C05C01380003C2770152873038BA25897696D202535242C3EAEA45D719EB3DDF1345851462FD09C01785379A30777149A04354974539D6146610BEDA0DD8BDA12DBEE91DE814C51B06B08BD814907B63F0D48C8931D71FB9180018064EA6CB18E966D51BC7CC4F50DC9C280C0E0F8E767C6DE10188A80FF1D43B136560500FF037E84F8C4E91D30341147F9CF6FE6A07B7E4FD1447E9AED6E0A731F428ABB85A7115595F522C068ACE436681A9B251E2F697BBE1DB9A734A748AA02743F8DD329CB4003EC2DB8C158719E83BBA3644779200331703222593E4F968F9C11E934CE5F7937C7908BBDD80ABB957BFE963E914C51B6A816BCA7A985E927801DC57502E34310146706578D080175F7941AB2C52854F06E236AA24E6E8CC907CD4722155A4B820D6B01D7DD367D229823EBA919544D50FB5383A8A47847B1D47596ECE83DB40885B031EC06874E5E754E43992E3D596AAB0C9303DAD04A46FFA6C3A45D0CF31740015779D8C84E4429C64FA80CBAD675EB51C3093F31947D3244B4A71A755B4E5473367B006F909BD42F9EAF41D99EFFDB6A743A70DFAC2933152049D67DC987D2BB611F8052367DE32D34A14D42CB6846C2BBF79D65F98192629B0A4BD3519C040841DC2FA96F3BE9E3EBEE954E8D414D9E47E401AF091D71200CFB800D059833BE502303D3D5012636E006C00C01A3C00E88C72BE978D22F19D2DC21AD6AD35D18C1933D333842FB93C13E0E3E62B09761446539814FCB7CDFE14E8D4387D122A92EC1D107403C696837C6C8DC1DD48A4A069E0C7B8C96CE8191B023A260621DAE539BD7F09A023E0D6DA2CC71322F051D9EE731E4480155D36BED8EB7210E1E2DB5DE1F3E9D4400F209E34C019EC087E60BF0134915DDBE175B489CD539E11CC44DECB4E2AEC006C1878EC4CF6C5F729514E6129039561AD68CB27973FFB387624C818837554BE4BABA79ADD06872BE495E96F7A239D9A7803446E8E0042188397A60C5349CC1C06070300517061D0C43C3AC1E00E618F2D0C25503D7696549AACDF2F3E0B906A64D78382A61F1555AA0395BD5F5BA100C079FCC4F70078359D22E881C0D9C76E0742158A92A930D8E71D949814A90346ABA216C01D1176043863E8C11A24DF1C013C57832B7D69F91E54656C895B541BFA1728B9D9B45AD4F5B251A777216B4381DD1FE240778AA03714014F2D16A969DABC5E0C0C3F0110139CD58C3174670C9288C45CEE8C2ABECE747BFD48C416AD30EF2756E508E255329356C0075ECFF1571DBD1416D9A565DB13573FDD0E7C8AF83A4999BEE48535E02706C01E25B6C5E9E5B53B8EB64D863257F20443A7F2990E9755B500766AEA1393A4741206E094EB33A98A5403ABC301A0EF2C5E10CBA607378147F52C8B2E0B1E2156B30BF406FBF86CD5D18B8EB8DD9DC6203845D08FA9EA11CFB83684BB59116319031B00307B10DBB1DC2EC9348B44199019DC34725368147F94B0D21CE07D569E455F2816BC4A85DDC6BF59E01BC20B03185CDC24EFB9283F37DA8AAB5F944EC1128B56E98B44920895EFEB01BBEAE9C5393EFFECCDF32731F22AB244784CE0D11C30D8DA"
    $sData &= "BD35B8DF2B6E28FB3B33AE016C5BD18CC13D337A6B72FC7D498BCB7191DD045B97F4C44A542BA813E56D5747CD762ACA15D0B4FF1B029E9A0B7CF12114F0F711D54A4A3D2DEC6132547DF94CF09F22E83B223CD4A63B66FC4430F1DD179CB33127EBB68F0B4893674F5A03F28CDF89EBE9878D8E1C037E2CC6048086955BEF392F62B54594D1BBAF4042DD8F16336704A5BC9AB3D55CFC43E4B58934D27F9F07FC9305BDFC108B4CB2E6D4DC869017B2D473AD0230CFD7D3101E399E0AA2169646E98D7DEB298BBB1226BDCA715B22E753D2961E05D500FE0DF2861A5DDBFA135808F8941749DDAAC1CB5A7AAF4B561DA62509251D61FFC0D613C7E68365FDD3047D74FF8DB6754AE24E83C4CA81000A8F30D573FC2EED3F2FF31A74ECF14002EAAAC784236AC62F16193DB888A8ECF096134F5D7E0EBBBA64F0160B6087D10F847587BB39D0D5ED18CADDE6F68505ABACAB330418A2EC364D59D61F51ADF83718D3472AB9A7087A02D02334ECE3A106359D48DAD0EDF7D793C28A6F76A35769D6222B2388395D1746093327C0D7E52852E231900060BBE3228F57CEF71B60BC28A7B269A65BCF527A0BA4F3D89030100AE221011CABBAB6867A9D1045CEB0E4049442048DCAFA4799384F11F40082C56171E4862C9F00C4C9496DD6E7C5505068C56DB8A5FCE93CFA9E40505B068B13D26ADBC7C40F0A5CBEB0D6CC157201D56B1B69B0B658BCFA6A4D0039A2BB43F4B14BB18C0996CDAEA3272054311E1194D22253CE744129AF66BB96924E481EAC1F01FC533559D2248757D37F7A2EB2BD0A93C6AFA3CED08E819E627A2D6B873E2393749205DEB9E8EC869E1DBF1376C3CCE0685002AF9E29B8FAC9753E8DC41BCA79746D10C640CC30AB9E1EC72F855949004E207804931333834C58D6762E64480438CF579AFDEB2FF1BB056000FE10D78A53057D9384533063181DFDA1800F44F106E9F712063AD432ADA1A0E0190D6A9D65E17D168FF65687C4CE913587F3F411A76C71CDEA4B73F6500680B837E107A2CFD3AAA787F01E8D5905C714A97C6E12F0431B04C6C0181C5F231C6CBB0FCC1FBA71FE5441DFEC270062736FCAAE6F21CF600ADB5A0D11D02BB7E2119354AB8F7AA0389FF7D34E894739EE382C197E265ED4A24B334A43411C2990D5ACA82C5BDC7701F046AFAE72B5080555F798081902F928EA7168486B0C0CF11D434E8C9BA6FAE9CDD6BFAB8873B2323D69993EB3EB4BA34F3E1BBD547C847758A6D8FD7535843503B7AB4E757A238BB08CAF4D12A1C37743B1EBAA6DFB9ED215165A6DB47C5EEB30B3EFA0601C42B5EF8EE93B7AA2A494E605B53CC0EB55E7EC86CDB27792C2820A1A225EB3C0BA3E9163DC6CDE0FF8270B7A004FC89BAA07009B04F8D69CDD0082A685A027067ECF825E4C734A814D33826C328971196DC039A7CEB60FF91622D1210A6D5A51AD064D01CCC4D6A1F34D3BC92ACAC0977294521CC6C097BA65EE1464FE90C2A4223FAA0CF2ACC08CCDCE9FF31253D08174CAA05F03E8A227E4B41542D1A893622021006B70388F8F271B72D54727A92A923E012D815E8E0B49F9CE28A6090F718556291B23B04ED092DE4F1695467AD16D5AD633E6EECDEAFA8E1EEAB4427A540CA6C2490FC5B8009149C21097291434D5B79BAD7B979D66A70C7A2060EC77D1161373FA58EE56969CDAD052FCCE3FBC3A0541A67351628D582BA287E29878B23C020E42108B9C06FD0265B4CE6694BE2233316AD4E01A1038FC9CF2480056AB9E6E490509C0F5DE64C96F707C05009DA5FBB4D641541E7D8E86823C9A45D42306B65B77BE473D3A984E1DF46B00B7A9236B59A122A27CC34822D5E093D37FA47C5B09159C3D8F02A423BD473243455353BA576E0975995A55CC002A8AD1CE074ADCA9E3642E3F00B81E9778441D806EDDD35A7CFAA34BC59680810C06EFC17D47A4569289998DB594F4AED09659F69A426F59278AFF87C582EDEEB8F2FDA95A6F840608CFD0DC593C22E36FEFE0104DE8191C5CE0513394296382D8E00BEB854A272D1E28A7FB452C488B03F14F44875A81ADD3E3BA028D387BF3CE807798F0366DD000C00E8E6581EF8642986300EC81BE0B0D652DFD2E322C184D3EEF1F04B067B9AAA81CE0B1522145D5BE32411C91DB9F2CE8951E75652D3D68852D914CF5261E9DA738524D46C9DFE5EB4ADA8C80AFC15E44A8B82D73E936DC94A7290F36392BE7A8F37545C56CC0293342765C5B4ADE796C11C4A162F9A1EF888C89604F20D76D9C719A819FD632AE8930584B9CDC3708D12B1514C528E2EC9DF1678B37B10DA8B7F424AB7EF961FC14705526350DF6D1CEA55A2ED0E9082AD454ACB98FE42D1DE463273273E14670603D539594BC9D64E4D7A429542CA6E5B17B83E55C3E15130DC0AD572629FBEDD94EBB238486CF66D0B09E0170EA236DB111729E2F00F07B5C537A12A0A7689AEC7B319551C1264303E6BA734489064BE1F44522DB66DB41E17E1CE3E4F4022C6ADF91F8722E24E56D7602FAA0947291E4A8970A997EAC68EB325557FBCCDAEFF5CC97BE6B398ED3E0F1C0DB6F3D4C60073263A84A44AADF32A757FD41E377A7649714CE7C54F7E34F136F08A0AE0BD36313049CBF14626D027BD96CE20FCE0CEC06DE5A8395B502FC6837210550260598702C59F811E34E0C105D402242672722E8D9220190E12716E4454E6E24334992BE6EBF748C2117EF1ECAE15BA40EF24459B7F858CFAEF5D9FD1C95A2B1C1B2E8EA2294450F3842E1357D0AE8FB0E2FC2D1464AA5C8874D13844CD7F9EC78718795C62402FA0EABDD8E77CCDC5B13383888D23E4E8EFFC06517D4CBE5B5F3560A94F24C28C405"
    $sData &= "55A24623B8A8DFD2E474F434E3552252FC2926CA37D366C797EB1E0F69412E8926EA702CCFC9E94E286DBE61126107A30A2BE61088526054830D1FA68F4CD287829EC2EAF493F7F1EA4A309833580B6AB489FE4C808F814CB9810C11BA0EFD30F006E03531606D1C1D11ECC20E4530D11D259D27F9C90150753968C132BB36978EB876431CD9474BC6861A8F1E4702BC64ED3CC26D8D4471B93C30111FC53CA9A7F77CC5C1459999D1594BF79177430FF9C4680ACD5B7E53EC2E02C0064702FD87C9F4119F0F50BA9BFAEEFB8E56A4B7E395B363F96382C352F15F308D0D037E92C1A335F92A9D9685475649F3A0CAD95893152E3F256F8C06E9387D7DE06B3259C6E23607C52B49E98503E6575E5F43ABBEA33B1B77968763CDE335A30478C7575C6D545FAFCC4B9AC1511A18964C968CC0847647F2B57F774E1FB163C2576C3A8BFBB47C4FB9D3B5A021FCB3961B8B7D1A3A931827CBB8917F13C15A7E740E3F3DF831C8FE48DC86D5C8920523F19B179017D6853D15ADA15507D5DF6BE67628E9528D920801DBD6A337D2B01BF8DAACE88EBD8763C039DE228851030263367D679EC6CD966777E97BAF18D09C1A15A31C85DBBF1BE809206BC329031966C80A6BFC4F3D0E14919B009FA22A2B4E0B492A4C74544210A39C63E33D2E88F8491ABC788780CEE64E10B09B6A4DBF259D14CF447A4A61D2C9631324377482A59E9645DEC210AA36E100C0F7381ADC03A0C1319CE34DC82D0CAE551FAC3B0461146ABE23A8337B62E565199708C3E0CF55F1014E55D2BCE32803F85DC41B028CB578CA9547D1C1658795525EA870BEEF35AD90AA08F56A6B9E3AD58CA13E9C6738879F0803F1C1DA282BAAF7C019F0C654DC5D5B2D142AB5DC5F0CBAAA3DEADB4A1AD54FBF97DAE76BD0D7197390E56F96A5761011C21EE60E210FB75E9997A4F4EF9914C58543D644F405D59BAD3FC791803D474707BD28ABF57119E1D918F9C2C50365302BCFDD6C7F579444204E3F0A39BA766C0A2B81380FB30F25995ADF22A8F31BD99215E8B3952203FEB53D4531CF72002F7BAFFC82FAC51B3E9E125B533CF9135CD8EEEB7254332A171128CFA40DBB7D9D1CE1789B4BFEE318890811B036060D596EEEA552501F013E3E08E72E2663639A1FC4AD23FE524995E889A0B5CEE167721BA8DED1366671B22A45294E1F72FC1EBF01F0B1CA254666DA8ED45F331E15DFDFF382377D737B20CE7FE9AB6A9F711B71B582AEEA5626977EDFAECC4B73901D4847033D01B764701B4403150AA94CC9E545F4C9CA5C5E6115EE1735F6ED76CB3B17F79FB297B89AAB4375781BF8444017B6C379493BBD510148567CE7E07CD439784F624DA0CF49B9A5C4F8AEB4DDFA0B112F33D8B3D857CE9665D17213C71A168E7EA846CFF1DAFC288A6CE4F06BA32EC324FDB456D880A4980A25C0A7BA13AC05ACC10A6173F17670EC1C736F0CBAA06866C0121014D8AA71189C565F635CE31C2E8CC113737B8510B17C5545121903AC0C4131AA3458B5495373BB39CA33D7F47300ED0B76A7D3FA98AB3CA9ED900034EAC4393C89A73184E2F3BAEFF42F021D05F96F969148CE9E24752828EA8D16D32BA8A55C3D96DFB5A21969B3DDF180A03BDC8995A55484EB06CB323E33300C7C0E6065E2CC248B65C9D23492E74B39BFD043AAB8DA17088887C74C28B245F92ABDB91947FEAB65E63679E6B7FBDB2C2143E83A4B0F933EDB000AC1BEA848E9AF53AE9F70A3AEC1D2E3A746DA023A06E8D7000C19AC9A62660C1C5CC86BD5D38BF657D72BA126CA359A138C280479003FB73B068095B5B8D5CAA9C46B019F010C03FF64C059A3369F1703518B4562BE44EA03017DBDDC2E9689FC3DCBFD4B282BD7E367B3F8AE14C6243D04D01F55126B913530C66467C19AE169273A178E05B15D472B61320D27CBF4AED6EF32D19B36961CCD7A534B164A2F2100BEEFE9B7C8F18092FD74A514A79538555D75173280CBCD8E1D05AE7D2767D4CC011F88DCDE1575EF4CB86633CD38DEE7AB7CD63DFD96BCA54C5974E122DD9AA6405F5625876112000708E979101C7DABDD6496845567E92ED9E759B50F11BCE34B22B87834BE5DF5E6BEDE42D8AA731041919ECB40790BE8DF24D32B695DCA65005067C301ACDA6C3852C4EA44AA15A3969E56C9B404E071DDD3CD66C71BEFE1017E20F1B62CA2EDED77F63EED191DE2F2BD5BCB26F13AF2C2B0B9DCA7C264ECCF3DD70C7D561F904DB91F43CE7B8028F79F777C03C2967DF2F433EBDE3CE641190708A6EBD07259888CE6D5ABB307833E6274656DBEAD9B52EB972BACE38A545C3E8690A8F51CD495A29F540F4F88B2B7EB9ECC66C7D7DEE312E087249FD7D38F24C9A3471E6155514E0AE011E0A7E4EC28E65493D42CCD0D43B50ED67EDE48ABFDE3638919DE31EF623106107651DA230268B532ED8BF344242C985E29DB730E86320959BC12F4074F1104F4C6E05E9456FD6404F8C6F31AF0C54049BA0E671D66A697AB3EDE6D767C45515449C0D7224E4CD3B9E969BFC5DD3527D26D1F1CC8625967C07EC82EA87D83A72EC7E841499771D6FA284AE22C00B3EACD538D83520752F3B11AE93ECA4083E3CB1C39FD2FCCEAD5E75E1E047A0AB7753FD68027F97F047852CF038D412FEF5011277C696CDB2B33ADBF0AF0D744B8954D247A1055B27CA2752FB7EDE534B56E20D513597E37B0CC0A4E7D263E44C01A841E487B3D17D3B462D7888BB279F2AC0B00B8627E17FF9B595AF7E6A5EEF424AECE544AAF7AC7234586497BE81B68B17843C144F84815E0C3C309611D0AD8DC003C92A811FCE119D548081B3FD2AEA6C8B509400AA482EBF5EB9E569B1D6FC020"
    $sData &= "E7B0B6361FAEC48CE4D454135788E72ABCAEA13530CE4F9B0419B889C9DC565E16FB6956501F479DA18FB1D557244C260DC8AA90BAAD4BE8848A1301BDA57B900C84DC705AC47DED16C2452F4526D7070B890EA751E7682E4F2A3069F29C7F3BC71B22D8F8861591A49812ABCA6A71A539C384A83F373BF604DC13A1E7704AD68667B6CDF55D166B5A9CB6B6A3EB85B492B9AA78C0E814E3A5DCFB10FD6026E086F9DDFC6F268908A6B3C18459D7613408148444DC9D1CCA0DA5EE3537982CE5F4561682429E63B0EB7251AC995C5921937E0114028CA1B5AA1FEF1C3B425C6D259A54E84A7D265FF7280BAF00EE005C327065082FCCB8E63D277AA58DE5559EFAF88A5441548320FEC7FA5D1D4F0A1BEBFDD615DA3A2E0E88FF1114994CBB9E7598AA6C54618B78CDA652B32F110C1F78F4DFE1264BCEA2C878614673BF70463947594173E7427ECF3614EA2D59CFD879CFF0E09E9840266B47222CE7ED7E52A4BC441D819FCEAE5F72706BB39A3233A97A8BD893DC17543104F839A878D743891A4B807F08D1E8CBE7535CEB28EADA6262F50017C63809F68AD974969E0EDD51B508F4C6043703C9483A97083BC40D041486A8897F3D031D45B62FCA5F5ACE2F304B4806780619424F967CF4B5610BAC5B5C7F6C828EF9F80915E3009A126B74B1834F0FE2FECDD828894F712DBF7B545E8F3393F8A80C535488812746CEF1B921FADD628CE977FC8F1156BC99F583063544E9283A1E64B35F0AFA0BC90319D8725BF56D7C56766A5DC0A494A0A1D09510A070B9C5AAB7B4DD39DE30F1BA38A33246D7C09781E51CAE71F8CD164DE88C4E4790B26B6EA4CD6E631E2FBF07020C1846D7A1B58670647AE7E4A7C979301BFE698826AFF764E69FCCB0BD35771439294FB4490A57D38642CD4136FB45A0DF0DF07D9764E55E3FD33B952ADDB3F891A7605978E03C5D356A198357AB8EB6DB81AFE0F9BED8D1D4027EF870FCCA458B7A9A950AC849C589B3AAA237AA5A8685C0E07F5EBFF04AE01FC0DC3F751EA0E8C6AD8D1700E03C6F29DCF185BE3341578C226B0B0EC16E4FF09E375154149B9E30E2E3CAF47D078B00F67467683E49AC25A49545CE524C797A6DE2F6733D4E09F8181C5F0C03EE8CE14EAFB8CAFBCE01CCB8E2D72D5A04C31205F148DC83B3FF0DFBBEA39737F2CD01AA0D0FA1F634F4A6B27C0885DBC0F95CCEBC64063CF3D6106D88C036855798A828AE7A5F13E0B8BAF55047C342FE310B7A4358817127F652CDAD132D583D2094E6CB11875F00FCCE92D97ABEF61E3D33DF1A23C7ECB1007EC7AFDF084D0CA41BF13CE306F112E6BECB27F28E8BD99CDB0A52E6CA2D38DE95A527ABC55D95A3D1E8C7247D8A9D5E93F360638061E01B100666B8AEB8F882F7EA2F6186377745A05AB814E342BC74636F6BCE5F1F6FF022672491C917054B8153FE68B4BDC20345AD7764D1AB0A5E27DCD8E47DBDD9F196E2CAB092B1771CCE77792D59223CC6D5CB6DDFD1C31C16F551D34573345E88BAC635802D111EA1674CF54AA13CCFE43DD9CE1345E50FF2A9DF431671062ECEC0D1FD5E33C2D23E3056DAAB7677CCF07EFF7DC1C00CA727D1CB0C20C6E691192FC56DA8D555F94800AE397D7ADEEE626D8A8C1F77AB9EFC76C7830FF79E76080DFAD65DFF8E199700FCAAA3A7A871CC13177B64B50B0223FC96306D59B801E77BB366549AFDB44CBC39FAD535AF240784D3155B1C3AD0782350AAE294DE93C259CCDA76893E3727DE244FB06281251665519B2B708B9C9CAA568836D35D5F031FE194B41F9C81752C1A80F68E3C8EBD50384505C03BF5AE2E8F1E37A91338DC7F7B05E0BECEA3B6DDD74C8D1ACC6201BD4D0B392E596BE921CE7C40FACC15CAE171279DA174EC4211A1450490C13D2F589799DB189ED099CC45719AC92392A356511EEA33228623109CC3CEC59B28A63AB845F9C0D5F07BD5D3EDFC1BAF262B77A1CA5FB23401C5F728B159225843581BC23D119E8CC1138219F72EFE156565C64E0F89BA1B5B6D41AD87CBE07C2A9C1E04F8C1F1A604FC98E2C50C37CCB82E1D1BE72BACF49CBD7ACC3CA7E7CCE584D2798CD5DC4CC4B0FAC261353D11C13280AEA38E199B6160670CDFC767E9DE9C7D2AB1DAE4BDC6FB1C6414EA3B370A958C19818FDA2DC310AF06870D82E83556AE091B342E809E1DFCA7C4B35F410C78036C9973BD65E294CBEDBCE76B000303BCEA8DB2EC2CAB3C1160094FFB56E1E7383D4B81E4F05197EFC68567FCF01E3FACC54F6B7135E568298B52D1FA434458F73DAD4038F71E97CCE104B2D99309C6748CF3D65F45AD31C150B302A773EBD7083A476BA16C83565FCE54BF9849693EAEA293E1F400E019DE7BBE0CFE4C314C6E8DF07CC9C09601BFEAE9779030B294310DFBB23138074ED21CA7F7920A8702FF880B5416C17AF280609309D71218C5F88B12661D80B3E0DA59438FD6E072B7E373003D1BDC1133C69B5350228D70194F43780FF2B2DA9ACA3C11B1067FA1A2F0BC198E832FDE0046F70A39FD103A29D00380670C045CC3F31D03608F2D88B751470BF7F8D64AAE7C50DD54D52F825C6C316B1F98043D03DC595C20ACC05A1B6EF02E2039DA039BDFAD64FFB298F1B701F0D0F774B5DDF1161E9E0C1E7C3554F540721E17CCADFB3A8E4B875855A630BB208D2D28827E01BDDFB8F87862C6D607605B0AEECF2C97566B6536FD5686940CFC16BA968938930F88603B8B91DF44CBED40675D7B5B4E9A9B4ADA6C777C1393BC2783CE54D60CEFC34561CB927B351180B53558D7FEF3757DF5E06C8976A2FB30CFB6F16FC4D379A9D598158DE2EDA78FDE2E7808259E50DFD25E007EEAE589761071C8"
    $sData &= "FBE985AAA64C4F4189EDEA4CA7FC6C92AE115972E2F273082D1FAC573DAD63F42BF6D8CA6E27EFB1F31E571C36817C843A57187000A4D5E87AC63A02394C5D40DE2065A1584A2727DE28E2E2DB42C0D7CC759C58EA9B492B4E930B5138BCE989A0EE0B2A9E6BC5815358FA4E3431F9B402A01174BEDD25EB6D8F50B78FE6546BA82D7ED61006C73F3A8BB487969007459AD12A0AB70E620070397E1AD3217400EE47DC7E1FB0178EB8B959E6C4286CE64F4672CCB681D6BB8401B706C994883365BD099E9E53D952BADC00000534494441545388FA1722532A8CF4C89CC6AD0FFBACA683A71C07BB4F003C10BDF698E198713338CEFB6A1B954A33DD2B280E8AED88DB4F817AB9D5E6ABD1E03D2E6576DF5B452A048BB9F66F72FBE39C5A4C190B690A2E441E4DDACEC1E9FF38ADD1AAA7CF769262044BC20671834CDA3F4B0AE402C0B70B5C1B1C2CAAFF913430E3DA7379ADD7AC60C013108B644D32BE1434057A5F64A864DCF1A8A2E4931330104AED7CF81B2F388DBB37A7CDD8EEDEDF3AB3871C90BC2CA9EFF0A29B555B930ADD53AC0E655A323C2629BAA2F859EE5E64FCE7120726F3335E659545178CABAE819FF58166B25D1DF09FAD58CFC0339EF12F3CE35FBF7E01FFCBC0AFF8F7CCC0F3B396ABCE92F2714669CAC6AF5FD89C9DA10B53D633CECECE70F62CE93FE78AAA82FECFBF4F42067D466CE3DED26FFF2B97F50CA1EECF0C9CFD13623EC7BFB333E0F92CBC797616DBEA19FF0BE0DFD803D7B333FC03E0BFC131939459FC94B067F57D3FF1F3F3C79F84F0567A7EC6F31961F7EB17FCD933FECFD9596E0AF94BCD210F903F9FCFCA38FF10FA5F8CFF07D50773E24D583E0F43ED0A8C9F609C7BC60FE7F123007ECC7E88D011C1588B9531D8F8A84C3937E6FC02F8C1E1C7D4214C9F493BC797C9EFA822E51CA802AB67E1E912716D83E35B5A3E7BC67C35C5D96FCBC085F3D86A691268737EAEBE54CF0B6E3FB738B503E33C4E1D1CA679A1D2C726737D117008142EBB5DF71D0C80CB618007F02471E5BDD79E56F041E43CE3C6306E0B3B3D95168416FE63FB2C027D5CA1F54BE21E405F5E18628627C28DF760435817A6F246ED922C19BF48146B7017767105463EC9E909E14ACCAEC3EF12F05ACEAA2E53904F14F27F0F60DD75B0CCB888408773B8F23327849D0831809DF7D814767B1521E9B36DA15336D12FA1E4F651A451FFFECB2872FD1B062EBCC775A157AAF618354DD51FD6E01E91E34F2E4EE53B60C74F0387D707E6EBE54B094B8546CCCC32E09D0F8E6AD124F915A6608F683A2DF0476A55B6ACAB8EE7117C9596007FB768A1EACBF3EFD711870DE15BCFB8F06127DA88D1B4E0AAC3ACC14367F132C5E9C396366DB1491D9ABDDFEA6984238AF5805022D0C895F60B918B9BC413D5EB48232B439801E5C8C2253C5A4CA5F3C0FE0BB97D4502FE1FCCB8940100342CE582DFF85C98D348A6A7C0953A492486253956876719ABED5528F6ECB9A3B1BF083102F0AFAD41DAA02CBA49713283AAA592EBD31ED1C90C188E085B102C0E3CE578A6CC7F3A0D00E0195B6340E074161380D4009E188E018E727D5391ED8CA9B8F2587A298933C0B51DFBC495D443498EE34E542855AAEE1562E560AC2596F6A1994423D105F457CD093E007A00305853D65DC02E3402A55C3EB6E0489B44DA8AE11D2EBE88ACFE5AB2564E62105253E2A88DC214E7005C63C19E5E223C468E550E93C321BC637ED309117F2C15323D0146CBE7F59FA6BA6F9DC3B973F8F187031E009C0B27318CBD1EB981CD106011AC584BA03B808ED2867F8378F32AAAC59BBE564E47A4A65AEFBFBCACFE5A72D15FDB5883C7FA7A9D91A531CC0062BEDCC7ED370056AF93680AFA1BFB651125F186D425C8C084F13F9C0DE3FE52A0B7880050B87D1C63D95BCBFA1CB69F2D59794E228E36111D3E023EE5EA9DAF403F0024FFF9141AC4996BA8DBF6BE813E4B8470E9F8A3E7B63E2491FC1E1FF7B8B6F78478CC8E18055E01FA0B3EF0B282BF85FE8BE2C2110188A786F15F20971F9B8249331CA147CCE808C175E1E084824BC20D80BBB90134CA5D289B90BE99D4145100FC5F65DEFA0092B58E5B22BC10E1C5105E70C0A9C591E3BF0078A1F829DF09214DF99367C6A47C9A973E7F53A0FF0F493ACA89D56BC8F50000000049454E44AE426082"

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

    Local $hImage = Load_BMP_From_Mem($sData)
    Local $Width = _GDIPlus_ImageGetWidth($hImage)
    Local $Height = _GDIPlus_ImageGetHeight($hImage)

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

    Local $hwnd = GUICreate("Display image from memory", $Width, $Height)
    GUISetState()

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

    Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics($Width, $Height, $hGraphics)
    Local $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    _GDIPlus_GraphicsDrawImage($hBackbuffer, $hImage, 0, 0)
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $Width, $Height)
    #endregion

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

    GUISetOnEvent(-3, "Close")
    GUIRegisterMsg(0x000F, "MY_PAINT")

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

    Do
    Until Not Sleep(5000000)

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

    Func MY_PAINT($hWnd, $msg, $wParam, $lParam)
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $Width, $Height)
    _WinAPI_RedrawWindow($hwnd, "", "", BitOR($RDW_INVALIDATE, $RDW_UPDATENOW, $RDW_FRAME))
    Return "GUI_RUNDEFMSG"
    EndFunc ;==>MY_PAINT

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

    Func Close()
    GUIRegisterMsg(0x000F, "")
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>Close

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

    ;======================================================================================
    ; Function Name: Load_BMP_From_Mem
    ; Description: Loads a image which is saved as a binary string and converts it to a bitmap or hbitmap
    ;
    ; Parameters: $mem_image: the binary string which contains any valid image which is supported by GDI+
    ; Optional: $hHBITMAP: if false a bitmap will be created, if true a hbitmap will be created
    ;
    ; Remark: hbitmap format is used generally for GUI internal images
    ;
    ; Requirement(s): GDIPlus.au3, Memory.au3
    ; Return Value(s): Success: handle to bitmap or hbitmap, Error: 0
    ; Error codes: 1: $mem_image is not a binary string
    ;
    ; Author(s): UEZ
    ; Additional Code: thanks to progandy for the MemGlobalAlloc and tVARIANT lines
    ; Version: v0.95 Build 2011-06-11 Beta
    ;=======================================================================================
    Func Load_BMP_From_Mem($mem_image, $hHBITMAP = False)
    ;~ If Not IsBinary($mem_image) Then Return SetError(1, 0, 0) ;not working properly
    Local $declared = True
    If Not $ghGDIPDll Then
    _GDIPlus_Startup()
    $declared = False
    EndIf
    Local Const $memBitmap = Binary($mem_image) ;load image saved in variable (memory) and convert it to binary
    Local Const $len = BinaryLen($memBitmap) ;get length of image
    Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory ($GMEM_MOVEABLE = 0x0002)
    Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count associated with a memory object that was allocated with GMEM_MOVEABLE
    Local $hStream = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0)
    $hStream = $hStream[3]
    Local $hBitmap = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    $hBitmap = $hBitmap[2]
    Local Const $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
    DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
    "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
    $tMem = 0
    If $hHBITMAP Then
    Local Const $hHBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap)
    If Not $declared Then _GDIPlus_Shutdown()
    Return $hHBmp
    EndIf
    If Not $declared Then _GDIPlus_Shutdown()
    Return $hBitmap
    EndFunc ;==>Load_BMP_From_Mem

    [/autoit]

    Gruß,
    UEZ

  • "Binärbild" mit GDI laden!

    • UEZ
    • 9. April 2010 um 19:54

    Ich habe "Binärbilder" in meinem Würfelbeispiel (Würfel2 mit Texturen) benutzt, wo die Flaggen auf die Würfelseiten kopiert werden!


    Gruß,
    UEZ

  • Bild bewegen

    • UEZ
    • 8. April 2010 um 14:34

    Nun ja, GDI+ ist dar eigentlich nicht so viel drinne! Es werden ja nur Linien und Punkte gezeichnet!

    Die eigentliche Herausforderung ist das Verwalten aller Objekte, Kollision, Berechnungen, etc. ;)

    Ich weiß auch nicht, ob das Skript einigermaßen verständlich ist!

    Gruß,
    UEZ

  • Bild bewegen

    • UEZ
    • 8. April 2010 um 14:14

    Kannst ja mal dir AUTOITEROIDS anschauen! Vielleicht hilft dir das Skript!

    Gruß,
    UEZ

  • Ellipsenartige Bewegung um einen Punkt

    • UEZ
    • 5. April 2010 um 21:09

    Hier eine von vielen Möglichkeiten:

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>

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

    Local Const $width = 800
    Local Const $height = 800
    Local $hGraphics, $hBackbuffer, $hBitmap, $hPen1, $hPen2, $hPen3, $hPen1_s, $hPen2_s, $i, $pi_div_180 = 4 * ATan(1) / 180
    Local $w_h = $width * 0.5, $h_h = $height * 0.5 ; Bildschirm Mitte
    Local $r1 = 300 ;Radius 1
    Local $r2 = 100 ;Radius 2

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

    Local $title = "GDI+ Beispiel von UEZ"

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

    Opt("GUIOnEventMode", 1)
    $hwnd = GUICreate($title, $width, $height, -1, -1)
    GUISetOnEvent(-3, "close")
    GUISetState()
    If @OSBuild < 7600 Then WinSetTrans($hwnd,"", 0xFF)

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

    _GDIPlus_Startup()
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphics)
    $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBackbuffer, 2)
    $hPen1_s = 40
    $hPen2_s = 90
    $hPen1 = _GDIPlus_PenCreate(0xFF0000FF, $hPen1_s)
    $hPen2 = _GDIPlus_PenCreate(0xFFFFFF00, $hPen2_s)
    $hPen3 = _GDIPlus_PenCreate(0x80404040)

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

    Do
    _GDIPlus_GraphicsClear($hBackbuffer)
    _GDIPlus_GraphicsDrawEllipse($hBackbuffer, $w_h - $r1, $h_h - $r2, 2 * $r1, 2 * $r2, $hPen3) ;zeichne Ellipsenbahn
    If Sin($i * $pi_div_180) < 0 Then ;zeichen zu erst "Sonne", dann "Erde"
    _GDIPlus_GraphicsDrawEllipse($hBackbuffer, $w_h - $hPen1_s * 0.5 + Cos($i * $pi_div_180) * $r1, $h_h - $hPen1_s * 0.5 + Sin($i * $pi_div_180) * $r2, $hPen1_s, $hPen1_s, $hPen1) ;zeichne "Erde"
    _GDIPlus_GraphicsDrawEllipse($hBackbuffer, $w_h - $hPen2_s * 0.5, $h_h - $hPen2_s * 0.5, $hPen2_s, $hPen2_s, $hPen2) ;zeichne "Sonne"
    Else ;ansonsten zuerst "Erde", dann "Sonne"
    _GDIPlus_GraphicsDrawEllipse($hBackbuffer, $w_h - $hPen2_s * 0.5, $h_h - $hPen2_s * 0.5, $hPen2_s, $hPen2_s, $hPen2) ;zeichne "Sonne"
    _GDIPlus_GraphicsDrawEllipse($hBackbuffer, $w_h - $hPen1_s * 0.5 + Cos($i * $pi_div_180) * $r1, $h_h - $hPen1_s * 0.5 + Sin($i * $pi_div_180) * $r2, $hPen1_s, $hPen1_s, $hPen1) ;zeichne "Erde"
    EndIf
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $width, $height) ;kopiere Backbuffer in die GUI
    $i += 2 ;Geschwindigkeit der Kugel
    Sleep(20)
    Until False

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

    Func close()
    _GDIPlus_PenDispose($hPen1)
    _GDIPlus_PenDispose($hPen2)
    _GDIPlus_PenDispose($hPen3)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit]

    Ich habe die dynamische Größe der blauen Kugel auf der Z-Achse nicht implementiert!

    Gruß,
    UEZ

  • ZIP - Packen / Entpacken mit Windows eigener Funktion

    • UEZ
    • 5. April 2010 um 19:51

    Man kann auch einen Ordner angeben, den man packen möchte! Das Problem ist nur, dass man ohne weiteres nicht prüfen kann, wann der Pack Thread beendet ist!

    Hier meine Testversion:

    Spoiler anzeigen
    [autoit]


    #include <WinAPi.au3>
    #include <Array.au3>
    Opt('MustDeclareVars', 1)

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

    HotKeySet("{ESC}", "_Exit")
    Global Const $TH32CS_SNAPTHREAD = 0x00000004
    Global Const $THREADENTRY32 = "dword dwSize;dword cntUsage;dword th32ThreadId;dword th32OwnerProcessID;long tpBasePri;long tpDeltaPri;dword dwFlags;"

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

    Global $zip_file = "c:\Test.zip"
    Global $source_folder = @WindowsDir & "\Inf\"
    Add_Folder_2_ZIP($source_folder, $zip_file)

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

    Func Add_Folder_2_ZIP($folder, $zip_filename, $flag = 4)
    Local $hZIP, $ZIP_fileheader, $obj_ZIP, $obj_Folder, $obj_ZIP_Folder, $obj_Copy, $arr, $arr1, $arr2
    $hZIP = FileOpen($zip_filename, 26)
    $ZIP_fileheader = Chr(80) & Chr(75) & Chr(5) & Chr(6) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0) & Chr(0)
    FileWrite($hZIP, $ZIP_fileheader)
    FileClose($hZIP)

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

    $arr1 = _GetAllProcessThreads(@AutoItPID)
    $obj_ZIP = ObjCreate("Shell.Application")
    $obj_Folder = $obj_ZIP.NameSpace($folder)
    $obj_ZIP_Folder = $obj_ZIP.NameSpace($zip_filename)
    $obj_Copy = $obj_ZIP.NameSpace($zip_filename).CopyHere($obj_Folder.Items, $flag) ;add files to ZIP archive
    While 1
    Sleep(1000)
    $arr2 = _GetAllProcessThreads(@AutoItPID)
    $arr = _ArrayDiff($arr2, $arr1)
    If $arr[0] = 0 Then ExitLoop
    WEnd
    EndFunc ;==>Add_Folder_2_ZIP

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

    ; -------------------------------------------------
    ; Function: _ArrayDiff
    ; Purpose: Returns an array of elements from $avArray1 that do not occur in $avArray2
    ; Syntax: _ArrayDiff(ByRef $avArray1, ByRef $avArray2 [, $f_CaseSense = 0])
    ; Where: $avArray1 = ByRef source array
    ; $avArray2 = ByRef array to search for $avArray1 elements
    ; $f_CaseSense (optional) = Case sensitivity as passed to StringInStr()
    ; 0 = not case sensitive, using the user's locale (default)
    ; 1 = case sensitive
    ; 2 = not case sensitive, using a basic/faster comparison
    ; Returns: On success returns an array with [0] = count containing any elements
    ; from $avArray1 that do not occur in $avArray2
    ; If all elements in $avArray1 occur in $avArray2 then [0] = 0
    ; On Failure returns 1-element array [0] = 0 and sets @error.
    ; Author: PsaltyDS on http://www.autoitscript.com/forum
    ; Notes: Similar to PHP array_diff function
    ; --------------------------------------------------
    Func _ArrayDiff(ByRef $avArray1, ByRef $avArray2, $f_CaseSense = 0)
    Local $avRET[1] = [0], $sRET = ""

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

    If (IsArray($avArray1) = 0) Or (UBound($avArray1, 0) <> 1) Then Return SetError(1, 1, $avRET)
    If (IsArray($avArray2) = 0) Or (UBound($avArray2, 0) <> 1) Then Return SetError(1, 2, $avRET)

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

    Local $sArray2 = Chr(1) & _ArrayToString($avArray2, Chr(1)) & Chr(1)

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

    For $n = 0 To UBound($avArray1) - 1
    If Not StringInStr($sArray2, Chr(1) & $avArray1[$n] & Chr(1)) Then $sRET &= $avArray1[$n] & Chr(1)
    Next

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

    If StringLen($sRET) Then
    $sRET = StringTrimRight($sRET, 1)
    $avRET = StringSplit($sRET, Chr(1))
    EndIf

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

    Return $avRET
    EndFunc ;==>_ArrayDiff

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

    Func _GetAllProcessThreads($iPid) ; thanks to monoceres
    Local $call = DllCall("Kernel32.dll", "ptr", "CreateToolhelp32Snapshot", "dword", $TH32CS_SNAPTHREAD, "dword", 0)
    Local $handle = $call[0]
    Local $RetArr[1]
    Local $te32 = DllStructCreate($THREADENTRY32)
    DllStructSetData($te32, "dwSize", DllStructGetSize($te32))
    $call = DllCall("Kernel32.dll", "int", "Thread32First", "ptr", $handle, "ptr", DllStructGetPtr($te32))
    If DllStructGetData($te32, "th32OwnerProcessID") = $iPid Then _GetAllThreads_ArrHelper($RetArr, $te32)
    Do
    $call = DllCall("Kernel32.dll", "int", "Thread32Next", "ptr", $handle, "ptr", DllStructGetPtr($te32))
    If Not $call[0] Then ExitLoop
    If DllStructGetData($te32, "th32OwnerProcessID") = $iPid Then _GetAllThreads_ArrHelper($RetArr, $te32)
    Until True And False
    _ArrayDelete($RetArr, 0)
    _WinAPI_CloseHandle($handle)
    Return $RetArr
    EndFunc ;==>_GetAllProcessThreads

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

    Func _GetAllThreads_ArrHelper(ByRef $arr, $TE32_Struct) ; thanks to monoceres
    Local $ub = UBound($arr)
    ReDim $arr[$ub + 1]
    $arr[$ub] = DllStructGetData($TE32_Struct, "th32ThreadId")
    EndFunc ;==>_GetAllThreads_ArrHelper

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    Ich habe versucht, bevor das Packen anfängt, ein Snapshot von the Threads zu machen. Das Packen ist genau dan fertig, wenn der Urzustand der Threads wieder erreicht ist!

    Kennt jemand eine bessere Lösung?

    Gruß,
    UEZ

  • Berechnung einer Bewegung

    • UEZ
    • 5. April 2010 um 19:44

    Schaue dir doch mal das super Skript von moritz1243 an: Physik Engine Version2

    Dort kannst du alles zu Kollisionen und physikalischen Berechnungen finden!

    Gruß,
    UEZ

  • GDI+ Spiel: "Targets"

    • UEZ
    • 4. April 2010 um 11:47

    Schönes Script - sauber programmiert, nur wenn ich schieße, dann stockt kurz das Skript und vom Drücken der LMT bis zum Schuss vergeht zu viel Zeit!

    Getestet auf Vista x32 und AutoIt v3.3.6.0.

    Kannst ja mal Moorhuhn coden ;)

    Gruß,
    UEZ

  • JaYT-DwiMP3-P (YT-Downloader) Version 0.8.7.1

    • UEZ
    • 3. April 2010 um 00:03

    Irgenwie funzt der Download nicht mehr -> Size -1

    Und der GO Knopf ist nicht richtig positioniert ;)

    Gruß,
    UEZ

  • [Beendet] µitLight April - Mitte Juni

    • UEZ
    • 2. April 2010 um 22:53

    Genau das meinte ich in mein Post#14: irgendwie muss es ja messbar sein, ob ein Captcha gut ist oder nicht! Nur nach "Augenmaß" und irgendwelchen Hackermaßnahmen ist das eigentlich nicht sauber definiert!

    Es müsste ein Super-Bot geben, das genau das testet, aber das ist dann der "Single Point of Failure"...

    Gruß,
    UEZ

  • [Beendet] µitLight April - Mitte Juni

    • UEZ
    • 2. April 2010 um 21:58
    Zitat von BugFix


    Cheat Engine

    Und eine Cheat-Engine für Captchas? Also doch Reverse Engineering!

    Gruß,
    UEZ

  • Religion (Umfrage)

    • UEZ
    • 2. April 2010 um 21:55

    Man kann ja an einen "Schöpfer" glauben, ohne einer Religionsgemeinschaft anzugehören!

    Meine persönliche Meinung zu Religion ist, dass Religion die größte Lüge an der Menschheit ist, wobei Religion in den Wurzeln nichts Schlechtes ist! Religion wurde von den Menschen erschaffen!

    Gruß,
    UEZ

  • [Beendet] µitLight April - Mitte Juni

    • UEZ
    • 2. April 2010 um 21:38
    Zitat von MatthiasG.

    UEZ:

    Zu 3.: Testen mit Cheat-Engine

    Zu 5.: Augenmaß, wenn das Bild klar ist und die Buchstaben z.B. nicht verzerrt o.ä. ist, gibt es Möglichkeiten. Ich werde natürlich nicht einen Bot schreiben. Dazu fehlt mir auch die Zeit ;)

    Zu 3: Was ist eine Cheat-Engine genau? Reverse Engineering?
    Zu 5: naja, dann denke ich, dass das Ganze keinen Sinn macht, wenn man nicht algorithmisch prüfen kann, ob der Captcha gut ist oder nicht! Ob ein Captcha gut ist nur "aus dem Bauch" zu entscheiden, ist zu sehr subjektiv!

    Gruß,
    UEZ

  • [Beendet] µitLight April - Mitte Juni

    • UEZ
    • 2. April 2010 um 15:34
    Zitat von MatthiasG.

    ...
    3. Sicherheit gegnüber Cheat-Engine
    ...
    5. Botsicher
    ...

    Wie wird gemessen, ob ein Captcha gut ist?

    Gruß,
    UEZ

  • GDI+ Backbuffer will nicht :D

    • UEZ
    • 1. April 2010 um 18:40

    Im Prinzip hast du das Kopieren vom Backbuffer in das sichtbare Fenster vergessen!

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    Opt("GUIOnEventMode",2)
    OnAutoItExitRegister("_Exit")
    Global $GuiWidth = 400, $GuiHeight = 400
    Global $Charcoords[4] = [-200,100,200,200]
    Global $Speed = 1
    _GDIPlus_Startup()
    Global $Red = _GDIPlus_BrushCreateSolid(0xFFFF0000)
    Global $White = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
    $Gui1 = GUICreate("GDI+ Erste Schritte",$GuiWidth,$GuiHeight)
    $Grapic1 = _GDIPlus_GraphicsCreateFromHWND($Gui1)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($GuiWidth, $GuiHeight, $Grapic1) ; Bitmap-Objekt mit bezug auf unsere Grafik erstellen
    $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap) ; Grafik-Kontext holen.
    GUISetOnEvent(-3,"_Exit")
    GUiSetState()
    While 1 * Sleep(10)
    _Erneuern()
    WEnd

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

    Func _Exit()
    _GDIPlus_BrushDispose($Red)
    _GDIPlus_BrushDispose($White)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_GraphicsDispose($Grapic1)
    _GDIPlus_Shutdown()
    Exit
    EndFunc
    Func _Erneuern()
    $Charcoords[0] = $Speed + $Charcoords[0]
    If $Charcoords[0] > $GuiWidth Then $Charcoords[0] = -200
    _GDIPlus_GraphicsClear($hBackbuffer,0xFFF0F0F0)
    _GDIPlus_GraphicsFillRect($hBackbuffer,$Charcoords[0],$Charcoords[1],$Charcoords[2],$Charcoords[3])
    _GDIPlus_GraphicsDrawImageRect($Grapic1, $hBitmap, 0, 0, $GuiWidth, $GuiHeight) ;backbuffer in das sichtbare Fenster kopieren!
    EndFunc

    [/autoit]


    Gruß,

    UEZ

  • [Beendet] µitLight März

    • UEZ
    • 31. März 2010 um 23:56

    Hier der Atkin's Code in einer nicht optimierten Version:

    Spoiler anzeigen
    [autoit]


    Func Atkin_Prim_Calc($limes) ;using Atkin's algorithm
    $limes += 1
    Local $prime[$limes]
    Local $i, $k, $n, $nn, $w, $x, $xx, $y, $yy, $prime_numbers
    $w = Sqrt($limes)
    For $x = 1 To $w
    $xx = $x * $x ;x^2
    For $y = 1 To $w

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

    $yy = $y * $y ;y^2
    $n = $xx + $xx + $xx + $xx + $yy ;4 * x^2 + y^2
    If ($n < $limes) And (Mod($n, 12) = 1 Or Mod($n, 12) = 5) Then
    If $prime[$n] Then
    $prime[$n] = 0
    else
    $prime[$n] = 1
    EndIf
    EndIf

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

    $n = $xx + $xx + $xx + $yy ;3 * x^2 + y^2
    If $n < $limes And Mod($n, 12) = 7 Then
    If $prime[$n] Then
    $prime[$n] = 0
    else
    $prime[$n] = 1
    EndIf
    EndIf

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

    $n = $xx + $xx + $xx - $yy ;4 * x^2 - y^2
    If $x > $y And $n < $limes And Mod($n, 12) = 11 Then
    If $prime[$n] Then
    $prime[$n] = 0
    else
    $prime[$n] = 1
    EndIf
    EndIf

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

    Next
    Next

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

    For $n = 5 To $w Step 2 ; Only odd numbers can be prime, no point in testing even numbers
    If $prime[$n] Then
    $nn = $n * $n
    $k = 1
    While $k * $nn < $limes
    $prime[$k * $nn] = 0
    $k += 1
    WEnd
    EndIf
    Next

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

    For $n = 3 To $limes - 1 Step 2
    If $prime[$n] Then $prime_numbers &= $n & " "
    Next
    Return "2 " & $prime_numbers
    EndFunc

    [/autoit]

    Der ist für AutoIt leider langsam!

    Gruß,
    UEZ

  • Breakpoint 2010 in Bingen am Rhein vom 2.-5. April

    • UEZ
    • 29. März 2010 um 17:16

    Hier ein Zeitplan über die Veranstaltung: http://breakpoint.untergrund.net/timetable.php

    Ich plane Samstag oder Sonntag abends dort hin!

    Der Eintritt kostet leider 40€ pro Tag oder 55€ für alle 4Tage - ein bissl teuer! :huh:

    Gruß,
    UEZ

  • Breakpoint 2010 in Bingen am Rhein vom 2.-5. April

    • UEZ
    • 28. März 2010 um 21:12

    Da die Veranstaltung vom 2. - 5. April geht, frage ich mich, an welchem Tag man am besten dort hin sollte!

    Ich möchte auf jeden Fall dort hin . :D

    Gruß,
    UEZ

  • [Beendet] µitLight März

    • UEZ
    • 27. März 2010 um 23:40

    Ich dachte, dass wir den schnellsten Algorithmus zur Bestimmung von 100000 Primzahlen suchen, aber im 1. Post steht "Wer die höchste Primzahl nach 10 Minuten gefunden hat, hat gewonnen.".

    Hier meine Version zur Bestimmung der 100000 Primzahlen:

    Spoiler anzeigen
    [autoit]


    #include <Memory.au3>

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

    Local $until = 1299709
    Local $start = TimerInit()
    ;~ Local $pz = Eratosthenes_Calc($until)
    Local $pz = Eratosthenes_Calc_ASM($until) ;bytecode variant
    Local $stop = TimerDiff($start)
    Local $rowl = Ceiling(($until ^ 0.5) ^ 0.5)
    Local $aTemp = StringSplit(StringMid($pz, 1, StringLen($pz) - 1), " ")

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

    #region GUI ini
    Local $iMemo, $hGUI, $w, $h
    Local $font_size = 9
    Local $display = 0 ;display all prime numbers
    If $display Then
    $w = StringLen($until) * $rowl * $font_size
    If $w < 400 Then
    $w = 400
    ElseIf $w > @DesktopWidth * 0.95 Then
    $w = @DesktopWidth * 0.95
    EndIf
    $h = @DesktopHeight * 0.9
    Else
    $w = 400
    $h = 150
    EndIf
    #endregion GUI ini

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

    #region GUI
    $hGUI = GUICreate("Prime Numbers Calculator by UEZ 2010", $w, $h, 0, 0)
    $iMemo = GUICtrlCreateEdit("", 2, 2, $w - 4, $h - 6, 0x00200000 + 0x00100000 + 0x0800)
    GUICtrlSetLimit(-1, 0x7FFFFFFF)
    GUICtrlSetFont($iMemo, $font_size, 400, 0, "Courier New")
    GUICtrlSetBkColor($iMemo, 0xFFFFFF)

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

    MemoWrite("Sieving prime numbers till " & $until & ": " & @CRLF)
    MemoWrite("Found " & $aTemp[0] & " prime numbers!" & @CRLF)
    MemoWrite("Benchmark: " & Round($stop / 1000, 4) & " seconds to sieve prime numbers." & @CRLF)
    If $display Then
    MemoWrite(@CRLF & "Numbers:" & @CRLF)
    For $z = 1 To $aTemp[0]
    MemoWrite(StringFormat("%" & StringLen($until) + 1 & "s", $aTemp[$z] & " "))
    If Mod($z, $rowl) = 0 Then MemoWrite(@CRLF)
    Next
    EndIf

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

    MemoWrite(@CRLF)
    #endregion GUI
    GUISetState()
    MouseClick("left", 100, 85, 1, 1)

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

    While GUIGetMsg() <> -3
    WEnd

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

    Exit

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

    Func Eratosthenes_Calc($l) ;
    Local $p[$l + 1], $i, $j, $z, $n
    For $z = 0x3 To $l Step 0x2
    $p[$z] = 0x1
    Next
    For $i = 0x3 To Sqrt($l) Step 0x2
    If $p[$i] And Mod($p[$i], 0x2) Then
    For $j = $i * $i To $l Step $i
    $p[$j] = 0
    Next
    $n &= $i & " "
    EndIf
    Next
    If Not Mod($i, 0x2) Then $i += 0x1
    For $z = $i To $l Step 0x2
    If $p[$z] Then $n &= $z & " "
    Next
    Return "2 " & $n
    EndFunc ;==>Eratosthenes_Calc

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

    ;this is nearly the same code as the AutoIt code above but in ASM ;)
    Func Eratosthenes_Calc_ASM($limit); thanks to Andy for helping me to get the ASM code runnning properly :)
    #region bytecode
    Local $bytecode = "0x558B6C2408C7450C020000008B5D006BDB04B80800000089C1C1C90241894C050883C00839D876EF89EF83C70883C70101DF" & _
    "BB030000008B4D04B8080000008B74050839CB7F3383FE00750883C00883C302EBEB53505189D90FAFDB3B5D007F1489D86BC00483E804" & _
    "C74405080000000001CBEBE759585BEBD28B75006BF604B80800000089C1C1C902418B5C050883FB00750983C00839F076EA5DC3E802000000" & _
    "EBF05052535189D8BB0A00000031C931D2F7F3665280C10109C075F366580C30AAE2F9C6072083C701595B5A58C3"
    #cs
    :00000000 55 push ebp
    :00000001 8B6C2408 mov ebp, dword ptr [esp+08]
    :00000005 C7450C02000000 mov [ebp+0C], 00000002
    :0000000C 8B5D00 mov ebx, dword ptr [ebp+00]
    :0000000F 6BDB04 imul ebx, 00000004
    :00000012 B808000000 mov eax, 00000008
    :00000017 89C1 mov ecx, eax
    :00000019 C1C902 ror ecx, 02
    :0000001C 41 inc ecx
    :0000001D 894C0508 mov dword ptr [ebp+eax+08], ecx
    :00000021 83C008 add eax, 00000008
    :00000024 39D8 cmp eax, ebx
    :00000026 76EF jbe 00000017
    :00000028 89EF mov edi, ebp
    :0000002A 83C708 add edi, 00000008
    :0000002D 83C701 add edi, 00000001
    :00000030 01DF add edi, ebx
    :00000032 BB03000000 mov ebx, 00000003
    :00000037 8B4D04 mov ecx, dword ptr [ebp+04]
    :0000003A B808000000 mov eax, 00000008
    :0000003F 8B740508 mov esi, dword ptr [ebp+eax+08]
    :00000043 39CB cmp ebx, ecx
    :00000045 7F33 jg 0000007A
    :00000047 83FE00 cmp esi, 00000000
    :0000004A 7508 jne 00000054
    :0000004C 83C008 add eax, 00000008
    :0000004F 83C302 add ebx, 00000002
    :00000052 EBEB jmp 0000003F
    :00000054 53 push ebx
    :00000055 50 push eax
    :00000056 51 push ecx
    :00000057 89D9 mov ecx, ebx
    :00000059 0FAFDB imul ebx, ebx
    :0000005C 3B5D00 cmp ebx, dword ptr [ebp+00]
    :0000005F 7F14 jg 00000075
    :00000061 89D8 mov eax, ebx
    :00000063 6BC004 imul eax, 00000004
    :00000066 83E804 sub eax, 00000004
    :00000069 C744050800000000 mov [ebp+eax+08], 00000000
    :00000071 01CB add ebx, ecx
    :00000073 EBE7 jmp 0000005C
    :00000075 59 pop ecx
    :00000076 58 pop eax
    :00000077 5B pop ebx
    :00000078 EBD2 jmp 0000004C
    :0000007A 8B7500 mov esi, dword ptr [ebp+00]
    :0000007D 6BF604 imul esi, 00000004
    :00000080 B808000000 mov eax, 00000008
    :00000085 89C1 mov ecx, eax
    :00000087 C1C902 ror ecx, 02
    :0000008A 41 inc ecx
    :0000008B 8B5C0508 mov ebx, dword ptr [ebp+eax+08]
    :0000008F 83FB00 cmp ebx, 00000000
    :00000092 7509 jne 0000009D
    :00000094 83C008 add eax, 00000008
    :00000097 39F0 cmp eax, esi
    :00000099 76EA jbe 00000085
    :0000009B 5D pop ebp
    :0000009C C3 ret

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

    :0000009D E802000000 call 000000A4
    :000000A2 EBF0 jmp 00000094

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

    :000000A4 50 push eax
    :000000A5 52 push edx
    :000000A6 53 push ebx
    :000000A7 51 push ecx
    :000000A8 89D8 mov eax, ebx
    :000000AA BB0A000000 mov ebx, 0000000A
    :000000AF 31C9 xor ecx, ecx
    :000000B1 31D2 xor edx, edx
    :000000B3 F7F3 div ebx
    :000000B5 6652 push dx
    :000000B7 80C101 add cl, 01
    :000000BA 09C0 or eax, eax
    :000000BC 75F3 jne 000000B1
    :000000BE 6658 pop ax
    :000000C0 0C30 or al, 30
    :000000C2 AA stosb
    :000000C3 E2F9 loop 000000BE
    :000000C5 C60720 mov byte ptr [edi], 20
    :000000C8 83C701 add edi, 00000001
    :000000CB 59 pop ecx
    :000000CC 5B pop ebx
    :000000CD 5A pop edx
    :000000CE 58 pop eax
    :000000CF C3 ret
    #ce
    #endregion

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

    Local $limes = Floor(Sqrt($limit))
    Local $bin_len = Ceiling(StringLen($bytecode) * 0.5)
    Local $pRemoteCode = _MemVirtualAlloc(0, $bin_len, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
    Local $tCodeBuffer = DllStructCreate("byte[" & $bin_len & "]", $pRemoteCode)
    DllStructSetData($tCodeBuffer, 1, $bytecode)
    Local $tStruct = DllStructCreate("uint limit;uint limes;uint sieve[" & $limit + 1 & "];char prime[" & $limit & "]")
    DllStructSetData($tstruct, "limit", $limit)
    DllStructSetData($tstruct, "limes", $limes)
    Local $ret = DllCall("user32.dll", "int", "CallWindowProcW", "ptr", $pRemoteCode, "ptr", DllStructGetPtr($tStruct), "int", 0, "int", 0, "int", 0)
    Local $p = "2 3 5" & DllStructGetData($tStruct, "prime")
    _MemVirtualFree($pRemoteCode, $bin_len, $MEM_DECOMMIT)
    $tStruct = ""
    $tCodeBuffer = ""
    Return $p
    EndFunc ;==>Eratosthenes_Calc_ASM

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

    Func MemoWrite($sMessage = "")
    GUICtrlSetData($iMemo, $sMessage, 1)
    EndFunc ;==>MemoWrite

    [/autoit]

    Ich habe mal auch meine ASM Version dazu gepackt in der Bytecode Version (mein aller erster ASM Code überhaupt!)!

    Vielen Dank an Andy für seine Hilfe und Unterstützung! Ohne seine Hilfe wäre wohl nie eine lauffähige Version entstanden!

    Ich habe die Umwandlung von den Zahlen nach String in ASM noch nicht implementiert, so dass der Zeitgewinn in ASM durch das Auslesen des Structs wieder zunichte gemacht wird!

    Auf meinem Schlepptop benötigt der AutoIt Code ca. 4.00 und der ASM Code ca. 0,07 Sekunden für die 100000 Primzahlen!

    CPU: Intel(R) Pentium(R) Dual CPU T3200 @ 2.00GHz

    Gruß,
    UEZ

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™