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

Beiträge von an9el

  • Problem die Controls zu treffen wenn man bei Win 7 unter Anzeige dieselbige skaliert (125%)

    • an9el
    • 21. Juni 2012 um 11:12

    weiss hier keiner nen rat???

    dann werd ich mich nach was anderem umsehen müssen und autoit wohl für grössere objekte vergessen. ist doch mist wenn man ein programm schreibt und es funktioniert nur auf einem bestimmten pc mit einer bestimmten windows-einstellung. ein fixer font der windows-unabhängig funktioniert würde ja schon 99% der probleme lösen. sonst ist der text halt je nach skalierung zu gross, zu weit rechts, teilweise ausserhalb des screens etc. unbrauchbar so.

  • Problem die Controls zu treffen wenn man bei Win 7 unter Anzeige dieselbige skaliert (125%)

    • an9el
    • 27. Mai 2012 um 19:25

    *push*

    habe das gleiche problem!!! habe einige anwendungen als fullscreen (mit guicreate) erstellt. habe vorher den screen auf 1280x1024 umgeschaltet. da ich ich win7 habe und nen hd-monitor habe ich ebenfalls die anzeige mit der 125% optin angepasst, da man sonst auf dem hd-screen bei 1920x1080 nix mehr lesen kann. nun funktioniert aber mein autoit nicht mehr, da alles (anscheinend) um 125% zu gross dargestellt wird und so nichts mehr auf dem autoit-screen passt.

    da ich evtl. auch andere anwendungen als fullscreen haben möchte, gibts ne andere möglichkeit (gdi?) um z.b. einen eigenen fullscreen zu erstellen, den autoit sich fix einrichtet? will also texte und teils grafiken auf dem screeen darstellen (z.b. ne art vereinsverwaltung mit listen) - doch das geht natürlich nicht, wenn autoit sich an allen möglichen einstellungen von windows "klammert". je nach win-version und skalierung!!

  • EMail mit Bild als HTML?

    • an9el
    • 15. April 2012 um 19:46

    Zunächst einmal die aktuelle Version, da bei einem Fehler ein Programmabbruch stattfand. Nun habe ich noch eine error-Routine hinzugefügt, so dass man einen möglichen fehler auslesen kann. Ist mir nämlich passiert, da bei einem versand über gmx noch der "username" und "password" erforderlich ist!!!

    [autoit]

    #include <INet.au3>
    ;für mailfunc?

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

    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

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

    $h=_SendMail("Emailtext..blabla","c:\test.jpg","diezieladresse@gmx.net","betreff","von")
    if $h<>"" Then
    MsgBox(0,"EMAIL-ERROR",$h)
    Else
    MsgBox(0,"EMAIL","Erfolgreich versandt")
    EndIf

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

    Func _SendMail($s_text,$s_bild, $s_ToAddress, $s_Subject, $s_FromName, $s_SmtpServer="mail.gmx.net", $s_FromAddress="mailadresse@gmx.net", $s_AttachFiles="", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "username", $s_Password = "password", $IPPort = 25, $ssl = 0)
    Local $img,$file,$as_body

    $as_Body=$s_text&"<br>"&@CR ;text in email

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

    if $s_bild<>"" Then
    ;check ob ild zu gross...
    if FileGetSize($s_bild)>32000 Then
    ;resize-try
    $img=StringLeft($s_bild,stringlen($s_bild)-4)&"_org"&StringRight($s_bild,4)
    FileCopy($s_bild,$img,1)
    ShellExecuteWait("c:\bats\iviewer\i_view32.exe",$img&" /jpgq=60 /convert="&$s_bild)
    EndIf
    ;check ende
    if FileGetSize($s_bild)>32000 Then
    $as_Body=$as_Body&"<br>Bild (zu gross)" ;wurde bereits mit jpgq=60 gespeichert...
    Else
    $file=FileOpen($s_bild,16)
    $img=FileRead($file)
    FileClose($file)
    ;bild in email
    $as_body=$as_body&"<img src='data:image/"&StringRight($s_bild,3)&";base64,"&_base64($img)&"' alt='pic'>"
    EndIf
    EndIf

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

    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject

    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
    $objEmail.HTMLBody = $as_Body
    Else
    $objEmail.Textbody = $as_Body & @CRLF
    EndIf

    If $s_AttachFiles <> "" Then $objEmail.AddAttachment ($s_AttachFiles)

    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer

    If Number($IPPort) = 0 then $IPPort = 25

    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort

    ;Authenticated SMTP
    If $s_Username <> "" Then
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $ssl Then
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Set Email Importance
    Switch $s_Importance
    Case "High"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
    Case "Normal"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
    Case "Low"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch

    $objEmail.Fields.Update
    ; Sent the Message
    $objEmail.Send
    If @error Then
    SetError(2)
    Return $oMyRet[1]
    EndIf
    $objEmail=""
    EndFunc ;==>_INetSmtpMailCom

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

    Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ;ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
    SetError(1); something to check for when this function returns
    Return
    EndFunc ;==>MyErrFunc

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

    Func _Base64($Data, $LineBreak = 76)
    Local $Opcode = "0x5589E5FF7514535657E8410000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F005A8B5D088B7D108B4D0CE98F0000000FB633C1EE0201D68A06880731C083F901760C0FB6430125F0000000C1E8040FB63383E603C1E60409C601D68A0688470183F90176210FB6430225C0000000C1E8060FB6730183E60FC1E60209C601D68A06884702EB04C647023D83F90276100FB6730283E63F01D68A06884703EB04C647033D8D5B038D7F0483E903836DFC04750C8B45148945FC66B80D0A66AB85C90F8F69FFFFFFC607005F5E5BC9C21000"

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

    Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
    DllStructSetData($CodeBuffer, 1, $Opcode)

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

    $Data = Binary($Data)
    Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]")
    DllStructSetData($Input, 1, $Data)

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

    $LineBreak = Floor($LineBreak / 4) * 4
    Local $OputputSize = Ceiling(BinaryLen($Data) * 4 / 3)
    $OputputSize = $OputputSize + Ceiling($OputputSize / $LineBreak) * 2 + 4

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

    Local $Ouput = DllStructCreate("char[" & $OputputSize & "]")
    DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
    "ptr", DllStructGetPtr($Input), _
    "int", BinaryLen($Data), _
    "ptr", DllStructGetPtr($Ouput), _
    "uint", $LineBreak)
    Return DllStructGetData($Ouput, 1)
    EndFunc

    [/autoit]

    Alina: Ich selbst habe mir dieses Script auch aus diversen Links und Beispielen im www zusammengebastelt. Da in der eigentlichen EMail-Function die Stringvariable $objEmail.HTMLBody(=$as_Body) genutzt wird ist die maximale datenanzahl auf 32768 bytes beschränkt. da gehen noch ein paar weg für den restlichen html-code, daher habe ich bilder über 32kb vorab versucht zu verkleinern.
    wenn hier jemand weiss wie man das umgehen kann: her mit tips!

    @andy:daher auch gleich zu deiner frage: was soll gdi ein? habe keine function bei autoit gefunden die so heisst. und zu irfanview: 1.wandelt mir irfanview jedes bild in ein jpeg-bild um und gleichzeitig 2.kann ich die grösse des bildes (also bytes) stufenlos nach unten schrauben, indem ich die qualität des jpg-bildes angebe. bei einer qualität von 60 (jpgq=60) wird das originalbild nur unwesentlich schlechter, aber die dateigrösse schrumpft beträchtlich. und da ich ja das problem mit den 32kbytes habe..nunja...2 fliegen mit 1 klappe.

    @progandy: sorry, wie gesagt, habe mir dieses scipt selbst hier und da gesucht und zusammengebastelt, weiss also selbst nicht genau wie die eigentliche mail-function arbeitet (brauche ich da das include inet.au3 überhaupt???). jedenfalls weiss ich also 1.nicht wie ich das in autoit schreiben sollte und 2.welchen vorteil habe ich den damit?


    edit: zeile 9 geändert, "von" hat gefehlt.

  • EMail mit Bild als HTML?

    • an9el
    • 13. April 2012 um 00:30

    juhu! habs hinbekommen. hat zwar gedauert, aber geht!

    hier mein script (falls es jemand braucht), am anfang wird noch geprüft ob das bild zu gross ist. wenns zu gross ist (für eine stringvariable) wird es verkleinert mit hilfe des programmes irfanview (freeware). das programm liegt hier auf c:\iviewer. ansonsten kann man den teil auch weglassen mit dem verkleinern und einfach nur prüfen obs zu gross ist (dann kommt ne textmeldung dass das bild zu gross ist in der email)

    [autoit]


    #include <INet.au3>

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

    _sendmail("emailtext","c:\test2.jpg")

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

    $err = @error
    If @error = 0 Then
    MsgBox(0, "Success!", "Mail sent")
    Else
    MsgBox(0, "Error!", "Mail failed with error code " & $err)
    EndIf
    Exit

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

    Func _SendMail($s_text,$s_bild, $s_Subject="betreff", $s_FromName="absender", $s_SmtpServer="mail.gmx.net", $s_FromAddress="emailadresse@gmx.net", $s_ToAddress="emailadresse@wohin.de", $s_AttachFiles="", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
    Local $img,$file

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

    $as_Body=$s_text&"<br>"&@CR ;text in email

    ;check ob ild zu gross...
    if FileGetSize($s_bild)>32000 Then
    ;resize-try
    $img=StringLeft($s_bild,stringlen($s_bild)-4)&"_org"&StringRight($s_bild,4)
    FileCopy($s_bild,$img,1)
    ShellExecuteWait("c:\bats\iviewer\i_view32.exe",$img&" /jpgq=60 /convert="&$s_bild)
    EndIf
    ;check ende

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

    if FileGetSize($s_bild)>32000 Then
    $as_Body=$as_Body&"<br>Bild (zu gross)"
    Else
    $file=FileOpen($s_bild,16)
    $img=FileRead($file)
    FileClose($file)
    ;bild in email
    $as_body=$as_body&"<img src='data:image/"&StringRight($s_bild,3)&";base64,"&_base64($img)&"' alt='pic'>"
    EndIf

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

    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject

    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
    $objEmail.HTMLBody = $as_Body
    Else
    $objEmail.Textbody = $as_Body & @CRLF
    EndIf

    If $s_AttachFiles <> "" Then $objEmail.AddAttachment ($s_AttachFiles)

    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer

    If Number($IPPort) = 0 then $IPPort = 25

    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort

    ;Authenticated SMTP
    If $s_Username <> "" Then
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $ssl Then
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Set Email Importance
    Switch $s_Importance
    Case "High"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
    Case "Normal"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
    Case "Low"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch

    $objEmail.Fields.Update
    ; Sent the Message
    $objEmail.Send
    If @error Then
    SetError(2)
    Return $oMyRet[1]
    EndIf
    $objEmail=""
    EndFunc ;==>_INetSmtpMailCom

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

    Func _Base64($Data, $LineBreak = 76)
    Local $Opcode = "0x5589E5FF7514535657E8410000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F005A8B5D088B7D108B4D0CE98F0000000FB633C1EE0201D68A06880731C083F901760C0FB6430125F0000000C1E8040FB63383E603C1E60409C601D68A0688470183F90176210FB6430225C0000000C1E8060FB6730183E60FC1E60209C601D68A06884702EB04C647023D83F90276100FB6730283E63F01D68A06884703EB04C647033D8D5B038D7F0483E903836DFC04750C8B45148945FC66B80D0A66AB85C90F8F69FFFFFFC607005F5E5BC9C21000"

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

    Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
    DllStructSetData($CodeBuffer, 1, $Opcode)

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

    $Data = Binary($Data)
    Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]")
    DllStructSetData($Input, 1, $Data)

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

    $LineBreak = Floor($LineBreak / 4) * 4
    Local $OputputSize = Ceiling(BinaryLen($Data) * 4 / 3)
    $OputputSize = $OputputSize + Ceiling($OputputSize / $LineBreak) * 2 + 4

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

    Local $Ouput = DllStructCreate("char[" & $OputputSize & "]")
    DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
    "ptr", DllStructGetPtr($Input), _
    "int", BinaryLen($Data), _
    "ptr", DllStructGetPtr($Ouput), _
    "uint", $LineBreak)
    Return DllStructGetData($Ouput, 1)
    EndFunc

    [/autoit]
  • EMail mit Bild als HTML?

    • an9el
    • 11. April 2012 um 11:18

    Hallo, suche seit Tagen (nicht nur hier im Forum) nach einer Lösung, komme aber nicht weiter, daher bitte ich um eure Hilfe!

    Ich möchte mit Autoit eine EMail verschicken und zwar eine sogenannte HTML-EMail mit "inline(?)"-Bild. Bislang bin ich den Umweg gegangen und habe mein EMail-Programm auf dem PC per Script gestartet und dort (alles per mouseclick-commandos etc) eine EMail erstellt, ein Bild einkopiert und versendet. Das Bild ist also nicht als Anhang drin, sondern befindet sich quasi im "body" der email eingebettet.
    Ich habe versucht eine solche EMail mit diesem Script hier:
    http://www.autoitscript.com/forum/topic/23…InetSmtpMailCom
    nachzubauen, scheitere aber an der BODY-Einbindung meines Bildes.

    Also, ich möchte das EMail-Script so ändern, dass es einfach nur eine einzelne Textzeile sendet, "IP xx.yy.zz.www 12:32 Uhr" (IP-Nr hab ich) und darunter soll sich gleich das Bild befinden. Es handelt sich hierbei um ein Bild was natürlich auf meiner Festplatte ist, sagen wir einfach es ist auf "c:\test.jpg", Grösse ist 320x240, JPEG-Format.

    Wie stelle ich es an??? Habe schon das Script geändert (Attachfiles raus etc., nur als html-email), habe mir von ner php-seite den inhalt des bodys ins script kopiert (auf dieser seite ganz unten stehts: http://www.infos24.de/phpe/handbuch/23_php_mail.htm#8), aber es funktioniert nicht. statt diesen "body" auszuführen bekomme ich als email einfach nur den text des body zum lesen - und natürlich kein bild weit und breit hilfe!!!

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™