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

Beiträge von veronesi

  • Bass.dll UDF Version_10 Download

    • veronesi
    • 8. März 2012 um 15:27

    Dort ist (glaube ich) Linear sowieso die Standard Einstellung.
    Das habe ich auch schon probiert und es half nichts.

    Aber mit _BASS_RecordSetInput konnte ich nun bereits beide Ein- und Ausgänge auf den gleichen Level bringen!

    Nun scheint es zu klappen ;)

  • Bass.dll UDF Version_10 Download

    • veronesi
    • 8. März 2012 um 15:16

    Hallo Eukalyptus
    Vielen Dank für die Antwort. Ich werde die Funktion gleich mal anschauen und einbauen.

    Ja, mit dB rechnen kenne ich mich schon etwas aus.
    Vielen Dank!

    Gruss
    Veronesi

  • Bass.dll UDF Version_10 Download

    • veronesi
    • 8. März 2012 um 15:03

    Hi Timtam

    Leider stimmt das nicht.
    Bei 0% ist der Level 0. Bei 100% ist es 1. Bis dahin stimmt noch alles.

    Aber bei z.B. 50% ist der Level auf ca. 0.322477906942368 (die letzten Kommastellen weichen manchmal etwas ab..)
    Das bedeutet vermutlich, dass die Kurve an das logarithische Verhalten unseres Gehöres angepasst wurde.

    Aber wie kann ich das nun umrechnen?

  • Bass.dll UDF Version_10 Download

    • veronesi
    • 8. März 2012 um 07:55

    Hallo Eukalyptus
    Wunderbar diese BASS UDF!

    Gibt es allerdings eine Möglichkeit, bei _BASS_GetVolume (Windows 7) diesen Level in einen prozentualen Wert umzuwandeln? Die Levelwerte sind ja nicht linear.

    Aber nach welcher Formel / Algorithmus kann man diese umrechnen?
    Grüsse, Veronesi

    Edit
    Vielleicht als Erklärung, warum ich das möchte:
    - Ich spiele einen Ton (1kHz) ab.
    - Den Sound-Out habe ich mit einem direkten Kabel auf Sound-In verbunden.
    - Nun messe ich mit _BASS_ChannelGetLevel jeweils den Level beim Sound-Out ($hMusic) und den Level beim Sound-In ($hRecord)
    => Mit einem 1:1 Kabel sollte ich doch +/- dieselben Werte erhalten. Leider bekomme ich als Out den Wert 31999 und als In den Wert 6469.
    Deshalb dachte ich, dass der Out Wert möglicherweise immer das "maximum" darstellt, egal welche Lautstärke eingestellt ist. Und der In müsste mit der Lautstärke korrigiert werden!

    Hintergrund ist: Ich sollte die Dämpfung zwischen Aus- und Eingang bestimmen.

  • UEZ hat Geburtstag

    • veronesi
    • 17. Februar 2012 um 06:58

    Happy Birthday UEZ!
    Alles Gute!

  • Debug mit Change2CUI

    • veronesi
    • 8. Februar 2012 um 08:06

    Hallo Oscar

    Vielen Dank.
    Ich habe mir nun in der Tat eine eigene Konsole gebastelt. Allerdings etwas anders:

    _ConsoleWrite UDF
    [autoit]

    #include-once
    #include <WinAPI.au3>
    Global $h_ConsoleWrite = -1

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

    ; _ConsoleWrite ===================================================================================
    ; Name ..........: _ConsoleWrite()
    ; Description ...: Write string to the console screen buffer.
    ; If you start your program from a DOS console, then you can see your debug value written by this function
    ; In normal operation (you don't start your program normally from a DOS console) you don't notice of any debug strings!
    ;
    ; Syntax ........: _ConsoleWrite($sText)
    ; Parameters ....: $sText String to write into the console screen buffer
    ;
    ; Return values .: Success: Return 1
    ; Failure: Return 0 and sets @error
    ; @error = 1 / @extended = 0 => DllCall GetStdHandle failure
    ; @error = 2 / @extended = 1 => _WinAPI_AttachConsole failure
    ; @error = 2 / @extended = 2 => _WinAPI_WriteConsole failure
    ; Author ........: Veronesi
    ; Links .........: http://msdn.microsoft.com/en-us/library/…1(v=vs.85).aspx
    ; =================================================================================================
    Func _ConsoleWrite($sText)
    If $h_ConsoleWrite = 0 Then Return 1 ;Program not in DOS console started! It's not neccessary to write something, because we don't see it!
    Local $Ret = True, $Ret2 = True
    If $h_ConsoleWrite = -1 Then ;Handle not yet initialized => Initialize the console handle, but only the first time
    Local Const $STD_OUTPUT_HANDLE = -11
    Local $aResult = DllCall("kernel32.dll", "handle", "GetStdHandle", "dword", $STD_OUTPUT_HANDLE)
    If @error Then Return SetError(1, 0, 0)
    $h_ConsoleWrite = $aResult[0]
    If $h_ConsoleWrite = 0 Then Return 1 ;Program not in DOS console started! ....
    $Ret = _WinAPI_AttachConsole(-1) ;Attaches the alling process to the current process
    EndIf
    $Ret2 = _WinAPI_WriteConsole($h_ConsoleWrite, $sText)
    If $Ret And $Ret2 Then Return 1 ;All went fine
    If $Ret2 Then Return SetError(2, 1, 0) ;_WinAPI_AttachConsole was NOT successful
    Return SetError(2, 2, 0) ;WinAPI_WriteConsole was NOT successful
    EndFunc ;==>_ConsoleWrite

    [/autoit]


    Damit kann ich mit minimalen Aufwand meine Scripts umbauen. Einfach alle ConsoleWrite Befehle in _ConsoleWrite ändern.
    Wird dann das EXE Programm "normal" von einem Windows Explorer gestartet, dann funktioniert es für den Benutzer einwandfrei und ohne Einschränkung. Wird es allerdings über eine DOS Konsole gestartet, dann läuft es auch normal, allerdings sieht man in der DOS Konsole zeitgleich die Debug-Ausgaben!
    Der Vorteil ist auch, dass man immer alle seine Debug Befehle im Programm drin lassen kann. Und man hat sie trotzdem zur Verfügung, wenn man möchte :)

    Nachfolgend ein kleines Beispiel.
    Einfach dies als EXE Kompillieren, und von einem Windows Explorer ausführen => Normales GUI, nichts aussergewöhnlich.
    Danach von einer DOS Konsole die EXE starten. Man sieht, dass das GUI durch läuft, aber zeitgleich in der Konsole die Ausgabe erfolgt!

    Beispiel
    [autoit]

    #include "_ConsoleWrite.au3"

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

    GUICreate("Test-GUI", 400, 100)
    Local $Label = GUICtrlCreateLabel("", 0, 25, 400, 50, 0x01)
    GUICtrlSetFont(-1, 26, 400, 0, "Arial")
    GUISetState()

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

    _ConsoleWrite(@CRLF & "********************************************************************" & @CRLF)
    _ConsoleWrite("UDF _ConsoleWrite from Veronesi" & @CRLF)
    _ConsoleWrite("********************************************************************" & @CRLF)
    For $i = 0 To 100
    GUICtrlSetData($Label, "Progress: " & $i & "%")
    _ConsoleWrite(@CR & "Progress: " & $i & "%")
    Sleep(20)
    Next
    GUICtrlSetData($Label, "Successful finished")
    $a = _ConsoleWrite(@CRLF & "Successful finished" & @CRLF)
    Sleep(2000)
    Exit

    [/autoit]

    Gruss Veronesi

  • Debug mit Change2CUI

    • veronesi
    • 7. Februar 2012 um 13:46

    Hallo zusammen

    Um meine Programme zu debuggen und ggfs Fehler zu finden, nutze ich gerne die Möglichkeit gewisse (Rückgabe)Werte oder Fehler mittels

    [autoit]

    ConsoleWrite("")

    [/autoit]

    auszugeben.

    Da ich aber die Programme anschliessend als EXE kompiliere und ConsoleWrite nichts in die DOS-Box schreibt, setzte ich jeweils die folgenden Zeilen an den Anfang des Scriptes:

    [autoit]

    #AutoIt3Wrapper_Change2CUI=y
    WinSetState(@ScriptFullPath, "", @SW_HIDE)

    [/autoit]

    Wenn das EXE direkt ausgeführt wird, erscheint ganz kurz die schwarze Dos Box und verschwindet gleich wieder.
    Danach läuft das Programm normal durch. Wenn ich die EXE hingegen aus einer DOS Box starte, dann bekomme ich alle ConsoleWrite Werte zurück (Debuggen)

    Alles funktioniert einwandfrei, jedoch hätte ich am liebsten das kurze aufploppen dieser schwarzen DOS Box verhindert.
    Am einfachsten natürlich in dem man das Change2CUI weglässt. Aber dann kann man nicht mehr einfach kurz etwas debuggen...

    Habt Ihr eine Idee?
    Gruss Veronesi

  • IconDock - Mac style Icon toolbar

    • veronesi
    • 6. Februar 2012 um 13:19

    Geile Funktion!
    Vielen Dank für's Präsentieren!

  • AutoIT .exe Datei debuggen

    • veronesi
    • 27. Januar 2012 um 09:19

    Hallo acc4iload

    Ich habe Dein beschriebenes Verfahren soeben bei einer meiner Scripts getestet, welches ab und zu auch mal einen Fehler bringt.
    (Nur wenn der Benutzer innerhalb der ersten paar Millisekunden nach dem Programmstart eine bestimmte Tastenkombination drückt)

    Mit Hilfe dieser Methode habe ich den Fehler nun herausgefunden!
    Die Zeile stimmte exakt! Vielen Dank!

    Gruss, Veronesi

  • FileSaveDialog ... und weiter?

    • veronesi
    • 19. Januar 2012 um 15:41

    Mach es so:

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $Account_Manager = GUICreate("Account Manager", 800, 400, -1, -1)
    $backup2 = GUICtrlCreateButton("Backup", 250, 360, 100, 25)
    GUISetState(@SW_SHOW)

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

    While 1

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

    $msg = GUIGetMsg($Account_Manager)
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $backup2
    FileSaveDialog("", @DesktopDir, "All (*.*)", 16, "", $Account_Manager)

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

    EndSwitch
    WEnd

    [/autoit]
  • Happy Birthday Oscar

    • veronesi
    • 18. Januar 2012 um 20:13

    Ebenfalls Happy Birthday, Oscar!
    Alles Gute!

    Veronesi

  • Problem mit WinExists()

    • veronesi
    • 11. Januar 2012 um 14:16

    Wenn das Fenster noch existiert, aber nur ausgeblendet ist, (wie Protex erwähnte), dann solltest Du mit WinGetState weiterkommen.
    Du kannst z.B. prüfen, ob das Fenster sichtbar ist...!
    Gruss Veronesi

  • Autoit-XP Coded unter Win7? Kompatibilitätsprobleme

    • veronesi
    • 10. Januar 2012 um 13:05

    Du kannst den Thread selber auf gelöst setzen.
    Einfach den ersten Thread bearbeiten, auf gelöst setzen und speichern. - Fertig.

    Gruss Veronesi

  • Objekt Eigenschaften per Funktionsübergabe

    • veronesi
    • 9. Januar 2012 um 09:32

    Hallo Water
    Danke für Deine Hilfe.

    Das mit dem Obfuscator ist übrigens auch eine gute Idee! Das werde ich machen!
    Danke!
    Veronesi

  • Objekt Eigenschaften per Funktionsübergabe

    • veronesi
    • 9. Januar 2012 um 08:52

    Hallo zusammen

    Ich möchte über Objekte (LDAP) verschiedene Eigenschaften aus der Domäne des jeweiligen Benutzers auslesen.

    [autoit]


    $oInfo = ObjGet("LDAP://" & $FQDN)
    $sInfo = $oInfo.givenName

    [/autoit]


    Der FQDN string ist 100% korrekt, ich bekomme auch Daten zurück.
    Jedoch möchte ich den String givenName durch eine Variable ersetzen, die ich der Funktion übergebe.
    Dadurch könnte ich beliebige Daten aus der Domäne auslesen, ohne eine grosse "Switch" Struktur in der Funktion.

    Doch wenn ich es mit einer Variable mache, funktioniert es nicht mehr!

    [autoit]


    $sProperty = "givenName"
    $oInfo = ObjGet("LDAP://" & $FQDN)
    $sInfo = $oInfo.$sProperty

    [/autoit]


    Gibt es dafür eine Lösung? Ich bekomme schon beim kompillieren eine Syntax Error....
    Gruss Veronesi

  • Drag & Drop mit E-Mail

    • veronesi
    • 5. Januar 2012 um 14:29

    Inzwischen weiss ich, weshalb das Send("^c") nicht funktioniert.
    Man muss das Fenster zuerst aktivieren und erst dann den Drag & Drop Befehl mit der Maus starten....
    Auch ein WinActivate(...) hat leider nichts gebracht.
    Ebensowenig ein ControlSend.

    Da scheint Outlook irgendwie resistent dagegen zu sein :(

    Wenn noch jemand eine Idee hat, ohne dass man das Outlook Fenster zuvor aktivieren muss, dann immer her damit :)

    Gruss Veronesi

  • Drag & Drop mit E-Mail

    • veronesi
    • 5. Januar 2012 um 09:50

    Hi Chip

    Danke für die Antwort.
    Ich habe zwar noch nicht in die Outlook UDF geschaut, doch ich konnte einen Teilerfolg verbuchen.
    Wenn ich nun weiss, wie der Titel des Mails ist, kann ich meine neue UDF verwenden.

    _GetEmailText
    [autoit]

    Func _GetEmailText($sTitle, $sType = "Body")
    ;http://msdn.microsoft.com/en-us/library/…office.11).aspx
    Local Const $olFolderInbox = 6
    Local $oOutlook = ObjCreate("Outlook.Application")
    If Not IsObj($oOutlook) Then Return SetError(1, 0, 0)
    Local $oNameSpace = $oOutlook.GetNameSpace("MAPI")
    Local $oFolder = $oNameSpace.GetDefaultFolder($olFolderInbox)
    Local $oMailItem = $oFolder.Items($sTitle)
    ;~ $oMailItem.Display()
    Switch $sType
    Case "Body"
    Local $Ret = $oMailItem.Body()
    $oOutlook = ""
    $oNameSpace = ""
    $oFolder = ""
    $oMailItem = ""
    Return $Ret
    Case "Sender"
    Local $Ret = $oMailItem.SenderEmailAddress()
    $oOutlook = ""
    $oNameSpace = ""
    $oFolder = ""
    $oMailItem = ""
    Return $Ret
    EndSwitch
    EndFunc ;==>_GetEmailText

    [/autoit]

    Nun müsste ich nur noch wissen, wie ich an den Titel komme.
    Wenn ich im Outlook ein Mail markiere und Ctrl+C drücke, und das dann in ein Notepad einfüge, komme ich an den Titel. (Müsste nur noch etwas parsen...)
    Aber wenn ich das mit folgender Funktion versuche, wird nie etwas kopiert!

    Weiss hier noch jemand rat? Das wäre super. Bin ja schon sehr weit gekommen!

    Problemstellung
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Misc.au3>
    Opt("GUIOnEventMode", 1)
    Global $hUser32, $hGUI1,$Input

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

    _GUI1()

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

    While True
    Sleep(5000)
    WEnd

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

    _Exit()

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

    Func _GUI1()
    $hGUI1 = GUICreate("Test", 800, 600, -1, -1, -1, $WS_EX_ACCEPTFILES)
    GUISetOnEvent($GUI_EVENT_CLOSE ,"_CloseGUI1")
    $Input = GUICtrlCreateInput("", 10, 10, 700, 50)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUISetState()
    $hUser32 = DllOpen("user32.dll")
    AdlibRegister("_CheckMouse", 100)
    EndFunc

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

    Func _CheckMouse()
    If _IsPressed("01", $hUser32) Then
    If WinActive("") <> $hGUI1 Then
    Sleep(50)
    Send("^C") ;Copy Element ====> Dies funktioniert eben irgendwie nicht!!!!!!!!!
    While _IsPressed("01", $hUser32)
    Sleep(10)
    WEnd
    If _WindowFromPoint() = ControlGetHandle($hGUI1, "", $Input) Then
    MouseClick("left")
    Send("^v")
    EndIf
    EndIf
    EndIf
    EndFunc

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

    Func _WindowFromPoint()
    Local $point, $cHwnd, $hwnd, $pos, $size
    $point = MouseGetPos()
    $hwnd = DllCall($hUser32, "hwnd", "WindowFromPoint", "int", $point[0], "int", $point[1])
    Return $hwnd[0]
    EndFunc

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

    Func _CloseGUI1()
    GUIDelete($hGUI1)
    AdlibUnRegister("_CheckMouse")
    DllClose($hUser32)
    _Exit()
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    Gruss Veronesi

  • Drag & Drop mit E-Mail

    • veronesi
    • 5. Januar 2012 um 06:59

    Hi

    Wir bekommen täglich dutzende E-Mails mit neuen Lizenzanfragen für eines meiner Programme.
    Alle diese Anfragen muss jemand in eine interne Datenbank einpflegen.

    Da das Abtippen oder Rüberkopieren mühsam ist, dachte ich an folgende Lösung:
    Ist es möglich, eine E-Mail aus Outlook per Drag & Drop auf ein z.B. Inputfeld in meiner GUI zu ziehen und ich kann dann den Inhalt der E-Mail selbständig parsen und automatisch korrekt in die Felder einfüllen? Der Benutzer müsste dann nur noch kontrollieren, ob alles korrekt abgefüllt ist. (Sollte in > 99% der Fälle stimmen). Ich brauche den Inhalt der Mail und den Absender.

    Weiss hier jemand einen Ansatzpunkt?
    Mit dem "normalen" Drag & Drop werden nur Dateien akzeptiert.
    Aber in Windows kann ich ja auch eine Datei aus Outlook auf den Desktop ziehen und ich bekomme eine Kopie der Mail.

    Vielen Dank.
    Veronesi

  • Upload via _WinHttp auf HTTPS Server

    • veronesi
    • 3. Januar 2012 um 12:39

    Hallo zusammen

    Vor kurzem habe ich mit Eurer Hilfe das nachfolgende Script erstellen, können, welches von einem HTTPS Server Dateien herunter laden kann.
    Nun müsste ich das ändern, und auch Dateien hochladen können.
    Leider bin ich bisher gescheitert.

    Kann mir bitte jemand helfen?

    Download File from HTTPS Server
    [autoit]

    Func _ConnectToUpdateServer($sFileToDownload, $sLocalFilePath)
    Local Const $sUserAgent = "XYZ"
    Local Const $sFullServerName = "https://www.firma.com"
    Local Const $sServerName = "www.firma.com"
    Local Const $sUsername = _StringEncrypt(0, "XYZ", "XYZ", 2)
    Local Const $sPassword = _StringEncrypt(0, "XYZ", "XYZ", 2)
    Local Const $sFolder = "/Verzeichnis/Log/"
    Local Const $sTmpFile = @AppDataCommonDir & "\XYZ\~TmpFile"
    Local Const $sTextContent = "text/"
    Local $hSession, $hConnect, $hRequest
    Local $sData, $hFile, $TotalBytes, $ReadBytes = 0
    Local $sContentType

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

    $hSession = _WinHttpOpen($sUserAgent, $WINHTTP_ACCESS_TYPE_DEFAULT_PROXY)
    If @error Then Return SetError(1, 1, 0) ;Could not initialize HTTP Functions
    _WinHttpSetTimeouts($hSession, 100, 10000, 5000, 5000)
    If @error Then
    _WinHttpCloseHandle($hSession)
    Return SetError(1, 2, 0) ;Could not set timeouts
    EndIf
    $hConnect = _WinHttpConnect($hSession, $sServerName, $INTERNET_DEFAULT_HTTPS_PORT)
    If @error Then
    _WinHttpCloseHandle($hSession)
    Return SetError(1, 3, 0) ;Could not connect to Server
    EndIf
    $hRequest = _WinHttpOpenRequest($hConnect, "GET", $sFolder & $sFileToDownload, Default, $sFullServerName, "*/*", $WINHTTP_FLAG_SECURE)
    If @error Then
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    Return SetError(1, 4, 0) ;Could not create a Http request
    EndIf
    _WinHttpSetOption($hRequest, $WINHTTP_OPTION_SECURITY_FLAGS, BitOr($SECURITY_FLAG_IGNORE_CERT_CN_INVALID, $SECURITY_FLAG_IGNORE_CERT_DATE_INVALID, $SECURITY_FLAG_IGNORE_UNKNOWN_CA))
    If @error Then
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    Return SetError(1, 5, 0) ;Could not set required options
    EndIf
    _WinHttpSetOption($hRequest, $WINHTTP_OPTION_USERNAME, $sUsername)
    If @error Then
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    Return SetError(1, 6, 0) ;Could not set required options
    EndIf
    _WinHttpSetOption($hRequest, $WINHTTP_OPTION_PASSWORD, $sPassword)
    If @error Then
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    Return SetError(1, 7, 0) ;Could not set required options
    EndIf
    _WinHttpSendRequest($hRequest)
    If @error Then
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    Return SetError(1, 8, 0) ;Could not send Http request
    EndIf
    _WinHttpReceiveResponse($hRequest)
    If @error Then
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    Return SetError(1, 9, 0) ;No Http Receive Response
    EndIf
    If _WinHttpQueryDataAvailable($hRequest) Then ;Data available => Read
    $TotalBytes = Number(_WinHttpQueryHeaders($hRequest, $WINHTTP_QUERY_CONTENT_LENGTH))
    If $TotalBytes = 0 Or $TotalBytes = "" Then $TotalBytes = 5000000
    $sContentType = _WinHttpQueryHeaders($hRequest, $WINHTTP_QUERY_CONTENT_TYPE)
    $hFile = FileOpen($sTmpFile, 10)
    While True
    $sData = _WinHttpReadData($hRequest, 2) ;Read in Binary mode
    $ReadBytes += @extended
    If @error Then ExitLoop
    ;_SetProgress($ReadBytes * 100 / $TotalBytes, $sFileToDownload, $NrActualFile, $NrOfFiles)
    FileWrite($hFile, BinaryToString($sData))
    WEnd
    FileFlush($hFile)
    FileClose($hFile)
    Else
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    Return SetError(1, 10, 0) ;No Data available for reading
    EndIf

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

    If StringInStr($sContentType, $sTextContent) Then ;If content is plain text, then check if it could be an error!
    $hFile = FileOpen($sTmpFile, 0)
    $sData = FileRead($hFile)
    FileClose($hFile)
    If StringInStr($sData, "<title>401 Authorization Required</title>") Or StringInStr($sData, "You don't have permission to access") Then
    FileDelete($sTmpFile)
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    Return SetError(2, 0, 0) ;Wrong password / no permissions
    EndIf
    If StringInStr($sData, "<!DOCTYPE html PUBLIC") Then
    FileDelete($sTmpFile)
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    Return SetError(3, 0, 0) ;File not found
    EndIf
    EndIf
    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hSession)
    FileMove($sTmpFile, $sLocalFilePath & "\" & $sFileToDownload, 9)
    Return 1
    EndFunc ;==>_ConnectToUpdateServer

    [/autoit]

    Irgendwie müsste ich bei _WinHttpOpenRequest anstelle von GET ein POST machen. Und dann vermutlich den neuen Dateinamen angeben.
    Und evtl. irgendwie die Funktion _WinHttpWriteData benutzen.

    Leider klappt das bei mir nicht.

    Upload...
    [autoit]

    $hSession = _WinHttpOpen($sUserAgent, $WINHTTP_ACCESS_TYPE_DEFAULT_PROXY)
    $hConnect = _WinHttpConnect($hSession, $sServerName, $INTERNET_DEFAULT_HTTPS_PORT)
    $hRequest = _WinHttpOpenRequest($hConnect, "POST", "Testdatei.txt", Default, $sFullServerName, "*/*", $WINHTTP_FLAG_SECURE)
    _WinHttpSetOption($hRequest, $WINHTTP_OPTION_SECURITY_FLAGS, BitOr($SECURITY_FLAG_IGNORE_CERT_CN_INVALID, $SECURITY_FLAG_IGNORE_CERT_DATE_INVALID, $SECURITY_FLAG_IGNORE_UNKNOWN_CA))
    _WinHttpSetOption($hRequest, $WINHTTP_OPTION_USERNAME, $sUsername)
    _WinHttpSetOption($hRequest, $WINHTTP_OPTION_PASSWORD, $sPassword)
    _WinHttpSendRequest($hRequest)
    _WinHttpWriteData($hRequest, "test")

    [/autoit]


    Ich bekomme zwar keine Fehlermeldungen zurück (die @error Auswertung war schon mal eingebaut gewesen :) ), aber es wird auch keine Datei mit dem Inhalt "test" erstellt.

    Vielen Dank für Eure Hilfe!
    Veronesi

  • Batch Datei als anderer Benutzer ausführen

    • veronesi
    • 28. Dezember 2011 um 19:23

    Wenn es nur darum geht, dass auch nachfolgende Befehle unter dem anderen Benutzer ausgeführt werden, dann schreib doch ein separates AU3 Skript für alle diese Befehle und rufe dieses (kompilierte) Programm danach vom Hauptprogramm mit RunAs auf!

    Gruß Veronesi

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™