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

Beiträge von Andy

  • Bild das in der zwischenablage liegt abspeichern

    • Andy
    • 25. April 2010 um 13:19

    so gehts...

    Spoiler anzeigen
    [autoit]

    #include <Clipboard.au3>
    _ClipBoard_GetData(8)
    msgbox(0,0,@extended) ;gibt die größe der bitmap aus, allerdings fehlen die ersten bytes des headers

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

    $data="0x424d000000000000000036000000"&stringtrimleft( _clipboard_getdata(8),2) ;header vervollständigen
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $data = ' & stringlen($data) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$data' & @lf & @lf & 'Return:' & @lf & $data) ;### Debug MSGBOX

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

    $file=fileopen("test.bmp",18)
    filewrite($file,$data)
    fileclose($file)

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

    shellexecute("test.bmp")

    [/autoit]
  • Vorschlag - Treffen?

    • Andy
    • 25. April 2010 um 10:20

    Aus der Erfahrung zu diesem Thema muss ich sagen, daß es sehr selten zu einem guten Ergebnis kommt. Es sind "immer die selben" die zu Treffen gehen, sich im Vorfeld engagieren, organisieren, Locations testen usw.
    Letztendlich sieht es so aus, daß von 10 Leuten, die in einem Forumsbeitrag zusagen, EINER kommt....ohne verbindliche Anmeldung (Hotelbuchung usw) wartet man den ganzen Abend vergeblich.

    Was eigentlich immer funktioniert, sind kurzfristig lokal anberaumte Treffen im Umkreis von ca. 50 Km.
    Da hat man schnell einige Leute zusammen. Oder auch nicht ^^. Ich verweise auf den Thread zur Breakpoint 2010 in Bingen, dort hatten einige tausend "Hacker" im Alter von 2-92 aus der ganzen Welt 4 Tage lang ihren Spass gehabt. Multikulti vom allerfeinsten, clevere und witzige Ideen, wunderschöne Grafik- und Sound-Demos, Livemusik uvm.
    Einige hier aus dem Forum hatten Interesse bekundet, letztendlich waren UEZ (AAAAMMMIIIIGGGGAAAAHHHHHHHHHHHH) und ich dann alleine unterwegs......es hat mir sehr viel Spass gemacht! :rock:

  • GeekTime

    • Andy
    • 24. April 2010 um 18:51
    Zitat

    Das ist doch logisch: Ein-Viertel-von-Sieben, ergo 6:15 Uhr.

    hehe, die haben sich schon daran gewöhnt dass ich mindestens ne halbe Stunde zu spät bin ^^. Irgendwann hab ich mal von der Autobahn aus nen Kunden angerufen dass ich später komme, da sagt er mich gefragt ob ich keine Uhr hätte, da musste ich antworten: "Doch, aber irgend ein Idiot hat gesagt, der Termin sei um viertel Sieben. Die Uhrzeit kenn ich nicht."
    Darauf er knochentrocken:"Der Idiot war ich....". Ist heute mein bester Freund :rock:

  • GeekTime

    • Andy
    • 24. April 2010 um 13:38

    DISKRIMINIERUNG der Rheinhessen!

    Wo bleibt "Viertel Sieben"? (Ich weiss bis heute noch nicht, welche Uhrzeit das sein soll...)
    Wobei "Achtzehnuhrsechsundzwanzigundzwölfsekunden" auch nicht schlecht wäre....

  • Lüfterdrehzahl auslesen

    • Andy
    • 24. April 2010 um 13:26

    Scriptomatic sollte die neueste Version sein...

    Habe das Script mal um einen Filter erweitert, um so nur z.B. die NET-Objekte oder andere zu finden
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    scriptomatic.au3 21,91 kB – 276 Downloads
  • Bestimmtes Programm wählen, wenn Datei geöffnet wird

    • Andy
    • 23. April 2010 um 21:59
    Zitat

    Ich verstehe, dass Sie die Informationen einer Zeichnung in lesbaren Text auslesen möchten, ohne das AutoCAD auf dem System installiert ist.

    Wie kommt der auf das schmale Brett daß Autocad nicht installiert ist? Xethria hat doch verschiedene Versionen von Autocad und ist somit KUNDE! Und wenn der Hersteller mir erzählen will, daß die kein Tool haben um eine Zeichnung erstellt mit Version X auch der Version X zuzuordnen, dann lache ich....wer hat denn den Maushover programmiert, der Weihnachtsmann?

    Das Problem ist doch: Version X, Version Y und Version Z sind auf dem Rechner installiert. Welches Programm hat die Datei Zeichnung.DWG erstellt?

    @Xethria, wenn der Maushover über der *.DWG die Erzeugerversion anzeigt, dann würde ich mir garkeinen Stress machen und die Dateiendung dwg mit dem AutoIt-Script verknüpfen, in welchem du dann die enstsprechende Version anklicken kannst. Also Mauszeiger auf Datei, es erscheint die Version X als Tooltip, doppelklicken und aus dem Menü (im AutoItscript) die Version X auswählen und mit der Datei starten.

  • pixel-farbe aus raw datein bestimmen

    • Andy
    • 23. April 2010 um 14:37

    ersetz mal

    [autoit]

    $c=round($bit16/256)

    [/autoit]

    auf die einfachsten Sachen kommt man nicht ^^

  • Bestimmtes Programm wählen, wenn Datei geöffnet wird

    • Andy
    • 23. April 2010 um 12:49

    Im hinteren Teil der Dateien finden sich reichlich Informationen zu Buildnummern und Versionen im Klartext. Natürlich wäre es einfacher, wenn das Format "offen" wäre. Ganz "leer" sind die Dateien übrigens nicht 8o
    Wahrscheinlich sind meine Kontakte bei Autodesk schon längst in Rente, die Telefonnummern hab ich vor ca. 20 Jahren aufgeschrieben....seitdem auch nichts mit denen mehr zu tun gehabt...
    Ubrigens waren die (zumindest damals) sehr hilfsbereit! Ggf. gibt es sogar ein Tool, dein "Problem" ist so ungewöhnlich ja nicht, ruf doch einfach mal an!

  • Strahl Dreieck Kollision

    • Andy
    • 23. April 2010 um 12:12
    Zitat

    Bist du dir da sicher?

    wenn du mir glaubhaft bestätigen kannst, daß ein DREIECK ein RÄUMLICHES Objekt ist, dann denk ich nochmal drüber nach ^^
    Das Dreieck ist, auch im 3-dimensionalen Raum, immer eine Ebene.

  • Text Datei Editieren

    • Andy
    • 23. April 2010 um 11:53

    schau mal in der Hilfe nach, was fileopen() zurückgibt, bzw was dein Parameter $file bedeutet...

  • Bestimmtes Programm wählen, wenn Datei geöffnet wird

    • Andy
    • 23. April 2010 um 11:40

    Problem gelöst :thumbup: , fehlt nur noch dein fertiges Script, damit irgendwann Leute mit identischem Problem schnell befriedigt werden :D

  • Bestimmtes Programm wählen, wenn Datei geöffnet wird

    • Andy
    • 23. April 2010 um 11:32

    hi, die ersten bytes bei Beispiel sind AC1021 und bei Beispiell2 AC1024....das wars, denke ich
    Reicht dir das? ansonsten schreib ich schnell nen Schnipsel, um das "auszulesen"^^

  • Workaround für OperaUser [Update 10.6]

    • Andy
    • 23. April 2010 um 10:21

    Bitte kurzes Feedback, wenn etwas nicht funktioniert bzw fehlt. Die Antwort auf meine Mail bzgl. des Erscheinens einer für Opera-User"bugfreien" Forensoftware-Version war sinngemäß "when its done"...

  • Bestimmtes Programm wählen, wenn Datei geöffnet wird

    • Andy
    • 23. April 2010 um 10:14

    Das ist eigentlich sehr einfach, du musst "nur" mit der *.dwg Datei als Parameter die AutoCad.exe aufrufen im Verzeichnis der passenden AutoCad-Version. Also nicht einfach run(autocad.exe *.dwg) sondern run(c:\programme\AutoCad\ACad4711\Autocad.exe *.dwg), dann bist du von der Registry unabhängig. Da der Doppelklick auf eine *.dwg bzw *.dxf ja sowieso dein "Versions-Auswahlmenü" startet, kannst du dort die ausgewählte Version zusammen mit dem Dateinamen speichern, und beim nächsten Mal ohne Auswahl, direkt mit der richtigen Version starten! So werden allmählich alle Zeichnungen der richtigen AutoCad-Version zugeordnet.

  • Strahl Dreieck Kollision

    • Andy
    • 23. April 2010 um 01:36
    Zitat

    Ob der Punkt im Dreieckt liegt kann man nicht so einfach bestimmen. Das ist sehr viel komplexer.

    2 Möglichkeiten:
    -Wenn Punkt im Dreieck, dann ist die Summe der 3 Winkel zwischen den Geraden PA,PB und PC = 360° ansonsten liegt der Punkt nicht im Dreieck.
    -Gleichungssystem lösen: stell die 3 Gleichungen auf und ich mach den Löser, aber der Vektorkram war noch nie mein Ding ^^

  • Workaround für OperaUser [Update 10.6]

    • Andy
    • 23. April 2010 um 00:19

    03/Juli/2010
    UPDATE für Opera 10.6
    Funktioniert mit EINGESCHALTETEM Javascript!
    Achtung! Tasten umbelegt. Die "Absenden"-Taste beim Posten wird nun einmalig "eingelernt". Mit der Maustaste in der unteren Hälfte auf den "Absenden"-Button drücken und GEDRÜCKT LASSEN! Dann Strg+y drücken (ein Screenshot des Buttons wird erstellt). Eine MsgBox erscheint mit der Erfolgsmeldung.
    Wird jetzt bei aktivem Editorfenster die Maus gedrückt, wird rund um den Mauscursor der Bereich nach dem "gelernten" "Absenden"-Button gescreent. Falls also auf den "Absenden"-Button geklickt wurde, erkennt das Script das und werkelt selbstständig weiter.
    Das funktioniert natürlich nur wenn nicht zwischendurch z.B. der Style geändert wird. Ansonsten einfach den Button neu einlernen.

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <ScreenCapture.au3>
    #include <WinAPI.au3>
    #include <GDIPlusConstants.au3>
    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=icon0002.ico
    #AutoIt3Wrapper_outfile=JavaScriptumschalter.exe
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;HotKeySet("^y", "_send_message") ;CTRL+y startet das Script, der Cursor sollte im Editor-Feld stehen!
    HotKeySet("^w", "_toggle_JS") ;CTRL+q schaltet JavaScript ein bzw aus
    HotKeySet("^y", "_buttontraining") ;TRAININGSMODUS! Mauscurser zentral auf den "Absenden"-Button setzen, linke Maustaste drücken und GEDRÜCKT HALTEN!
    ;dann erst Strg+y drücken.....Fenster erscheint, wenn erfolgreich...
    _GDIPlus_Startup()
    $dll = DllOpen("user32.dll")
    Local $flag = 0
    local $keydelay=200 ;zeit zw den Tastendrücken, auf schnellen Rechnern kleiner
    While Sleep(50) ;Endlosschleife

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

    $opt_wintitlematchmode = Opt("WinTitleMatchMode", 2) ;modi speichern
    $opt_sendkeydelay = Opt("SendKeyDelay", $keydelay) ;ggf anpassen, zeit zwischen den Tastendrücken

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

    If WinActive("Beitrag bearbeiten") Then
    If $flag = 0 Then ;nur, wenn das fenster noch nicht bearbeitet wurde
    $flag = 1 ;fenster wird bearbeitet
    BlockInput(1)
    _toggle_JS() ;Javascript ausschalten
    Sleep(4000) ;sleeps ggf kürze machen
    Send("{TAB 6}") ;ins Editorfeld wechseln
    Send("^a") ;allen Text markieren
    Send("^c") ;Text in Zwischenablage kopieren
    _toggle_JS() ;Javascript ausschalten
    Sleep(4000)
    ;msgbox (0,"eingefügen",0,5)
    Send("{TAB 12}") ;ins Editorfeld wechseln
    Send("^v") ;text einfügen
    BlockInput(0)
    ;msgbox (0,"eingefügt",0)
    EndIf
    EndIf

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

    If WinActive("Neue Antwort erstellen") Or _ ;falls Operafenster mit "Neue Antwort erstellen" aktiv, oder
    WinActive("Neue Nachricht erstellen") Or _ ;falls Operafenster mit "Neue Nachricht erstellen" aktiv, oder
    (WinActive("Beitrag bearbeiten") And $flag = 1) Or _ ;falls Operafenster mit "Beitrag bearbeiten" aktiv, oder
    WinActive("Neues Thema erstellen") Then ;falls Operafenster mit "Neues Thema erstellen" aktiv, dann
    If _IsPressed("01", $dll) Then ;falls linke Maustaste gedrückt, nachschauen, ob "Absenden" gedrückt wurde
    MouseDown("left") ;mausbutton gedrückt halten, sicher ist sicher
    $a = MouseGetPos()
    $capture = _ScreenCapture_Capture("", $a[0] - 50, $a[1] - 20, $a[0] + 50, $a[1] + 20, False) ;screen rund um den Mausklick erstellen
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $capture = ' & $capture & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    If _isAntwortbuttonPressed($capture) Then
    MouseDown("left") ;mausbutton gedrückt halten
    MouseMove($a[0], $a[1] + 20, 0) ;maus vom Button entfernen, am besten, bevor er losgelassen wurde^^
    MouseUp("left") ;mausbutton loslassen
    Send("{TAB 5}") ;ins Editorfeld wechseln
    If WinActive("Neue Nachricht erstellen") Then Send("{TAB}") ;eins mehr....
    If WinActive("Beitrag bearbeiten") Then Send("{TAB 2}") ;zwei mehr
    _send_message() ;falls "Antwort" angeklickt wurde,
    $flag = 0 ;fürs bearbeitenfenster
    EndIf
    MouseUp("left") ;mausbutton loslassen
    ;msgbox(0,"ende",0)
    EndIf
    EndIf
    Opt("WinTitleMatchMode", $opt_wintitlematchmode) ;modi wiederherstellen
    Opt("SendKeyDelay", $opt_sendkeydelay)
    WEnd

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

    Func _send_message()
    $opt_wintitlematchmode = Opt("WinTitleMatchMode", 2) ;modi speichern
    $opt_sendkeydelay = Opt("SendKeyDelay", $keydelay) ;ggf anpassen, zeit zwischen den Tastendrücken
    If WinActive("Neue Antwort erstellen") Then _Antwort() ;falls Operafenster mit "Neue Antwort erstellen" nicht aktiv, oder
    If WinActive("Neue Nachricht erstellen") Then _Nachricht() ;falls Operafenster mit "Neue Nachricht erstellen" nicht aktiv, return
    If WinActive("Neues Thema erstellen") Then _Thema() ;falls Operafenster mit "Neues Thema erstellen" nicht aktiv, return ) Then return
    If WinActive("Beitrag bearbeiten") Then _Beitrag()
    Opt("WinTitleMatchMode", $opt_wintitlematchmode) ;modi wiederherstellen
    Opt("SendKeyDelay", $opt_sendkeydelay)
    EndFunc ;==>_send_message

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

    Func _saveData() ;Daten in die Zwischenablage
    Send("^a") ;allen Text markieren
    Send("^c") ;Text in Zwischenablage kopieren
    _toggle_JS() ;Javascript umschalten
    Sleep(2000) ;auf Browser warten, JS ausgeschaltet
    EndFunc ;==>_saveData

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

    Func _Beitrag()
    _savedata() ;Daten in die Zwischenablage
    Send("{TAB 6}") ;Browserfenster ohne JS ist nun aktiv
    Send("^a") ;allen Text markieren
    Send("^v") ;Text aus Zwischenablage einfügen
    Send("{TAB}") ;zum "Absenden" Button
    Send("{ENTER}") ;Text absenden
    sleep(2000) ;warten auf browser
    _toggle_JS() ;JS aktivieren

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

    EndFunc ;==>_Beitrag

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

    Func _Antwort()
    _savedata() ;Daten in die Zwischenablage
    Send("{TAB}") ;Browserfenster ohne JS ist nun aktiv
    Send("{TAB}") ;ins Editorfels wechseln
    Send("{TAB}") ;ins Editorfels wechseln
    Send("{TAB}") ;ins Editorfels wechseln
    Send("^v") ;Text aus Zwischenablage einfügen
    Send("{TAB}") ;zum "Absenden" Button
    Send("{ENTER}") ;Text absenden
    _toggle_JS() ;JS aktivieren
    EndFunc ;==>_Antwort

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

    Func _Nachricht()
    _savedata() ;Daten in die Zwischenablage
    Send("{TAB 5}") ;Browserfenster ohne JS ist nun aktiv
    Do ;solange Betreff abfragen...
    $inp = InputBox("Betreff eingeben", "", "")
    Until $inp <> "" ;bis ein gültiger Wert erscheint
    Send(" ") ;leerzeichen
    Send($inp) ;Text ins Betreff-Feld
    Send("{TAB}") ;ins Editorfels wechseln
    Send("^v") ;Text aus Zwischenablage einfügen
    Send("{TAB}") ;zum "Absenden" Button
    Send("{ENTER}") ;Text absenden
    _toggle_JS()
    EndFunc ;==>_Nachricht

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

    Func _Thema() ;Neues Thema erstellen
    _savedata() ;Daten in die Zwischenablage
    Send("{TAB 3}") ;Browserfenster ohne JS ist nun aktiv
    Do ;solange Betreff abfrahgen...
    $inp = InputBox("Überschrift eingeben", "", "")
    Until $inp <> "" ;bis ein gültiger Wert erscheint
    Send(" ") ;leerzeichen
    Send($inp) ;Text ins Betreff-Feld
    Send("{TAB}") ;ins Editorfels wechseln
    Send("^v") ;Text aus Zwischenablage einfügen
    Send("{TAB}") ;zum "Absenden" Button
    Send("{ENTER}") ;Text absenden
    _toggle_JS()
    EndFunc ;==>_Thema

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

    Func _toggle_JS() ;schaltet Javascript um
    Opt("SendKeyDelay", $keydelay) ;ggf anpassen, zeit zwischen den Tastendrücken
    Send("{F12}") ;Schnelleinstellungen öffnen
    Send("{UP}") ;Seitenspezifische Einstellungen markieren und ...
    Send("{ENTER}") ;...auswählen
    WinWaitActive("Site-Einstellungen", "") ;warten bis Fenster aktiv
    Send("{CTRLDOWN}{TAB 4}") ;bis zum Tab...
    Send("{CTRLUP}") ;...Scripte
    Send("{SPACE}") ;Javascript toggeln
    Send("{ENTER}") ;und ausführen
    Send("{F5}") ;Browserrefresh
    EndFunc ;==>_toggle_JS

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

    Func _isantwortbuttonPressed($pic)
    Local $a = _findBMP_slow($pic, "Opera_Antwortbutton.bmp") ;findet die Buttonpixel im screenshot
    If IsArray($a) Then Return True
    Return False
    EndFunc ;==>_isantwortbuttonPressed

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

    Func _FindBMP_slow($BMP1, $BMP2)
    Dim $BMP1Data = "", $BMP1Width = 0, $BMP1Height = 0, $BMP1LineWidth = 0, $pbitmap1 = 0, $bitmapinfo1
    Dim $BMP2Data = "", $BMP2Width = 0, $BMP2Height = 0, $BMP2LineWidth = 0, $pbitmap2 = 0, $bitmapinfo2
    Dim $koord[2]
    Local $searchFor, $line, $iPos = 1, $imgBytes = 3, $prozent, $ptr1, $ptr2
    Local $VirtualDesktopWidth = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 78) ;sm_virtualwidth
    Local $DesktopWidth = $VirtualDesktopWidth[0]
    Local $VirtualDesktopHeight = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 79) ;sm_virtualheight
    Local $DesktopHeight = $VirtualDesktopHeight[0]

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

    ; Load the bitmap to search in
    $ptr1 = _GetImage($BMP1, $BMP1Data, $BMP1Width, $BMP1Height, $BMP1LineWidth, $pbitmap1, $bitmapinfo1)
    $BMP1Data = BinaryToString($BMP1Data)
    $ptr2 = _GetImage($BMP2, $BMP2Data, $BMP2Width, $BMP2Height, $BMP2LineWidth, $pbitmap2, $bitmapinfo2)
    $BMP2Data = BinaryToString($BMP2Data)
    If $BMP2Height = 0 Or $BMP1Height = 0 Then
    SetError(1, 0, 0)
    Return False
    EndIf
    $fillbytes = Mod($BMP1LineWidth, $BMP1Width)
    ; ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $fillbytes = ' & $fillbytes & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Local $searchFor1 = StringMid($BMP2Data, 1, ($BMP2Width * $imgBytes)) ;1. pixel-zeile in der bitmap2 (string)
    $iPos = StringInStr($BMP1Data, $searchFor1, 1, 1) ;1. fundstelle des strings in Bitmap2
    ;zeilenweises vergleichen der beiden bitmaps, ist bitmap2 in bitmap1 enthalten?
    While 1
    Local $flag = 0
    If $iPos <> 0 Then
    Local $e = Mod(($iPos - 1), $BMP1LineWidth) ;position innerhalb des Strings
    If $e / $imgBytes = Int($e / $imgBytes) Then ;prüfen ob ipos am anfang eines farbbits steht, wenn nicht, nächste zeile suchen
    For $S = 2 To $BMP2Height ;zeilenweise das suchbild mit dem screen vergleichen
    ;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $S = ' & $S & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $searchFor = StringMid($BMP2Data, 1 + (($S - 1) * $BMP2LineWidth), $BMP2Width * $imgBytes) ; s-te zeile aus dem ausschnitt
    $line = StringMid($BMP1Data, $iPos + (($S - 1) * $BMP1LineWidth), $BMP2Width * $imgBytes) ;zeile "unter" der gefundenen zeile im screen
    If $searchFor <> $line Then ;zeilen nicht gleich,
    $flag = 1
    ExitLoop ;exit for/next
    EndIf
    Next
    If $flag = 0 Then ;alle zeilen haben übereingestimmt, BMP2 ist in BMP1 enthalten! $koord[0] = Mod(($iPos - 1), $BMP1LineWidth) / $imgBytes ;koordinaten auf dem screen
    $koord[0] = Mod(($iPos - 1), $BMP1LineWidth) / $imgBytes ;koordinaten auf dem screen
    $koord[1] = Int(($iPos - 1) / $BMP1LineWidth)
    $BMP1Data = 0 ;strukturen löschen, Speicher freigeben
    $BMP2Data = 0
    $ptr1 = 0
    $ptr2 = 0
    _GDIPlus_BitmapUnlockBits($pbitmap1, $bitmapinfo1)
    _GDIPlus_BitmapUnlockBits($pbitmap2, $bitmapinfo2)
    _GDIPlus_ImageDispose($pbitmap1) ;Bitmaps löschen
    _GDIPlus_ImageDispose($pbitmap2)
    ToolTip("")
    Return $koord
    EndIf
    $iPos = StringInStr($BMP1Data, $searchFor1, 1, 1, $iPos + $imgBytes)
    If $iPos = 0 Then ExitLoop ;nicht gefunden
    Else ;ipos ist innerhalb eines farbbits und nicht am anfang
    $iPos = StringInStr($BMP1Data, $searchFor1, 1, 1, $iPos + 1)
    If $iPos = 0 Then ExitLoop
    EndIf
    Else
    ExitLoop
    EndIf
    WEnd
    $BMP1Data = 0 ;strukturen löschen, Speicher freigeben
    $BMP2Data = 0
    $ptr1 = 0
    $ptr2 = 0
    _GDIPlus_BitmapUnlockBits($pbitmap1, $bitmapinfo1)
    _GDIPlus_BitmapUnlockBits($pbitmap2, $bitmapinfo2)
    _GDIPlus_ImageDispose($pbitmap1) ;Bitmaps löschen
    _GDIPlus_ImageDispose($pbitmap2)
    ToolTip("")
    SetError(1, 0, 0)
    Return 0 ;
    EndFunc ;==>_FindBMP_slow

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

    ;holt aus einer Datei oder einem Handle die Bitmapdaten
    Func _GetImage($bmpfile, ByRef $BMPDataStart, ByRef $Width, ByRef $Height, ByRef $Stride, ByRef $pBitmap, ByRef $BitmapData)

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

    Local $Scan0, $hbScreen, $handle, $imgBytes = 3, $pixeldata, $pixeldata2, $xy
    Local $VirtualDesktopWidth = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 78) ;sm_virtualwidth
    Local $VirtualDesktopHeight = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 79) ;sm_virtualheight

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

    ; Load the bitmap to search in
    If StringUpper($bmpfile) = "FULLSCREEN" Then
    $hbScreen = _ScreenCapture_Capture("", 0, 0, $VirtualDesktopWidth[0], $VirtualDesktopHeight[0], False)
    If @error Then MsgBox(0, "", "Fehler Screencapture FULLSCREEN")
    $pBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hbScreen); returns memory bitmap
    If @error Then MsgBox(0, "", "Fehler Bitmapcreate_FromHBITMAP Screen")
    Else
    ;try to get a handle
    $handle = WinGetHandle($bmpfile)
    If @error Then
    ;Assume its an unknown handle so correct filename should be given
    $hbScreen = _GDIPlus_BitmapCreateFromFile($bmpfile)
    $pBitmap = $hbScreen
    If @error Then MsgBox(0, "", "Fehler BitmapCreateFromFile")
    Else ;aktuelles fenster
    $xy = WinGetPos($bmpfile)
    $hbScreen = _ScreenCapture_CaptureWnd("", $handle, 0, 0, $xy[2], $xy[3], False)
    If @error Then MsgBox(0, "", "Fehler Screencapturewnd")
    $pBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hbScreen); returns memory bitmap
    If @error Then MsgBox(0, "", "Fehler BitmapCreateFromHBITMAP File")
    EndIf
    EndIf
    If $pBitmap = 0x00000000 Then ;könnte ein screen sein
    $pBitmap = _GDIPlus_BitmapCreateFromHBITMAP($bmpfile); returns memory bitmap
    If @error Then MsgBox(0, "", "Fehler BitmapCreateFromHBITMAP File")
    EndIf

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

    ;_GDIPlus_BitmapLockBits gibt $tagGDIPBITMAPDATA-Struktur zurück
    $BitmapData = _GDIPlus_BitmapLockBits($pBitmap, 0, 0, _GDIPlus_ImageGetWidth($pBitmap), _GDIPlus_ImageGetHeight($pBitmap), $GDIP_ILMREAD, $GDIP_PXF24RGB)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $pBitmaplock = ' & $pBitmap & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    If @error Then MsgBox(0, "", "Error locking region " & @error)
    $Stride = DllStructGetData($BitmapData, "Stride");Stride - Offset, in bytes, between consecutive scan lines of the bitmap. If the stride is positive, the bitmap is top-down. If the stride is negative, the bitmap is bottom-up.
    $Width = DllStructGetData($BitmapData, "Width");Image width - Number of pixels in one scan line of the bitmap.
    $Height = DllStructGetData($BitmapData, "Height");Image height - Number of scan lines in the bitmap.
    ;$pixelFormat = DllStructGetData($BitmapData, "PixelFormat");Pixel format - Integer that specifies the pixel format of the bitmap
    $Scan0 = DllStructGetData($BitmapData, "Scan0");Scan0 - Pointer to the first (index 0) scan line of the bitmap.
    $pixeldata = DllStructCreate("byte[" & (Abs($Stride) * ($Height)) & "]", $Scan0)
    $BMPDataStart = DllStructGetData($pixeldata, 1) ;string im Struct-format, d.h. Byte+nulByte, in dem die pixeldaten im BGR-Format stehen
    ; _GDIPlus_BitmapUnlockBits($pbitmap, $BitmapData)
    ;_GDIPlus_ImageDispose($pBitmap) zerstört die pixeldatastruct, daher erst später!!!
    _WinAPI_DeleteObject($hbScreen)
    Return $pixeldata
    EndFunc ;==>_GetImage

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

    Func _Buttontraining()
    Local $a = MouseGetPos()
    _ScreenCapture_Capture("Opera_Antwortbutton.bmp", $a[0] - 15, $a[1] - 3, $a[0] + 15, $a[1] + 3, False) ;screen rund um den Mausklick erstellen
    If @error Then
    MsgBox(0, "Button einlernen", "Nicht erfolgreich, bitte wiederholen!")
    Else
    MsgBox(0, "Button einlernen", "Erfolgreich, bitte testen")
    EndIf

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

    EndFunc ;==>_Buttontraining

    [/autoit]

    Kompilieren und ab in den Autostart oder zusammen mit dem Browser starten...


    Hi,
    ab Opera 10.5 gibts Probleme mit der aktuellen Forensoftware beim Erstellen von Beiträgen.
    Das kann man mittels Ein- und Ausschalten von Javascript in den Griff bekommen, allerdings ist das nervig....

    Beim folgenden Script kann JavaScript aktiviert bleiben.
    Anleitung:
    Mit aktiviertem Javascript bei folgenden Aktionen
    - "Neue Antwort erstellen" bei Antworten bestehender Threads
    - "Neues Thema erstellen" zum erstellen neuer Threads
    - "Neue Nachricht erstellen" für PN´s
    einfach ganz normal den Beitrag editieren , aber anstatt auf den "Absenden" Button zu klicken, nun STRG+y drücken, der Cursor sollte im Editorfeld sein!
    Das Script kopiert den Text in die Zwischenablage, deaktiviert JS, refresht den Browser, kopiert den Text aus der Zwischenablage ins Editordfenster und schickt den Text ab. Danach aktiviert es wieder JS.

    Das klappt bei "Beitrag bearbeiten" nicht so! Wenn der Button gedrückt wurde, erscheint das leere Fenster, aber keine Panik, ein Druck auf STRG+w deaktiviert JS und der Beitrag erscheint, kann editiert und per Mausklick abgeschickt werden. Danach mit STRG+w wieder den JS aktivieren.

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=icon0002.ico
    #AutoIt3Wrapper_outfile=JavaScriptumschalter.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    HotKeySet("^y", "_send_message") ;CTRL+y startet das Script, der Cursor sollte im Editor-Feld stehen!
    HotKeySet("^w", "_toggle_JS") ;CTRL+q schaltet JavaScript ein bzw aus

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

    While Sleep(50) ;Endlosschleife
    WEnd

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

    Func _send_message()
    $opt_wintitlematchmode = Opt("WinTitleMatchMode", 2) ;modi speichern
    $opt_sendkeydelay = Opt("SendKeyDelay", 100) ;ggf anpassen, zeit zwischen den Tastendrücken
    If WinActive("Neue Antwort erstellen") then _Antwort() ;falls Operafenster mit "Neue Antwort erstellen" nicht aktiv, oder
    If WinActive("Neue Nachricht erstellen") then _Nachricht() ;falls Operafenster mit "Neue Nachricht erstellen" nicht aktiv, return
    If WinActive("Neues Thema erstellen") then _Thema() ;falls Operafenster mit "Neues Thema erstellen" nicht aktiv, return ) Then return
    Opt("WinTitleMatchMode", $opt_wintitlematchmode) ;modi wiederherstellen
    Opt("SendKeyDelay", $opt_sendkeydelay)
    EndFunc

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

    func _saveData() ;Daten in die Zwischenablage
    Send("^a") ;allen Text markieren
    Send("^c") ;Text in Zwischenablage kopieren
    _toggle_JS() ;Javascript umschalten
    Sleep(2000) ;auf Browser warten, JS ausgeschaltet
    endfunc

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

    func _Antwort()
    _savedata() ;Daten in die Zwischenablage
    Send("{TAB}") ;Browserfenster ohne JS ist nun aktiv
    Send("{TAB}") ;ins Editorfels wechseln
    Send("^v") ;Text aus Zwischenablage einfügen
    Send("{TAB 23}") ;zum "Absenden" Button
    Send("{ENTER}") ;Text absenden
    _toggle_JS() ;JS aktivieren
    endfunc

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

    func _Nachricht()
    _savedata() ;Daten in die Zwischenablage
    Send("{TAB 6}") ;Browserfenster ohne JS ist nun aktiv
    do ;solange Betreff abfragen...
    $inp=inputbox("Betreff eingeben","","")
    until $inp<>"" ;bis ein gültiger Wert erscheint
    send(" ") ;leerzeichen
    send($inp) ;Text ins Betreff-Feld
    Send("{TAB}") ;ins Editorfels wechseln
    Send("^v") ;Text aus Zwischenablage einfügen
    Send("{TAB 9}") ;zum "Absenden" Button
    Send("{ENTER}") ;Text absenden
    _toggle_JS()
    endfunc

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

    func _Thema() ;Neues Thema erstellen
    _savedata() ;Daten in die Zwischenablage
    Send("{TAB}") ;Browserfenster ohne JS ist nun aktiv
    do ;solange Betreff abfrahgen...
    $inp=inputbox("Überschrift eingeben","","")
    until $inp<>"" ;bis ein gültiger Wert erscheint
    send(" ") ;leerzeichen
    send($inp) ;Text ins Betreff-Feld
    Send("{TAB}") ;ins Editorfels wechseln
    Send("^v") ;Text aus Zwischenablage einfügen
    Send("{TAB 23}") ;zum "Absenden" Button
    Send("{ENTER}") ;Text absenden
    _toggle_JS()
    endfunc

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

    func _toggle_JS() ;schaltet Javascript um
    Opt("SendKeyDelay", 100) ;ggf anpassen, zeit zwischen den Tastendrücken
    Send("{F12}") ;Schnelleinstellungen öffnen
    Send("{UP}") ;Seitenspezifische Einstellungen markieren und ...
    Send("{ENTER}") ;...auswählen
    WinWaitActive("Site-Einstellungen", "") ;warten bis Fenster aktiv
    Send("{CTRLDOWN}{TAB 4}") ;bis zum Tab...
    Send("{CTRLUP}") ;...Scripte
    Send("{SPACE}") ;Javascript toggeln
    Send("{ENTER}") ;und ausführen
    Send("{F5}") ;Browserrefresh
    endfunc

    [/autoit]

    ob das sendkeydelay so hoch sein muss, keine Ahnung, probiert es aus^^ Auch die 2 Sekunden Wartezeit, um den Browser nach F5 zu refreshen sind ziemlich großzügig bemessen....

  • Mit einer Taste zwei Tasten drücken

    • Andy
    • 22. April 2010 um 23:53
    Zitat

    also des I-Pac ist eine Tastatur! nur halt mit 32 Knöpfen. Kein installation keine dll. läuft wie eine zweite Tastatur. und im Mame werden auch beide erkannt. mit dem gleichen Imput befehl.

    wenn ich das jetzt richtig verstanden habe, dann musst du zuerst die "Taste" die das Pad sendet abfangen, und daraus dann 2 andere Tastendrücke machen und die an Mame senden?

  • Karierte Gui

    • Andy
    • 22. April 2010 um 21:30

    A propos kariert!
    Ich find das klasse:

  • Rechner verbessern , Prozessor & Co

    • Andy
    • 22. April 2010 um 19:27

    Mama, Papa, Oma, Opa, Tante Hilde oder Onkel Paul, irgendwer in deiner näheren oder weiteren Ver- oder Bekanntschaft sollte doch wohl einen Ebay-Account haben!? Und selbst wenn Tante Hilde in Timbuktu sitzt, sobald das Geld bei ihr auf dem Konto eingetroffen ist, überweist sie es dir und du schickst die Ware los...

    Die Gebühren sind immer kleiner als dein Erlös...

  • Rechner verbessern , Prozessor & Co

    • Andy
    • 22. April 2010 um 18:37

    ja, vorrausgesetzt dein Netzteil hat die richtigen Anschlußstecker(davon geh ich aus), brauchst du "nur" ein Board (im Format daß in dein Gehäuse passt), einen passenden Prozessor nach Wahl (incl Kühler) und ein bis 2 Riegel RAM (könnte sein, daß du sogar dein altes RAM nutzen kannst!)
    Und basteln sollte man können, ggf kennst du ja jemanden, der schonmal einen Rechner zusammengebaut hat...

    ggf bekommst du noch ein bissl Geld rein, wenn du deine alten Komponenten bei EBAY vertickst...

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™