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

  • Probleme mit Prospeed.dll

    • Andy
    • 29. April 2010 um 16:22

    Hallo!
    Habe schon einiges mirt der Prospeed.dll verzapft, die Funktionen sind idR sehr schnell und auch mit AutoIt einfach zu nutzen .

    @hulle, da das Sprite automatisch den Weg zum Ziel findet ( auch durch ein Labyrinth^^) musst du nur den Zielpunkt angeben und die Geschwindigkeit dort hin, hab dein Beispiel mal abgewandelt

    Spoiler anzeigen
    [autoit]

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

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

    Opt("GUIOnEventMode", 1)
    $ball = loadsprite("Ball.bmp")

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

    $Ball_x = 400
    $Ball_y = 400
    $Ball_speed_x = -2
    $Ball_speed_y = -2

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

    $GUI_MAIN = GUICreate("Test", 640, 480, Default, Default, $WS_POPUP)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    GUISetState()
    GetHDC()
    $createbitmap = CreateImage(640,480)
    CreateBuffer(640,480)
    SetBuffer($createbitmap)
    PaintImage($hDC,0,0,640,480,$createbitmap,0,0,0)

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

    ;$spaceship = Sprite($spaceship1, Destination, $S_offsetX, $S_offsetY, WIDTH, HEIGHT, FRAMES, START_FRAME, FRAME_SPEED, posX, posY)

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

    $Ball_sprite = Sprite($ball, $hdc, 0, 0, 15 ,15, 1, 1, 1, $Ball_x, $Ball_y)

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

    ; syntax : SetSpriteSpeed($S_Alias, Speed X, Speed Y)
    SetSpriteSpeed($Ball_sprite, 10, 10)

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

    MoveSprite($Ball_sprite, 0,0)

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

    ; syntax : Movesprite($S_Alias, $posx, $posy)
    While 1
    Sleep(20)
    ;~ $Ball_x += $Ball_speed_x
    ;~ $ball_y += $Ball_speed_y
    ; MoveSprite($Ball_sprite, $Ball_x, $Ball_y)

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

    WEnd

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

    Func _Exit()
    FreeImage($Ball)
    DeleteSprite($ball_sprite)
    DestroyBuffer()
    DllClose($S_DLL)
    Exit
    EndFunc

    [/autoit]


    Alizame, Ahnung hast du nicht, wieso gibst du dann deinen Senf dazu?
    Lad die Prospeed-AutoIt-Demo (Teil dieser Datei) runter und schau dir an, was damit machbar ist. Dann nimm dir in den kompletten Sommerferien nichts vor und mach das mit GDI+. Viel Spass....

  • Bild aus Zwischenablage in GUI kopieren

    • Andy
    • 29. April 2010 um 15:59
    Zitat von Bruns8234

    Was ich bisher vergessen habe zu erwähnen ist: Ich arbeite hier auf Win7Ultimate 64Bit - könnte das die Ursache meiner Probleme sein?

    also das folgende klappt bei mir XP32 einwandfrei, ich rechtsklicke Autoberts Avatarbild ^^, klicke auf "Bild kopieren", starte das folgende Script und das Bild erscheint in der GUI

    Spoiler anzeigen
    [autoit]

    #include <Clipboard.au3>
    #include <WinAPIError.au3>
    #include <WinAPI.au3>
    #include <GDIPlus.au3>

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

    _GDIPlus_Startup()
    $a=_ClipBoard_GetDatax(2)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $hgui=guicreate("")
    guisetstate()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hGraphic = ' & $hGraphic & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $h=_GDIPlus_BitmapCreateFromHBITMAP($a)
    $b=_GDIPlus_GraphicsDrawImage($hGraphic, $h, 0, 0)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $b = ' & $b & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    while sleep(50)
    wend

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

    Func _ClipBoard_GetDatax($iFormat = 1)
    ConsoleWrite('@@ (259) :(' & @MIN & ':' & @SEC & ') _ClipBoard_GetData()' & @CR) ;### Function Trace
    If Not _ClipBoard_IsFormatAvailable($iFormat) Then Return SetError(-1, 0, 0)
    If Not _ClipBoard_Open(0) Then Return SetError(-2, 0, 0)
    Local $hMemory = _ClipBoard_GetDataEx($iFormat)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hMemory = ' & $hMemory & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    return $hMemory
    ;_ClipBoard_Close(); moved to end: traditionally done *after* copying over the memory
    If $hMemory=0 Then
    _ClipBoard_Close()
    Return SetError(-3, 0, 0)
    EndIf

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

    Local $aResult = DllCall("kernel32.dll", "ptr", "GlobalLock", "handle", $hMemory)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $aResult[0] = ' & $aResult[0] & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Local $iLastError = _WinAPI_GetLastError()
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iLastError = ' & $iLastError & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Local $sLastError = _WinAPI_GetLastErrorMessage()
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sLastError = ' & $sLastError & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    Local $pMemoryBlock=$aResult[0]
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $pMemoryBlock = ' & $pMemoryBlock & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    If $pMemoryBlock=0 Then
    _ClipBoard_Close()
    Return SetError(-4,0,0)
    EndIf
    return $pMemoryBlock
    endfunc

    [/autoit]
  • another Spam Mail

    • Andy
    • 29. April 2010 um 12:05

    Mal ohne Witz, das ist die chinesische Art und Weise, den Markt "aufzukrempeln". In Europa wird heute darüber gelacht, genau wie man vor 10 Jahren gelacht hat. Ob man in 10 Jahren immer noch lacht? Inzwischen haben die Chinesen ihre Finger in jedem Wirtschaftsbereich, mit dem Geld zu verdienen ist. Während hierzulande beispielsweise die "Afrikahilfe" in einer Kindergartensammelaktion für "Brot für die Welt" geendet hat, bauen die Chinesen in Afrika Kraftwerke, Eisenbahnen, Städte, Infrastruktur... die langfristigen Verträge für die Ausbeutung von Bodenschätzen werden im Gegenzug abgeschlossen! Genau wie in Australien und Südamerika.

    Die Mail ist definitiv "echt"! Schickt eine Antwortmail und wundert euch....
    Ich selbst hatte schon Besuch von Vertretern aus China die ihre Produkte vorgestellt haben (der Mailabsender ist ein Baustoff-Großhändler bzw Hersteller). Allerdings ging es dort eher um freundliches Geplänkel und meine (möglichen) Kontakte zu großen Bauunternehmern. Einige meiner Kollegen lassen schon seit Jahren in Südostasien Produkte fertigen, hochwertige Qualität zu vernünftigen Preisen und einer LIEFERZEIT, die immer unter der von europäischen Herstellern liegt!

    Wobei Europa kein Markt für "das schnelle Geld" ist. Bis hierzulande über die Art und Weise des Genehmigungsverfahrens für den Bau einer Schnellbahn beratschlagt wird, hat diese Bahn in anderen Ländern schon mehrere Städte miteinander vernetzt und transportiert täglich mehrere Millionen Menschen. Und beschäftigt selbst tausende von Mitarbeitern!
    Hier im Forum hatte man die Frage nach einer Fremdsprache (französisch) gestellt, ich habe beim Elternabend in der Schule meiner Tochter für Mandarin plädiert...

  • Workaround für OperaUser [Update 10.6]

    • Andy
    • 28. April 2010 um 23:15

    Hi zusammen, habe bemerkt, daß der Hotkey für die Umschaltung von Javascript sich mit dem ctrl+q von Scite "beisst". Ist nun im Startpost geändert in ctrl+w

  • GDI+: Wieso sieht das abgespeicherte Bild anders aus als das vorher dargestellte?

    • Andy
    • 28. April 2010 um 16:47

    Wer sagt, daß das gesamte Spielfeld neu gezeichnet werden muss, nur weil sich die Spielfigur einige Pixel weiterbewegt bzw, sich auf der Stelle bewegt?
    Angenommen, dein "Pacman" ist 20x20 Pixel groß und bewegt sich immer 2 Pixel weit. Dann musst du nur die Umgebung an der neuen Position deines Pacmans aus der Hintergrunddatei laden (25x25 Pixel), an die neue Position zeichen und den Pacman drüberzeichnen. Da der Pacman sich nur maximal 2 Pixel weit bewegt, wird die alte Position immer ubermalt.
    Sehr gut und vorallem sehr schnell funktioniert das per _WinApi_BitBlt(), allerdings geht das auch mit GDI+.

    Bezüglich des "falsch" abgespeicherten Bildes kann man ohne Script nicht viel sagen...

  • Felder füllung

    • Andy
    • 28. April 2010 um 15:16

    Ich hatte dir doch folgendes Beispiel geschickt...

    Spoiler anzeigen
    [autoit]

    Dim $controlnr_inhalt[10]
    Dim $controlnr_label[10]
    Dim $inhalt[10]
    Dim $inhalt_old[10]
    Local $summe = 0

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

    $gui = GUICreate("Zahlen eintragen:")
    For $i = 1 To 8
    $controlnr_inhalt[$i] = GUICtrlCreateInput("", 20, $i * 25, 100)
    $controlnr_label[$i] = GUICtrlCreateLabel("0 %", 200, $i * 25, 50)
    $inhalt[$i]=0
    $inhalt_old[$i]=0
    Next

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

    GUISetState()

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

    While 1
    For $i = 1 To 8
    $inhalt[$i] = Number(GUICtrlRead($controlnr_inhalt[$i]))
    If $inhalt[$i] <> $inhalt_old[$i] Then
    $summe = $summe - $inhalt_old[$i] + $inhalt[$i]
    $inhalt_old[$i] = $inhalt[$i]
    For $i = 1 To 8
    If $inhalt[$i] <> 0 Then
    $prozent = Int(100 * $inhalt[$i] / $summe)
    Else
    $prozent = 0
    EndIf
    GUICtrlSetData($controlnr_label[$i], $prozent & " %")
    Next
    EndIf
    Next
    WEnd

    [/autoit]

    du musst doch nur noch die variablen übertragen....

  • FTP-Problem

    • Andy
    • 28. April 2010 um 14:28

    ins fileput() kommt als erster parameter $conn....
    aber teste mal folgendes:
    immer erst GEHEN üben, bevor man RENNEN will

    [autoit]

    #include <FTPEx.au3>
    #include <Array.au3>
    $server=""
    $username=""
    $pass=""

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

    filewrite("testxxx.ftp","test")

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

    $Open = _FTP_Open('MyFTP Control')
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Open = ' & $Open & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    $Conn = _FTP_Connect($Open, $server, $username, $pass)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Conn = ' & $Conn & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    Local $Ftpp = _FTP_FilePut($conn, "testxxx.ftp", "testxxx.ftp",$INTERNET_FLAG_TRANSFER_ASCII)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Ftpp = ' & $Ftpp & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    $list=_Ftp_ListToArray($conn)
    _arraydisplay($list)

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

    Local $Ftpc = _FTP_Close($Open)
    ;filedelete("testxxx.ftp")

    [/autoit]
  • Programm schreiben zum aufnehmen von videos??

    • Andy
    • 28. April 2010 um 08:44

    Ja, denn eigendlich braucht man keine 25 Screenshots auf der Platte bzw bei der Übertragung. Wenn man den Devicecontext des Desktops per bitblt (und dem passenden $iRop) Parameter mit dem vorherigen "Frame" vergleicht, ergibt sich ein "Differenzbild". Überall dort, wo KEINE Änderung vorkommt, bleibt deas Bild schwarz. Gewissermassen werden nur die veränderten Bildteile markiert. Da ein Bitblt in Hardware ausgeführt wird, dauert es nur einige Millisekunden. Die "Kompression" ist eigentlich easy, da die schwarzen "Pixel" einfach nur gezählt werden müssen. Also etwa so: (Schwarz 18344 mal), (Pixelfarbe), (Pixelfarbe), (Pixelfarbe), (Schwarz 312 mal), (Pixelfarbe)....
    Mal angenommen, der Mauszeiger ist 30x40 Pixel groß und ändert die Position, dann würden auf einem 1680x1050 Pixel grossen Bildschirm nur die 30x40 Pixel plus ca. 400Bytes für die "schwarzen" Pixel übertragen werden. Insgesamt also knapp 5kb Daten. Diese "Mini(de)kompression" könnte man aus Geschwindigkeitsgründen als dll ausführen, einmal als 32-Bit, einmal als 64-Bit-dll.
    Andererseits wäre die Frage, was bei einer JPG-Kompression an Dateigröße herauskommen würde, dann könnte man alles komplett in AutoIt machen...

  • Programm schreiben zum aufnehmen von videos??

    • Andy
    • 27. April 2010 um 20:04
    Zitat

    würde das video nicht ruckeln also zuwenig fps haben?

    mit angenommenen 25 fps (Videoformat) kannst du dir ausrechnen wie lange ein Schreibzyklus eines Screencaptures() dauern darf. 1000ms/25=40ms
    Da sich auf dem Desktop idR ausser Mauszeigern und ggf einigen Buchstaben nicht viel bewegt, ist enormes Einsparpotential vorhanden. Es muss nur z.B. jeder 10. Frame als Vollbild gespeichert werden, bei den dazwischenliegenden Frames werden nur die Änderungen im Bild gespeichert/abgespielt.
    Ein simpler "Video-Recorder/Abspieler". Wäre mal eine schöne Aufgabe für ein µIt!

  • Programmier-/Skriptsprachen außer AutoIt

    • Andy
    • 27. April 2010 um 14:31
    Zitat

    An alle, die Assembler programmieren: Programmiert ihr damit richtig

    Ja, man schreibt den Code, jagt ihn durch einen Assembler und startet dann die EXE bzw bindet die DLL ein.

    Zitat

    verwendet ihr inline-Assembler

    ja,embedded, FASM per AutoIt^^

    Zitat

    oder nutzt ihr es nur zum deassemblieren von Programmen.

    Disassembler zum "herausfinden von Adressen" zu benutzen ist in etwa so wie AutoIt auf msgbox() zu reduzieren.

    @tince, welche(n) Assembler bzw IDE (falls man eine braucht) nutzt du?

  • Bild aus Zwischenablage in GUI kopieren

    • Andy
    • 27. April 2010 um 12:49
    Zitat

    Mein Problem daran ist nur, das ich ja keine Datei speichern kann.

    Wieso? Das wäre doch das einfachste....mit _GDIPlus_BitmapCreateFromFile () hat man dann das Handle. Aber es geht auch anders....

    Zitat

    Wie mach ich dann daraus ein Bitmap-Objekt?

    das ist sehr einfach, du erstellst ein Bitmapobjekt und "kopierst" diese Daten einfach dort hinein....
    Ich hatte dazu folgende Funktion erstellt mit dem Ziel, sämtliche relevanten Zugriffe auf Bitmaps mit einem Schlag "abzuwatschen". Das heisst, ein DeviceContext zum blitten, ein Pointer auf die Bitmapdaten für direkte Manipulation der Farben bzw Pixel, und natürlich das Handle für Bearbeitung per GDI. Mit einfachen Abänderungen kann man auch Monochrom-, 8-Bit, 24-Bit usw Bitmaps erstellen.

    [autoit]

    Func _CreateNewBmp32($iwidth, $iheight, ByRef $ptr, ByRef $hbmp) ;erstellt leere 32-bit-Bitmap; Rückgabe $HDC und $ptr und handle auf die Bitmapdaten
    $hcdc = _WinAPI_CreateCompatibleDC(0) ;Desktop-Kompatiblen DeviceContext erstellen lassen
    $tBMI = DllStructCreate($tagBITMAPINFO) ;Struktur der Bitmapinfo erstellen und Daten eintragen
    DllStructSetData($tBMI, "Size", DllStructGetSize($tBMI) - 4);Structgröße abzüglich der Daten für die Palette
    DllStructSetData($tBMI, "Width", $iwidth)
    DllStructSetData($tBMI, "Height", -$iheight) ;minus =standard = bottomup
    DllStructSetData($tBMI, "Planes", 1)
    DllStructSetData($tBMI, "BitCount", 32) ;32 Bit = 4 Bytes => AABBGGRR
    $adib = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', $DIB_RGB_COLORS, 'ptr*', 0, 'ptr', 0, 'uint', 0)
    $hbmp = $adib[0] ;hbitmap handle auf die Bitmap, auch per GDI+ zu verwenden
    $ptr = $adib[4] ;pointer auf den Anfang der Bitmapdaten, vom Assembler verwendet
    ;_arraydisplay($adib)
    _WinAPI_SelectObject($hcdc, $hbmp) ;objekt hbitmap in DC
    Return $hcdc ;DC der Bitmap zurückgeben
    EndFunc ;==>_CreateNewBmp32

    [/autoit]

    Für dasTopic heisst das, aus den Bitmapdaten der Zwischenablage die relevanten Daten (Höhe, Breite, Bitcount usw) auslesen und damit die "neue" Bitmap erstellen. Dann die Bitmapdaten (die "Pixel") aus der Zwischenablage an die Position des Pointers (Anfang der Bitmapdaten) kopieren, und per Handle weiterverarbeiten.

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

    • Andy
    • 27. April 2010 um 11:58

    Ja, du bis sehr dicht am Ziel, allerdings brauchst du nichtmal AutoIt dazu^^
    Da dir der Maushover ja die Version zeigt, kannst du Windows veranlassen, diese zu starten, und zwar per Rechtsklick. Entweder trägst du ins "Rechtsklickmenü" deine Autocad-versionen ein (etwas Aufwand), oder startest diese mit dem "Senden an..." . Da musst du die Verknüpfung zur entsprechenden Autocadversion nur in den "SendTo"-Ordner kopieren, damit sie in dem "Senden an..."-Menü erscheint

    /Edit/ Man könnte natürlich einen "DWG-Autostarter" ins Rechtsklickmenü stellen, ob das schneller/einfacher geht, ist fraglich....
    oder man erstellt direkt ein Script, daß alle *.dwg´s auf der Platte scannt, in einer Liste darstellt und von dort mit der entsprechenden Version startet

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

    • Andy
    • 26. April 2010 um 14:48

    Ich hatte dir ein Script gepostet mit dem Hinweis, die dazu passende *.dwg-Datei ins Verzeichnis des Scriptes zu kopieren und dann das Script auszuführen.
    Bei mir funktioniert das einwandfrei!
    Bei -1 erhält man den Inhalt des Tooltips, also das, was du in deinem geposteten Beispielbild auslesen möchtest.

    Ersetze mal in der Klammer von NameSpace() die Null durch den Pfad zu deiner *.dwg-Datei.

    [autoit]

    $sDWGfile = "d.dwg"
    $oApplication = ObjCreate("Shell.Application")
    $oFolder = $oApplication.NameSpace($Pfad_zum_dwgfile)

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

    $oItem = $oFolder.ParseName($sDWGfile)
    $value = $oFolder.GetDetailsOf($oItem, -1)
    ConsoleWrite("+Index: " & $value & @CRLF)

    [/autoit]
  • Error Logging mit AutoIT

    • Andy
    • 26. April 2010 um 13:38
    Zitat

    Wir erkennen die Fehler anhand aufpoppender Fehlermeldungen

    Na also, mit dem Handle des Fehler-Fensters bzw dessen Namen kann man schon etwas anfangen. Weiterhin besteht die Möglichkeit den Fehlertext direkt aus dem Fenster auszulesen, ggf per ctrl+c im Script kopieren und dann aus der Zwischenablage einlesen. Das AutoIt-Window-Info-Tool sollte da weiterhelfen. Das eigentliche Logging und die Auswertung (welche Fehler traten wie oft und wann auf) ist dann nur noch Fleißarbeit...

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

    • Andy
    • 26. April 2010 um 12:41

    Der Folder bezeichnet das Verzeichnis der Datei, kopiere mal die *.dwg ins Scriptverzeichnis und schau dir die Ausgabe an

    Spoiler anzeigen
    [autoit]

    $sDWGfile = "xxxx.dwg"

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

    $oApplication = ObjCreate("Shell.Application")
    $oFolder = $oApplication.NameSpace(@scriptdir)

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

    $oItem = $oFolder.ParseName($sDWGfile)

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

    For $i = -1 To 100
    $value = $oFolder.GetDetailsOf($oItem, $i)
    If $value Then ConsoleWrite("+Index: " & $i & @CRLF & $value & @CRLF)
    Next

    [/autoit]
  • Text Datei Editieren

    • Andy
    • 26. April 2010 um 11:43

    erste Anlaufstelle ist die Suchfunktion, Threads zu diesem Thema gibts reichlich z.b. HIER

  • Probleme mit meinem Text Template Tool

    • Andy
    • 25. April 2010 um 22:04
    Zitat

    dass bei dieser ClipBoard-Lösung der STRG+V zu spät im Programm ankommt und somit der alte Wert der Zwischenablage wieder geschrieben wurde.

    das würde nichts anderes bedeuten, als das dein "neuer" Text nie in der Zwischenablage angekommen ist....

    bau doch mal folgendes in dein Script ein:
    Ich meine die Ermittlung der zzt. aktiven Fenster und deren Aktivierung

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    ;script aus scite mit F5 starten

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

    Opt("WinTitleMatchMode", 2)
    ;Opt("SendKeyDelay", 100)

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

    Send("^{end}") ;cursor in Scite nach unten im aktuellen script
    Send("{ENTER}") ;neue zeile, schreibt in die letzte zeile des scriptes

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

    $hwnd = WinGetHandle("[active]") ;aktives fenster ist scite
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hwnd = ' & $hwnd & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    Dim $aTextTemplate[10]
    For $i = 0 To 9 ;array füllen
    $aTextTemplate[$i] = "TEST" & $i & @CRLF
    Next
    _ArrayDisplay($aTextTemplate)
    ClipPut("OLD_TEXT" & @CRLF) ;alten text ins clipboard schreiben
    $sOldClip = ClipGet() ;alten ClipBrd Eintrag sichern
    MsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @LF & '$sOldClip' & @LF & @LF & 'Return:' & @LF & $sOldClip) ;### Debug MSGBOX

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

    For $i = 0 To 9
    ClipPut($aTextTemplate[$i]) ;TextTemplate ins ClipBrd schreiben (1 = Category; 2 = Text)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : ClipPut($aTextTemplate) = ' & ClipPut($aTextTemplate[$i]) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    ;MsgBox(262144, 'Debug line ~' & @ScriptLineNumber, 'Selection:' & @LF & 'clipget()' & @LF & @LF & 'Return:' & @LF & ClipGet()) ;### Debug MSGBOX
    $b = WinActivate($hwnd)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $b = ' & $b & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    $a = WinWaitActive($hwnd, "");Ursprungs-Programm in Vordergrund holen
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    Send("^v") ;ClipBrd Inhalt einfügen
    ClipPut($sOldClip) ;alten ClipBrd Eintrag schreiben
    ;GUISetState(@SW_HIDE, $hMainSpecialPaste) ;Text Template Auswahl Fenster verstecken
    Send("^v") ;ClipBrd Inhalt einfügen
    Next

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

    Btw, kann es sein, daß auf euren Rechnern ein Keylogger mitläuft? Ich meine eines dieser altmodischen verbotenen "ChefichhabdawasumdieProduktivitätderMitarbeiterzubestimmen"-Tools....

  • Probleme mit meinem Text Template Tool

    • Andy
    • 25. April 2010 um 17:18

    hast du $aTextTemplate[2] mal in eine Msgbox oder Console ausgegeben um rauszufinden ob der richtige Text drinsteht?
    wenn du winwaitactive() benutzt, kannst du dir das sleep() sparen...

  • Lüfterdrehzahl auslesen

    • Andy
    • 25. April 2010 um 15:29
    Zitat

    hat leider 2 kleine Fehler:

    das ist aber schade, ist mir in den letzten Jahren der(ziemlich intensiven) Nutzung noch nie aufgefallen, wen es stört, der kann ja ein Errorhandling einbauen.

  • TXT mit aktuellem Datum finden

    • Andy
    • 25. April 2010 um 13:41
    Zitat

    vor lauter Bäumen den Wald nicht mehr sehen

    Nein, du siehst nicht mal den Baum...
    Anleitung zum Baum sehen in Scite:
    "Problematischen" Ausdruck im Script markieren, STRG+SHIFT+d drücken, falls diese Zeile im Script nicht ausgeführt wird, so lange zeilenweise nach oben kopieren, bis sie ausgeführt wird! Der Baum erscheint ....

    Spoiler anzeigen
    [autoit]

    Local $datum = @MDAY & @MON & @YEAR

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

    MsgBox (64,"Datum: ", $datum); Box zum testen ...

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

    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '@ScriptDir & "\Data" & $datum & ".txt"' & @lf & @lf & 'Return:' & @lf & @ScriptDir & "\Data" & $datum & ".txt") ;### Debug MSGBOX
    Select
    Case FileExists (@ScriptDir & "\Data" & $datum & ".txt")
    sleep (10)
    Case Else
    MsgBox (64,"Fehler", "Datei nicht vorhanden")
    ;ExitLoop
    EndSelect

    [/autoit]

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™