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

Beiträge von ip_trainer

  • TAPI eingehende Anrufe überwachen

    • ip_trainer
    • 21. Juli 2012 um 00:08

    Hallo zusammen,

    hat jemand eine Ahnung wie man mit AutoIT die TAPI-Schnittstelle eines Telefons überwachen kann?

    Einen Anruf abzusetzen scheint nicht so schwierig zu sein (über die TAPI-Klasse - dazu gibt es hier im Forum schon einen Ansatz):

    Spoiler anzeigen
    [autoit]

    ; Setup TAPI
    $sNumber = '0123369874'

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

    Global $bLineFound = False
    Const $LINEADDRESSTYPE_PHONENUMBER = 0x1;
    Const $LINEMEDIAMODE_INTERACTIVEVOICE = 0x4;
    Global $oTAPI = ObjCreate("TAPI.TAPI")

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

    If IsObj($oTAPI) Then
    $oTAPI.Initialize
    Global $oAddresses = $oTAPI.Addresses

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

    Global $bLineFound = False
    For $oAddress In $oAddresses
    ConsoleWrite($oAddress.AddressName&@CRLF)
    If $oAddress.AddressName = "CAP TAPI" Then
    $bLineFound = True
    ExitLoop
    EndIf
    Next
    EndIf

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

    ; Make a call
    $oMyCall = $oAddress.CreateCall($sNumber, $LINEADDRESSTYPE_PHONENUMBER, $LINEMEDIAMODE_INTERACTIVEVOICE)
    $oMyCall.Connect (false)

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


    Aber mit dem Abfangen der eingehenden Anrufe scheint es wohl nicht so einfach zu sein, zumindest konnte die Frage nie beantwortet werden.

    Hat jemand vielleicht einen Lösungsansatz oder Erfahrung damit?

    Vielen Dank für Hilfe!!!
    Trainer

  • Color-Picker in Scite-Kontext-Menü einbinden

    • ip_trainer
    • 15. Juni 2012 um 17:56

    :whistling: oh oh...

    Danke!

  • Kopierschutz

    • ip_trainer
    • 15. Juni 2012 um 14:30

    Hm, du scheinst nicht auf meine Fragen eingehen zu wollen - aber vielleicht beherzigst du ja was davon.

    Unterm Strich bleibt aber trotzdem zu sagen, dass die Aussagen von Marsi et al. prinzipiell richtig sind: wer den Quellcode offenlegt, kann deine Sperren ausbauen. Ob du nun 1, 2 oder 10 Programme verwendest. Allerdings kann ich mir nicht vorstellen, dass du das nicht einsiehst bzw. verstehst - also gehe ich mal davon aus, dass du dieses Risiko als gegeben hinnimmst und alles andere so gut wie möglich absichern willst - und da spricht meiner Meinung nach, da bleibe ich dabei, auch nichts dagegen (schließlich wird nicht jeder, der dein Programm benutzen will gleich einen Decompilier heranziehen).

    Mein Fazit:
    - Falls jemand dein Programm knacken will, so wird er es schaffen
    - Falls nicht, kannst du eine ungewollte Bedienung verhindern bzw. erschweren
    - 2 Programme bringen dich - was die Sicherheit angeht - nicht weiter
    - Ein dauerhaftes Überprüfen bringt ziemlich sicher auch nichts (außer Serverlast)

    Gruß
    Trainer

  • Color-Picker in Scite-Kontext-Menü einbinden

    • ip_trainer
    • 15. Juni 2012 um 13:27

    Super BugFix, vielen Dank!

    Du hast nicht zufällig einen Link, wo solche Sachen für Scite beschrieben sind? Ich habe damals sehr lange gesucht, aber das einzig brauchbare was ich gefunden habe, war das hier (und das ist auch nur bedingt anwendbar): http://docs.autodesk.com/3DSMAX/14/ENU/…umber=d28e24823 .

    Oder steht das etwa doch in der Scite-Hilfe und ich finde es nur nicht?

  • Kopierschutz

    • ip_trainer
    • 15. Juni 2012 um 01:51
    Zitat

    Es macht also auch keinen Sinn irgendwas zu verschlüsseln was in AutoIt entschlüsselt vorliegen muss.
    In dem Fall lasse ich es mir, egal wie unglaublich komplex die verschlüsselung war, einfach in die Konsole schreiben.

    Warum gehst du davon aus, dass alles was verschlüsselt wird in Autoit unverschlüsselt vorliegen muss? Der Schlüssel welcher zur Kodierung der Zugangsdaten verwendet wird, darf natürlich nicht im Quellcode gespeichert sein, sondern muss entweder ebenfalls eingegeben oder (z.B. nach einer aufgebauten SSL-Verbindung) vom Server geholt werden. Da gibt es schon noch Möglichkeiten.

    Von daher macht Verschlüsselung schon manchmal Sinn, auch wenn man von der Grundannahme ausgeht, dass der Quellcode NICHT wirklich sicher ist. Es ist dann trotzdem ein mehr an Sicherheit vorhanden.
    Alles andere wäre ein wenig schwarz-weiß gemalt, finde ich zumindest.

    Gruß
    Trainer

  • Text nach Excel exportieren

    • ip_trainer
    • 15. Juni 2012 um 01:40

    Hi,

    hab zuerst nicht gecheckt, dass du mit Zelle Spalte meinst.. 8o.
    Aber ja, es gefällt - ich denke ich werde das in Zukunft öfter mal brauchen können.

    Vielen Dank dafür! :thumbup:

  • Kopierschutz

    • ip_trainer
    • 15. Juni 2012 um 01:11

    Wie hast du denn die Authentifizierung gelöst? Via GET, POST, ganz anders?
    Und schickst du die Infos im Klartext rüber, verschlüsselt oder unverschlüsselt?
    Hast du auf der PHP-Seite alles richtig escaped bzw. gegen Injections etc. gesichert?

    Nicht dass du am Ende eine kleine Tür zu- und 5 große Tore aufgemacht hast :D ...

  • Color-Picker in Scite-Kontext-Menü einbinden

    • ip_trainer
    • 15. Juni 2012 um 01:05

    Hi zusammen,

    im englischsprachigen Forum hat jemand einen ColorPicker für Scite zur Verfügung gestellt:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Run_Tidy=y
    #Tidy_Parameters=/rel
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/so
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Misc.au3>
    #include <SendMessage.au3>
    Opt("WinTitleMatchMode", 2)
    Global $sDefaultColor = 0
    Global $iMode = 1
    Global Const $WM_COPYDATA = 0x004A
    If $cmdline[0] > 0 Then
    $sDefaultColor = $cmdline[1]
    EndIf
    If StringLeft($sDefaultColor, 2) <> "0x" Then
    $iMode = 0
    $sDefaultColor = "0x" & $sDefaultColor
    EndIf
    $sReturn = _ChooseColor(2, $sDefaultColor, 2)
    If $sReturn = -1 Then Exit (1)
    If Not $iMode Then
    $sReturn = StringMid($sReturn, 3)
    EndIf
    _SciTE_InsertText($sReturn)
    Func _SciTE_InsertText($sString)
    Return _SciTE_Send_Command(0, WinGetHandle("DirectorExtension"), "insert:" & $sString)
    EndFunc ;==>_SciTE_InsertText
    Func _SciTE_Send_Command($hHandle, $hSciTE, $sString)
    Local $ilParam, $tData
    If StringStripWS($sString, 8) = "" Then
    Return SetError(2, 0, 0) ; String is blank.
    EndIf
    $sString = ":" & Dec(StringTrimLeft($hHandle, 2)) & ":" & $sString
    $tData = DllStructCreate("char[" & StringLen($sString) + 1 & "]") ; wchar
    DllStructSetData($tData, 1, $sString)
    $ilParam = DllStructCreate("ptr;dword;ptr") ; ulong_ptr;dword;ptr
    DllStructSetData($ilParam, 1, 1) ; $ilParam, 1, 1
    DllStructSetData($ilParam, 2, DllStructGetSize($tData))
    DllStructSetData($ilParam, 3, DllStructGetPtr($tData))
    _SendMessage($hSciTE, $WM_COPYDATA, $hHandle, DllStructGetPtr($ilParam))
    Return Number(Not @error)
    EndFunc ;==>_SciTE_Send_Command

    [/autoit]

    ..und auch gleich gezeigt, wie man ihn in Scite einbindet (nachdem man die .exe in das entsprechende Verzeichnis kopiert hat). Aktuell ist das Aufrufen an eine Tastenkombination (z.B. STRG+ALT+C) gekoppelt:

    Code
    # 43 Color Chooser
    command.name.43.*=Color Chooser
    command.43.*="$(SciteDefaultHome)\ColorChooser\ColorChooser.exe" $(CurrentSelection)
    command.shortcut.43.*=Ctrl+Alt+C

    Weiß jemand, wie man den Befehl in ein selbst gestricktes Scite-Kontext-Menü integrieren kann?

    Eintrag in den SciTEUser.properites:

    Code
    user.context.menu=||Bookmark an/aus|IDM_BOOKMARK_TOGGLE|Alle Bookmarks löschen|IDM_BOOKMARK_CLEARALL||
    |Hier auf/zuklappen|IDM_EXPAND|>> Alles auf/zuklappen|IDM_TOGGLE_FOLDALL|||Go|303|Compile|301|Stop Executing|304||
    |User-Properties öffnen|IDM_OPENUSERPROPERTIES|Global-Poperties öffnen|IDM_OPENGLOBALPROPERTIES|Scite-Config bearbeiten|1114

    Danke für Hilfe.

    Gruß
    Trainer

  • Kopierschutz

    • ip_trainer
    • 15. Juni 2012 um 00:40

    Hi,

    ich denke ich verstehe schon, was du erreichen willst.

    Gegen das Decompilieren kannst du dich (wie hier im Forum schon zilliardenfach beschrieben) nicht wirklich schützen.

    Aber ich denke, dass du das mittlerweile verstanden hast - und wenn es dir darum geht den Programmbenutzer an einen Linzenzcode oder ein Login zu binden (ohne jetzt erstmal Hacker und Cracker ausschließen zu wollen), dann wäre die MYSQL-Sache schon ein Weg. Dann könntest du z.B. beim Programmstart ein Loginfenster bereitstellen, in welches der Benutzer seine Daten eingeben muss (und die werden dann mit dem Server abgeglichen).

    Aber wenn die Daten an Dritte weitergegeben werden oder das Ding decompiliert und die Sperre ausgebaut wird, dann bist du halt machtlos.

    Gruß
    Trainer

  • PDF einbinden klappt nicht

    • ip_trainer
    • 15. Juni 2012 um 00:11

    Hi Maddin,

    hier mal ein Beispiel, wie man es mit dem IE lösen könnte, aber um es gleich zu sagen: der Effekt ist der gleiche :( ...

    Obwohl die GUI keine Tabs etc. hat, reagiert sie nicht mehr, sobald man einmal auf das PDF geklickt hat (edit: eigentlich reagiert sie von Anfang an auf gar nichts).
    Und seltsamerweise funktioniert auch dieses Skript bei mir nur mit der ersten Zeile, ansonsten wird das PDF in einem neuen Fenster geöffnet und im IE "Navigation abgebrochen" angezeigt.
    Fazit: es scheint also irgendwie direkt am Adobe-Plugin zu liegen - das stielt der GUI irgendwie den Focus oder so. Von daher wäre der Foxit vielleicht wirklich die beste Wahl.
    Hat jemand ein Beispiel dafür?

    Gruß
    Trainer

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_UseX64=n

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

    #include-once
    #include <GUIConstantsEx.au3>
    #include <IE.au3>

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

    $oIE = _IECreateEmbedded ()
    GUICreate("Test", 800, 600)
    $test = GUICtrlCreateObj($oIE, 10, 10, 750, 550)
    GUISetState()

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

    _IENavigate ($oIE, @ScriptDir & "\Test.pdf")

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    [/autoit]
  • PDF einbinden klappt nicht

    • ip_trainer
    • 14. Juni 2012 um 03:04

    Hi,

    füge mal das ganz oben in's Skript ein, dann funktioniert es wahrscheinlich.

    [autoit]

    #AutoIt3Wrapper_UseX64=n

    [/autoit]

    Ups, ich sehe gerade, dass das Anzeigen bei dir ja grundsätzlich funktioniert. Bei mir klappt es auf Grund Windows 7 (64Bit) ohne die Zeile gleich überhaupt nicht.

    Dann wird das wohl nicht die Lösung sein... aber vielleicht wundert sich ja mal jemand, warum er kein Objekt erstellen kann und kann dann mit diesem Hinweis was anfangen 8) .

    Gruß Trainer

  • Folds erstellen?

    • ip_trainer
    • 14. Juni 2012 um 02:49

    Hi,

    was du suchst ist vermutlich

    [autoit]

    #Region
    ;zu versteckender Code
    #EndRegion
    ;Platzhalter

    [/autoit]

    Der Komment unter #EndRegion bewirkt, dass danach noch Leerzeilen zum Nachfolge-Code angezeigt werden, das ist (zumindest bei meinen Einstellungen) sonst nicht der Fall...

    Gruß
    Trainer

  • Automatische PDF-Passworteingabe

    • ip_trainer
    • 14. Juni 2012 um 02:02

    Hi zusammen,

    ich habe ein kleines Programm geschrieben, welches die Passworteingabe bei PDF-Dateien automatisieren kann. Das wollte ich euch nicht vorenthalten, da der ein oder andere vielleicht auch z.B. Rechnungen via E-Mail im PDF-Format bekommt, die dann noch mit der Kundennummer oder so als Passwort "geschützt" sind, was - wie ich finde - irgendwie nervt :wacko: .

    Zur Funktionsweise: die Passwörter werden im Format "Alias : Passwort" zeilenweise (im Klartext) in einer Text-Datei gespeichert (um den Doppelpunkt sind eigentlich keine Leerzeichen, aber wenn ich die wegmache erstellt mir der Editor automatisch einen Smiley :P ). Sollte nur eine Zeile vorhanden sein, wird standardmäßig automatisch durchgeloggt, ansonsten wird eine GUI zur Auswahl angeboten. Es stehen auch noch die Optionen "Immer GUI anzeigen (always_gui)" und "Kein Tray Symbol anzeigen (no_icon)" zur Verfügung, welche als Parameter übergeben werden können.

    Im Prinzip läuft es schon, ich habe nur mal noch eine Frage bzgl. der "Eleganz" (was die Programmierung betrifft) :D .
    Im folgenden Teil erstelle ich dynamisch die Buttons über welche die Passwörter ausgewählt werden können:

    [autoit]

    For $line In $passwords
    $couple = StringSplit($line, ":", 3)
    $buttons[$line_counter] = GUICtrlCreateButton($couple[0], 20, 60 + (37 * $line_counter), 190, 32)
    $line_counter += 1
    Next

    [/autoit]

    Und in diesem Teil überwache ich die GUI:

    [autoit]

    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    [...]
    Case $msg <> 0

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

    $shift = 4

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

    If $msg >= $shift And $msg <= $shift + $anz_passwords Then

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

    $couple = StringSplit($passwords[$msg - $shift], ":", 3)
    $password = StringStripWS($couple[1], 3)

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

    WinActivate($pass_win_handle)
    Send($password)
    Send("{ENTER}")
    GUISetState(@SW_HIDE)
    Sleep(2000)

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

    EndIf
    EndSelect

    [/autoit]

    Diesen Teil habe ich - wie man sehen kann - irgendwie nicht so smooth hinbekommen. Ich habe festgestellt, dass der erste Button $msg =4 erzeugt, und alle weiteren eben +1. Auf diese Weise werden quasi die Buttons auf das Passwort-Array gemappt. Hat jemand vielleicht einen Vorschlag, wie man das besser machen kann?

    Hier das ganze Programm:

    Spoiler anzeigen
    [autoit]

    ;Ausstiegsoption (falls kein icon angezeigt wird) mit STRG + SHIFT + Q bzw. STRG + ALT + Q
    HotKeySet("^+q", "exit_now")
    HotKeySet("^!q", "exit_now")

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

    ;Nur einen Start zulassen
    If _Singleton("pdf_password_helper", 1) = 0 Then Exit

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

    ;Includes
    #include-once
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include "Array.au3"
    #include <Misc.au3>
    #include <File.au3>

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

    ;Fenster-Titel-Erkennungsmethode (auch Teil-Texte erkennen)
    AutoItSetOption("WinTitleMatchMode", 2)

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

    ;Tray-Menü anpassen
    Opt("TrayOnEventMode",1)
    Opt("TrayMenuMode",1)
    TraySetIcon(@WindowsDir & "\system32\shell32.dll", 45)

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

    $exit = TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1, "exit_now")

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

    ;GUI-Anzeigemodus (Standard) setzen
    $always_show_gui = False

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

    ;-----------------------------------------------------------------
    ;Kommandozeilen-Parameter (in beliebiger Reihenfolge)
    ;-----------------------------------------------------------------
    ;no_icon: Tray-Icon verstecken
    ;always_gui: GUI immer anzeigen, auch wenn nur ein Passwort in der Liste steht (sonst direkt durchloggen)

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

    If $CmdLine[0] >= 1 Then
    If _ArraySearch($CmdLine, "no_icon") <> -1 Then Opt("TrayIconHide", 1)
    If _ArraySearch($CmdLine, "always_gui") <> -1 Then $always_show_gui = True
    EndIf
    ;-----------------------------------------------------------------

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

    ;Passwort-Datei
    $password_file = @ScriptDir & "\passwords.txt"
    If Not FileExists($password_file) Then FileWrite($password_file, "Passwort 1:streng geheim" & @CRLF & "Passwort 2:auch streng geheim")

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

    ;Passwörter einlesen
    Dim $passwords
    _FileReadToArray($password_file, $passwords)

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

    If Not IsArray($passwords) Or (IsArray($passwords) And $passwords[0] = 0) Then
    MsgBox(64, "Fehler", "Es konnten keine Passwörter gefunden werden. Das Programm wird beendet.")
    Exit
    Else
    $anz_passwords = $passwords[0]

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

    ;Erste Zeile löschen und Array für Buttons dimensionieren
    _ArrayDelete($passwords, 0)
    Dim $buttons[$anz_passwords]

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

    EndIf

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

    ;Ggf. GUI erstellen
    If $anz_passwords > 1 Or $always_show_gui = True Then
    GUICreate("", 230, 120 + (25 * $anz_passwords), -1, -1, -1, $WS_EX_TOPMOST)
    GUISetBkColor(0xFEFFDF)
    GUICtrlCreateLabel("Bitte wählen Sie ein Passwort aus:", 10, 22, 220)
    GUICtrlSetFont(-1, 9)
    $line_counter = 0

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

    For $line In $passwords
    $couple = StringSplit($line, ":", 3)
    $buttons[$line_counter] = GUICtrlCreateButton($couple[0], 20, 60 + (37 * $line_counter), 190, 32)
    $line_counter += 1
    Next

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

    EndIf

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

    ;Auf das Login-Fenster warten
    While 1

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

    If ProcessExists("AcroRD32.exe") And WinExists("Kennwort") Then

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

    $pass_win_handle = WinGetHandle("Kennwort")

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

    If $anz_passwords = 1 And $always_show_gui = Not True Then

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

    $couple = StringSplit($passwords[0], ":", 3)
    $password = StringStripWS($couple[1], 3)

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

    WinActivate($pass_win_handle)
    Send($password)
    Send("{ENTER}")
    Sleep(2000)

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

    Else
    ;GUI anzeigen
    GUISetState()

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

    ;GUI überwachen
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    WinWaitClose($pass_win_handle)

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

    Case $msg <> 0

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

    $shift = 4

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

    If $msg >= $shift And $msg <= $shift + $anz_passwords Then

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

    $couple = StringSplit($passwords[$msg - $shift], ":", 3)
    $password = StringStripWS($couple[1], 3)

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

    WinActivate($pass_win_handle)
    Send($password)
    Send("{ENTER}")
    GUISetState(@SW_HIDE)
    Sleep(2000)

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

    EndIf
    EndSelect

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

    EndIf

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

    EndIf

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

    Sleep(100)

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

    WEnd

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

    ;----------------------------------------
    Func exit_now()

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

    MsgBox(64, "Hinweis", "Das Programm wird nun beendet", 1)
    Exit

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

    EndFunc

    [/autoit]


    Gruß Trainer

  • Windows-Datei-ID auslesen

    • ip_trainer
    • 22. Mai 2012 um 22:12

    Das sieht ja genau nach dem aus, was ich gesucht habe :P ...

    Vielen Dank!
    Trainer

  • Windows-Datei-ID auslesen

    • ip_trainer
    • 22. Mai 2012 um 21:42

    Hi AspirinJunkie,

    tja, so wie es aussieht hast du wohl Recht :( ...

    Nach einigem "Nachforschen" via Google und diesem Thread hier (http://www.fachinformatiker.de/c-c/28962-eind…-ermitteln.html) scheint die einzige Lösung zu sein "Handles" festzulegen, die für die Laufzeit des Skripts gelten.

    Was ich machen wollte war ein Verzeichnis und darin enthaltene Dateien (inkl. Unterverzeichnisse) zu überwachen, sprich: welche Datei wurde umbenannt, inhaltlich verändert, verschoben (und wohin innerhalb des Verzeichnisses), gelöscht, neu erstellt,...

    Ich denke ich werde mal versuchen das zu überwachende Verzeichnis zu durchlaufen und für jede Datei ein File-Handle erstellen zu lassen und dann die Informationen "Dateipfad, Handle und Datum der letzten Änderung" in einem Array ablegen zu lassen. Ob mich das jetzt allerdings weiterbringt, ?( ...

    Oder hast du / jemand noch eine bessere Idee?

    Gruß
    Trainer

  • Windows-Datei-ID auslesen

    • ip_trainer
    • 22. Mai 2012 um 19:38

    Hi zusammen,

    weiß jemand ob/wie es geht, die zu einer Datei gehörige Dateisystem-ID (GUID ?) auszulesen?

    Vielen Dank
    Trainer

  • DLNA / UPNP Client mit Autoit

    • ip_trainer
    • 14. Mai 2012 um 00:21

    Hallo zusammen,

    hat jemand von euch schon Erfahrungen gesammelt, wie man per Autoit mit einem DLNA-Server (zum Beispiel dem iCord) kommunizieren kann (also z.B. Streamen oder eine Liste der vorhandenen Medien anzeigen, etc.)?

    Auf dieser Seite hier (http://www.autoitscript.com/forum/topic/57…es-in-side-out/) wird zumindest schon mal gezeigt, wie man die UPNP-Devices auflisten kann, und die Hilfestellung von Microsoft dazu ist auch vorhanden (aber in diesem Fall leider recht dürftig an Beispielen).

    Mit dem auf der Seite aufgeführten Skript wird der iCord immerhin schon mal gefunden und man kann sich die Infos zum Gerät anzeigen lassen:

    Spoiler anzeigen
    [autoit]

    ; http://msdn2.microsoft.com/en-us/library/aa382297.aspx

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

    Dim $deviceFinder
    Dim $DeviceType
    Dim $Devices
    Dim $Device
    Dim $strDescDocURL

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

    $DeviceFinder = ObjCreate( "UPnP.UPnPDeviceFinder" )
    $DeviceServices = ObjCreate( "UPnP.UPnPServices" )
    $DeviceService = ObjCreate( "UPnP.UPnPService" )
    $Device = ObjCreate( "UPnP.UPnPDevice" )

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

    $DeviceType = "upnp:rootdevice"
    $Devices = $DeviceFinder.FindByType($DeviceType,0)

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

    ;$strDescDocURL = $DescriptionDoc.GetDocumentURL
    ConsoleWrite( $strDescDocURL & @LF)

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

    ConsoleWrite( "Found # :" & $Devices.Count & " Devices" & @LF & @LF)
    ;ConsoleWrite( "Services # :" & $DeviceService.Count & " Devices" & @LF & @LF)

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

    For $DeviceObj in $Devices
    ConsoleWrite("Children " & $DeviceObj.Children & @CRLF)
    ConsoleWrite("Description " & $deviceObj.Description& @CRLF)
    ConsoleWrite("FriendlyName " & $deviceObj.FriendlyName & @CRLF)
    ConsoleWrite("HasChildren " & $deviceObj.HasChildren & @CRLF)
    ConsoleWrite("IsRootDevice " & $deviceObj.IsRootDevice & @CRLF)
    ConsoleWrite("ManufacturerName " & $deviceObj.ManufacturerName & @CRLF)
    ConsoleWrite("ManufacturerURL " & $deviceObj.ManufacturerURL & @CRLF)
    ConsoleWrite("ModelName " & $deviceObj.ModelName & @CRLF)
    ConsoleWrite("ModelNumber " & $deviceObj.ModelNumber & @CRLF)
    ConsoleWrite("ModelURL " & $deviceObj.ModelURL & @CRLF)
    ConsoleWrite("ParentDevice " & $deviceObj.ParentDevice & @CRLF)
    ConsoleWrite("PresentationURL " & $deviceObj.PresentationURL & @CRLF)
    ConsoleWrite("RootDevice " & $deviceObj.RootDevice & @CRLF)
    ConsoleWrite("SerialNumber " & $deviceObj.SerialNumber & @CRLF)
    ConsoleWrite("Services " & $deviceObj.Services & @CRLF)
    ConsoleWrite("Device URN Type " & $deviceObj.Type & @CRLF)
    ConsoleWrite("UniqueDeviceName " & $deviceObj.UniqueDeviceName & @CRLF)
    ConsoleWrite("Product Code - UPC " & $deviceObj.UPC & @CRLF)
    ConsoleWrite(@LF)
    Next

    [/autoit]


    Ich versuche mal noch mehr hinzubekommen, aber falls jemand schon ein paar Code-Schnipsel hätte, wäre das natürlich super. :party:

    Danke und Gruß
    Trainer

  • serialize-Funktion (array to string) für x-dimensionale beliebig ineinander verschachtelte Arrays

    • ip_trainer
    • 23. April 2012 um 13:06

    Hallo zusammen,

    auch nach längerer Suche bin ich nicht fündig geworden, auf meiner Suche nach einer Funktion die das im Titel beschriebene leisten kann.

    Es gibt wohl eine Lösung für 2D-Arrays (bisher von mir nicht getestet):
    http://www.autoitscript.com/forum/topic/12…742#entry854742

    Und es gibt einen Ansatz für x Dimensionen, bei dem die Entwicklung aber wohl in der Mitte stecken geblieben ist:
    http://www.autoitscript.com/forum/topic/12…tring-and-back/

    Der Funktionsumfang den ich benötige entspricht also in Teilen dem der PHP-Funktion "serialize" (zumindest dem Teil für numerische Indices, von den anderen Möglichkeiten wie assoziativen Arrays und Objekten etc. mal abgesehen):
    http://de2.php.net/manual/de/function.serialize.php

    Weiß jemand, ob es sowas schon einmal fertig programmiert wurde?

    Danke für Informationen
    Trainer

  • RegExp - mehrere Stellen in einem String sollen gefunden werden

    • ip_trainer
    • 27. März 2012 um 02:00

    So vielleicht? Es liefert mir zwar momentan das von dir gewünschte Ergebnis, aber eine Garantie auf Richtigkeit gibt es von mir nicht dazu :D ...
    Was meinen die Experten?

    [autoit]

    $regexp_test = StringRegExp($database,'(?s)<Item Class="Feld_1" ID="{(.*?)}">.*?<Unterfeld_1>(.*?)</Unterfeld_1>.*?<Unterfeld_2>(.*?)</Unterfeld_2>.*?<Unterfeld_5>(.*?)</Unterfeld_5>',3)

    [/autoit]

    Gruß
    Trainer

  • AVI-Aufnahme mit Webcam funktioniert nicht

    • ip_trainer
    • 10. Oktober 2011 um 15:51

    Hi alpines,

    danke für den Tip, aber es lag daran, dass meine Cam nichts aufgenommen hat (wie ich eben herausgefunden habe), weil die Audioaufnahme nicht deaktiviert war.
    Mit Hilfe von BugFix`UDF kann man mein obiges Skript um folgendes ergänzen:

    Bei den Konstanten:

    Spoiler anzeigen
    [autoit]


    $tagCAPTUREPARMS = _
    'DWORD dwRequestMicroSecPerFrame;' & _
    'BOOLEAN fMakeUserHitOKToCapture;' & _
    'UINT wPercentDropForError;' & _
    'BOOLEAN fYield;' & _
    'DWORD dwIndexSize;' & _
    'UINT wChunkGranularity;' & _
    'BOOLEAN fUsingDOSMemory;' & _
    'UINT wNumVideoRequested;' & _
    'BOOLEAN fCaptureAudio;' & _
    'UINT wNumAudioRequested;' & _
    'UINT vKeyAbort;' & _
    'BOOLEAN fAbortLeftMouse;' & _
    'BOOLEAN fAbortRightMouse;' & _
    'BOOLEAN fLimitEnabled;' & _
    'UINT wTimeLimit;' & _
    'BOOLEAN fMCIControl;' & _
    'BOOLEAN fStepMCIDevice;' & _
    'DWORD dwMCIStartTime;' & _
    'DWORD dwMCIStopTime;' & _
    'BOOLEAN fStepCaptureAt2x;' & _
    'UINT wStepCaptureAverageFrames;' & _
    'DWORD dwAudioBufferSize;' & _
    'BOOLEAN fDisableWriteCache;' & _
    'UINT AVStreamMaster;'

    [/autoit]


    Und bei den Funktionen:

    Spoiler anzeigen
    [autoit]

    Func _WebcamAudioSet($sId, $iOn=1)
    If $iOn <> 1 Then $iOn = 0
    __CAP_SET_SEQUENCE_SETUP($sId, __CAP_GET_SEQUENCE_SETUP($sId), 'fCaptureAudio=' & $iOn)
    If @error Then Return 0
    Return 1
    EndFunc

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

    Func __CAP_GET_SEQUENCE_SETUP($sId)
    Local $aParamStruc[24] = [ _
    'dwRequestMicroSecPerFrame','fMakeUserHitOKToCapture','wPercentDropForError','fYield','dwIndexSize','wChunkGranularity','fUsingDOSMemory','wNumVideoRequested', _
    'fCaptureAudio','wNumAudioRequested','vKeyAbort','fAbortLeftMouse','fAbortRightMouse','fLimitEnabled','wTimeLimit','fMCIControl','fStepMCIDevice','dwMCIStartTime', _
    'dwMCIStopTime','fStepCaptureAt2x','wStepCaptureAverageFrames','dwAudioBufferSize','fDisableWriteCache','AVStreamMaster']
    Local $tCAPTUREPARMS = DllStructCreate($tagCAPTUREPARMS), $pCAPTUREPARMS = DllStructGetPtr($tCAPTUREPARMS)
    Local $ret = DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_GET_SEQUENCE_SETUP, "WPARAM", DllStructGetSize($tCAPTUREPARMS), "LPARAM", $pCAPTUREPARMS)
    If @error Then
    Return SetError(1,0,0)
    Else
    ;~ For $i = 0 To 23
    ;~ ConsoleWrite($aParamStruc[$i] & @TAB & DllStructGetData($tCAPTUREPARMS, $aParamStruc[$i]) & @CRLF)
    ;~ Next
    Return $tCAPTUREPARMS
    EndIf
    EndFunc

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

    Func __CAP_SET_SEQUENCE_SETUP($sId, $tCAPTUREPARMS, $vParams=0) ; $vParams: Um nur einen Wert zu ändern "Parametername=Wert" übergeben, mehrere Werte mit "|" abtrennen
    Local $aParamStruc[24] = [ _
    'dwRequestMicroSecPerFrame','fMakeUserHitOKToCapture','wPercentDropForError','fYield','dwIndexSize','wChunkGranularity','fUsingDOSMemory','wNumVideoRequested', _
    'fCaptureAudio','wNumAudioRequested','vKeyAbort','fAbortLeftMouse','fAbortRightMouse','fLimitEnabled','wTimeLimit','fMCIControl','fStepMCIDevice','dwMCIStartTime', _
    'dwMCIStopTime','fStepCaptureAt2x','wStepCaptureAverageFrames','dwAudioBufferSize','fDisableWriteCache','AVStreamMaster']
    If $vParams == 0 Then
    Local $aParam2Set[1] = ['fYield=1'] ; == Default: Erlaubt Nutzereingaben während Capturing
    Else
    Local $aParam2Set = StringSplit($vParams, '|', 2)
    EndIf
    Local $aSplit
    For $i = 0 To UBound($aParam2Set) -1
    $aSplit = StringSplit($aParam2Set[$i], '=')
    If $aSplit[0] <> 2 Then ContinueLoop
    DllStructSetData($tCAPTUREPARMS, $aSplit[1], $aSplit[2])
    Next
    Local $pCAPTUREPARMS = DllStructGetPtr($tCAPTUREPARMS)
    Local $ret = DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_SEQUENCE_SETUP, "wparam", DllStructGetSize($tCAPTUREPARMS), "lparam", $pCAPTUREPARMS)
    If @error Then
    Return SetError(1,0,0)
    Else
    ;~ For $i = 0 To 23
    ;~ ConsoleWrite($aParamStruc[$i] & @TAB & DllStructGetData($tCAPTUREPARMS, $aParamStruc[$i]) & @CRLF)
    ;~ Next
    Return 1
    EndIf
    EndFunc

    [/autoit]


    Und dann die Audioaufnahme deaktivieren durch den Aufruf von:

    [autoit]

    _WebcamAudioSet($cap[0], 0)

    [/autoit]

    Das sieht dann insgesamt so aus:

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>

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

    ;Konstanten - START
    #Region
    $WM_CAP_START = 0x400
    $WM_CAP_UNICODE_START = $WM_CAP_START +100
    $WM_CAP_PAL_SAVEA = $WM_CAP_START + 81
    $WM_CAP_PAL_SAVEW = $WM_CAP_UNICODE_START + 81
    $WM_CAP_UNICODE_END = $WM_CAP_PAL_SAVEW
    $WM_CAP_ABORT = $WM_CAP_START + 69
    $WM_CAP_DLG_VIDEOCOMPRESSION = $WM_CAP_START + 46
    $WM_CAP_DLG_VIDEODISPLAY = $WM_CAP_START + 43
    $WM_CAP_DLG_VIDEOFORMAT = $WM_CAP_START + 41
    $WM_CAP_DLG_VIDEOSOURCE = $WM_CAP_START + 42
    $WM_CAP_DRIVER_CONNECT = $WM_CAP_START + 10
    $WM_CAP_DRIVER_DISCONNECT = $WM_CAP_START + 11
    $WM_CAP_DRIVER_GET_CAPS = $WM_CAP_START + 14
    $WM_CAP_DRIVER_GET_NAMEA = $WM_CAP_START + 12
    $WM_CAP_DRIVER_GET_NAMEW = $WM_CAP_UNICODE_START + 12
    $WM_CAP_DRIVER_GET_VERSIONA = $WM_CAP_START + 13
    $WM_CAP_DRIVER_GET_VERSIONW = $WM_CAP_UNICODE_START + 13
    $WM_CAP_EDIT_COPY = $WM_CAP_START + 30
    $WM_CAP_END = $WM_CAP_UNICODE_END
    $WM_CAP_FILE_ALLOCATE = $WM_CAP_START + 22
    $WM_CAP_FILE_GET_CAPTURE_FILEA = $WM_CAP_START + 21
    $WM_CAP_FILE_GET_CAPTURE_FILEW = $WM_CAP_UNICODE_START + 21
    $WM_CAP_FILE_SAVEASA = $WM_CAP_START + 23
    $WM_CAP_FILE_SAVEASW = $WM_CAP_UNICODE_START + 23
    $WM_CAP_FILE_SAVEDIBA = $WM_CAP_START + 25
    $WM_CAP_FILE_SAVEDIBW = $WM_CAP_UNICODE_START + 25
    $WM_CAP_FILE_SET_CAPTURE_FILEA = $WM_CAP_START + 20
    $WM_CAP_FILE_SET_CAPTURE_FILEW = $WM_CAP_UNICODE_START + 20
    $WM_CAP_FILE_SET_INFOCHUNK = $WM_CAP_START + 24
    $WM_CAP_GET_AUDIOFORMAT = $WM_CAP_START + 36
    $WM_CAP_GET_CAPSTREAMPTR = $WM_CAP_START + 1
    $WM_CAP_GET_MCI_DEVICEA = $WM_CAP_START + 67
    $WM_CAP_GET_MCI_DEVICEW = $WM_CAP_UNICODE_START + 67
    $WM_CAP_GET_SEQUENCE_SETUP = $WM_CAP_START + 65
    $WM_CAP_GET_STATUS = $WM_CAP_START + 54
    $WM_CAP_GET_USER_DATA = $WM_CAP_START + 8
    $WM_CAP_GET_VIDEOFORMAT = $WM_CAP_START + 44
    $WM_CAP_GRAB_FRAME = $WM_CAP_START + 60
    $WM_CAP_GRAB_FRAME_NOSTOP = $WM_CAP_START + 61
    $WM_CAP_PAL_AUTOCREATE = $WM_CAP_START + 83
    $WM_CAP_PAL_MANUALCREATE = $WM_CAP_START + 84
    $WM_CAP_PAL_OPENA = $WM_CAP_START + 80
    $WM_CAP_PAL_OPENW = $WM_CAP_UNICODE_START + 80
    $WM_CAP_PAL_PASTE = $WM_CAP_START + 82
    $WM_CAP_SEQUENCE = $WM_CAP_START + 62
    $WM_CAP_SEQUENCE_NOFILE = $WM_CAP_START + 63
    $WM_CAP_SET_AUDIOFORMAT = $WM_CAP_START + 35
    $WM_CAP_SET_CALLBACK_CAPCONTROL = $WM_CAP_START + 85
    $WM_CAP_SET_CALLBACK_ERRORA = $WM_CAP_START + 2
    $WM_CAP_SET_CALLBACK_ERRORW = $WM_CAP_UNICODE_START + 2
    $WM_CAP_SET_CALLBACK_FRAME = $WM_CAP_START + 5
    $WM_CAP_SET_CALLBACK_STATUSA = $WM_CAP_START + 3
    $WM_CAP_SET_CALLBACK_STATUSW = $WM_CAP_UNICODE_START + 3
    $WM_CAP_SET_CALLBACK_VIDEOSTREAM = $WM_CAP_START + 6
    $WM_CAP_SET_CALLBACK_WAVESTREAM = $WM_CAP_START + 7
    $WM_CAP_SET_CALLBACK_YIELD = $WM_CAP_START + 4
    $WM_CAP_SET_MCI_DEVICEA = $WM_CAP_START + 66
    $WM_CAP_SET_MCI_DEVICEW = $WM_CAP_UNICODE_START + 66
    $WM_CAP_SET_OVERLAY = $WM_CAP_START + 51
    $WM_CAP_SET_PREVIEW = $WM_CAP_START + 50
    $WM_CAP_SET_PREVIEWRATE = $WM_CAP_START + 52
    $WM_CAP_SET_SCALE = $WM_CAP_START + 53
    $WM_CAP_SET_SCROLL = $WM_CAP_START + 55
    $WM_CAP_SET_SEQUENCE_SETUP = $WM_CAP_START + 64
    $WM_CAP_SET_USER_DATA = $WM_CAP_START + 9
    $WM_CAP_SET_VIDEOFORMAT = $WM_CAP_START + 45
    $WM_CAP_SINGLE_FRAME = $WM_CAP_START + 72
    $WM_CAP_SINGLE_FRAME_CLOSE = $WM_CAP_START + 71
    $WM_CAP_SINGLE_FRAME_OPEN = $WM_CAP_START + 70
    $WM_CAP_STOP = $WM_CAP_START + 68

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

    $tagCAPTUREPARMS = _
    'DWORD dwRequestMicroSecPerFrame;' & _
    'BOOLEAN fMakeUserHitOKToCapture;' & _
    'UINT wPercentDropForError;' & _
    'BOOLEAN fYield;' & _
    'DWORD dwIndexSize;' & _
    'UINT wChunkGranularity;' & _
    'BOOLEAN fUsingDOSMemory;' & _
    'UINT wNumVideoRequested;' & _
    'BOOLEAN fCaptureAudio;' & _
    'UINT wNumAudioRequested;' & _
    'UINT vKeyAbort;' & _
    'BOOLEAN fAbortLeftMouse;' & _
    'BOOLEAN fAbortRightMouse;' & _
    'BOOLEAN fLimitEnabled;' & _
    'UINT wTimeLimit;' & _
    'BOOLEAN fMCIControl;' & _
    'BOOLEAN fStepMCIDevice;' & _
    'DWORD dwMCIStartTime;' & _
    'DWORD dwMCIStopTime;' & _
    'BOOLEAN fStepCaptureAt2x;' & _
    'UINT wStepCaptureAverageFrames;' & _
    'DWORD dwAudioBufferSize;' & _
    'BOOLEAN fDisableWriteCache;' & _
    'UINT AVStreamMaster;'
    #EndRegion
    ; Konstanten - ENDE

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

    $avi = DllOpen("avicap32.dll")
    $user = DllOpen("user32.dll")

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

    $snapfile = @ScriptDir & "\scrshot.bmp"
    $moviefile = @ScriptDir & "\record.avi"

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

    $Main = GUICreate("Camera",350,270)
    $cap = DllCall($avi, "int", "capCreateCaptureWindow", "str", "cap", "int", BitOR($WS_CHILD,$WS_VISIBLE), "int", 15, "int", 15, "int", 320, "int", 240, "hwnd", $Main, "int", 1)

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

    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_DRIVER_CONNECT, "int", 0, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_SET_SCALE, "int", 1, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_SET_OVERLAY, "int", 1, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_SET_PREVIEW, "int", 1, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_SET_PREVIEWRATE, "int", 1, "int", 0)

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

    _WebcamAudioSet($cap[0], 0)

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

    GUISetState(@SW_SHOW)

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

    HotKeySet("!1", "SnapShot") ;ALT+1 --> Snapshot
    HotKeySet("!2", "StartRecording") ;ALT+2 --> Aufnahme starten
    HotKeySet("!3", "StopRecording") ;ALT+3 --> Aufnahme beenden

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_SET_CALLBACK_FRAME, "int", 0, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_END, "int", 0, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)
    DllClose($avi)
    DllClose($user)
    Exit
    EndIf
    Sleep(1)
    Wend

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

    ;--------------- Funktionen -----------------------
    Func SnapShot()
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_GRAB_FRAME_NOSTOP, "int", 0, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_FILE_SAVEDIBA, "int", 0, "str", $snapfile)
    EndFunc

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

    Func StartRecording()
    WinSetTitle($Main, "", "WebCam - Capturing...")
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_FILE_SET_CAPTURE_FILEA, "int", 0, "str", $moviefile)
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_SEQUENCE, "int", 0, "int", 0)
    EndFunc

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

    Func StopRecording()
    DllCall($user, "int", "SendMessage", "hWnd", $cap[0], "int", $WM_CAP_STOP, "int", 0, "int", 0)
    WinSetTitle($Main, "", "WebCam - Ready")
    EndFunc

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

    ;===============================================================================
    ; Description: De/Activate audio capturing
    ; Syntax: _WebcamAudioSet($sId [, $iOn])
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; $iOn - 0 or 1 (Default) to switch Off/On
    ; Requirement(s): A webcam
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0
    ; Author(s): BugFix ( [email='bugfix@autoit.de'][/email] )
    ; Note(s): By default in SEQUENCE_SETUP is capturing active
    ;===============================================================================
    Func _WebcamAudioSet($sId, $iOn=1)
    If $iOn <> 1 Then $iOn = 0
    __CAP_SET_SEQUENCE_SETUP($sId, __CAP_GET_SEQUENCE_SETUP($sId), 'fCaptureAudio=' & $iOn)
    If @error Then Return 0
    Return 1
    EndFunc

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

    ;===============================================================================
    ; Description: Reads the values of current capture parameter
    ; Syntax: __CAP_GET_SEQUENCE_SETUP($sId)
    ; Return Value(s): On Success - Returns the CAPTUREPARMS-structure
    ; On Failure - Returns 0, set error
    ; Author(s): BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func __CAP_GET_SEQUENCE_SETUP($sId)
    Local $aParamStruc[24] = [ _
    'dwRequestMicroSecPerFrame','fMakeUserHitOKToCapture','wPercentDropForError','fYield','dwIndexSize','wChunkGranularity','fUsingDOSMemory','wNumVideoRequested', _
    'fCaptureAudio','wNumAudioRequested','vKeyAbort','fAbortLeftMouse','fAbortRightMouse','fLimitEnabled','wTimeLimit','fMCIControl','fStepMCIDevice','dwMCIStartTime', _
    'dwMCIStopTime','fStepCaptureAt2x','wStepCaptureAverageFrames','dwAudioBufferSize','fDisableWriteCache','AVStreamMaster']
    Local $tCAPTUREPARMS = DllStructCreate($tagCAPTUREPARMS), $pCAPTUREPARMS = DllStructGetPtr($tCAPTUREPARMS)
    Local $ret = DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_GET_SEQUENCE_SETUP, "WPARAM", DllStructGetSize($tCAPTUREPARMS), "LPARAM", $pCAPTUREPARMS)
    If @error Then
    Return SetError(1,0,0)
    Else
    ;~ For $i = 0 To 23
    ;~ ConsoleWrite($aParamStruc[$i] & @TAB & DllStructGetData($tCAPTUREPARMS, $aParamStruc[$i]) & @CRLF)
    ;~ Next
    Return $tCAPTUREPARMS
    EndIf
    EndFunc

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

    ;===============================================================================
    ; Description: Sets one or more values in current capture parameter
    ; Syntax: __CAP_SET_SEQUENCE_SETUP($sId, $tCAPTUREPARMS [, $vParams=0])
    ; Parameter(s): $sId - Id (returned from _WebcamOpen)
    ; $tCAPTUREPARMS - structure from __CAP_GET_SEQUENCE_SETUP
    ; $vParams - string: "Param=value"; for more than one param use: "Param1=value|Param2=value|Param3=value|.."
    ; Return Value(s): On Success - Returns 1
    ; On Failure - Returns 0, set error
    ; Author(s): BugFix ( [email='bugfix@autoit.de'][/email] )
    ; Note(s): Meaning of all parameters: http://msdn.microsoft.com/en-us/library/…2(v=VS.85).aspx
    ;===============================================================================
    Func __CAP_SET_SEQUENCE_SETUP($sId, $tCAPTUREPARMS, $vParams=0) ; $vParams: Um nur einen Wert zu ändern "Parametername=Wert" übergeben, mehrere Werte mit "|" abtrennen
    Local $aParamStruc[24] = [ _
    'dwRequestMicroSecPerFrame','fMakeUserHitOKToCapture','wPercentDropForError','fYield','dwIndexSize','wChunkGranularity','fUsingDOSMemory','wNumVideoRequested', _
    'fCaptureAudio','wNumAudioRequested','vKeyAbort','fAbortLeftMouse','fAbortRightMouse','fLimitEnabled','wTimeLimit','fMCIControl','fStepMCIDevice','dwMCIStartTime', _
    'dwMCIStopTime','fStepCaptureAt2x','wStepCaptureAverageFrames','dwAudioBufferSize','fDisableWriteCache','AVStreamMaster']
    If $vParams == 0 Then
    Local $aParam2Set[1] = ['fYield=1'] ; == Default: Erlaubt Nutzereingaben während Capturing
    Else
    Local $aParam2Set = StringSplit($vParams, '|', 2)
    EndIf
    Local $aSplit
    For $i = 0 To UBound($aParam2Set) -1
    $aSplit = StringSplit($aParam2Set[$i], '=')
    If $aSplit[0] <> 2 Then ContinueLoop
    DllStructSetData($tCAPTUREPARMS, $aSplit[1], $aSplit[2])
    Next
    Local $pCAPTUREPARMS = DllStructGetPtr($tCAPTUREPARMS)
    Local $ret = DllCall($user, "int", "SendMessage", "hWnd", $sId, "int", $WM_CAP_SET_SEQUENCE_SETUP, "wparam", DllStructGetSize($tCAPTUREPARMS), "lparam", $pCAPTUREPARMS)
    If @error Then
    Return SetError(1,0,0)
    Else
    ;~ For $i = 0 To 23
    ;~ ConsoleWrite($aParamStruc[$i] & @TAB & DllStructGetData($tCAPTUREPARMS, $aParamStruc[$i]) & @CRLF)
    ;~ Next
    Return 1
    EndIf
    EndFunc

    [/autoit]


    Dann klappts auch mit der Aufnahme. Ich empfehle aber DEFINITIV die UDF von BugFix zu benutzen und obiges Skript nicht mit seiner UDF durcheinander zu würfeln (da ich z.B. die Variablennamen für die DLLs angepasst habe) - obiges sollte nur zeigen, dass es final an der Audio-Einstellung lag.

    Gruß
    Trainer

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™