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

Beiträge von mirko2002

  • Projekt Color Catcher / HEX in RGB umrechnen

    • mirko2002
    • 7. Dezember 2012 um 14:26

    Ahh... alles klar... auch heir wieder variablen durcheinander gebracht. Kommt, wenn man schön mit Copy&Paste arbeitet -.-

    Ok hab es soweit noch erweitert, dass er auch die Slider aktualisiert, wenn man mit der Maus auf das Colorwheel klickt.

    Da fällt mir derzeit noch ein weiterer Bug ein, der nichts mehr mit den Slidern zu tun hat.

    Ich hab ja ne GDI Funktion eingebaut, dass an der Stelle wo man mit der Mouse aufs Colorwheel geklickt hat, er nen kleinen "Cursor" hinterlässt (siehe Bild oben im Anhang).

    Anhand der MouseCoords setzte er den Cursor aber total falsch. Hab ich dann Minus-Werte mit in die Coords reingerechnet macht er den Cursor auch da wo ich klicke. Bis zu dem Zeitfenster wo ich die GUI verschiebe... dann zerhaut er mir auch wieder total die Koordinaten - wobei ich nicht weiss warum.

    Siehe (im Original Code) Zeile 73-84... dort liest er die Mouseposi aus und zeichnet an dieser Stelle den Cursor. Er ermittelt nahand der Mouseposi ja auch den Korrekten Farbwert, daher weiss ich nicht warum es zum zeichnen auf einmal falsch ist.

  • Projekt Color Catcher / HEX in RGB umrechnen

    • mirko2002
    • 7. Dezember 2012 um 12:54

    Autsch... stimmt. Da bin ich wohl mit einer Variable durcheinandergekommen. Dennoch funktioniert es nicht. Egal welchen Hexwert ich eingebe - die Slider bleiben unverändert auf 0 stehen... :(

  • Projekt Color Catcher / HEX in RGB umrechnen

    • mirko2002
    • 7. Dezember 2012 um 11:26

    Hm versteh ich nicht.... der Wert im Inputfeld wird so eingetragen: #FFFFFF (als beispiel)... demnach müsste der StringRegExp doch richtig sein?

  • Projekt Color Catcher / HEX in RGB umrechnen

    • mirko2002
    • 6. Dezember 2012 um 13:18

    Hallo zusammen,

    ich erstelle grad ein kleines Tool (habs einfach mal Color Catcher genannt) welche den HEX-Wert einer Farbe bei Mausklick wiedergibt.

    Soweit klappt das auch erstmal, nur werden bei direkter Eingabe des HEX-Wertes, die Werte nicht auf die Slider für die RGB Farben übernommen.

    Ich muss dazusagen, dass ich viele Codeschnipsel aus einem von BugFix' Tools verwende, da ich sonst gar nicht soweit gekommen wäre mit dem RGB Zeugs.

    Hier mal der Code:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #Include <Misc.au3>
    #include <GDIPlus.au3>
    #Include <WinAPI.au3>
    #include <StaticConstants.au3>

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

    Global $mainframe, $hImage, $hGraphic, $hImage1, $mouseposi

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

    $colorwheel = FileInstall("C:\Documents and Settings\751076\Desktop\AutoIT Tools\Color Catcher\colorwheel.png", @TempDir & "\colorwheel.png")
    $kreispkt2 = FileInstall("C:\Documents and Settings\751076\Desktop\AutoIT Tools\Color Catcher\kreispkt2.png", @TempDir & "\kreispkt2.png")

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

    $mainframe = GUICreate("Color Catcher", 800, 530)

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

    _GDIPlus_StartUp()
    $hImage = _GDIPlus_ImageLoadFromFile(@TempDir & "\colorwheel.png")
    $hImage1 = _GDIPlus_ImageLoadFromFile(@TempDir & "\kreispkt2.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($mainframe)

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

    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")

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

    GUICtrlCreateLabel("Ermittelte Farbe:", 540, 17, 80, 20)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $color_view = GUICtrlCreateLabel("", 540, 34, 100, 46)
    GUICtrlCreateLabel("HEX-Wert:", 540, 85, 60, 20)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $ausgabe_farbe = GUICtrlCreateInput("", 540, 100, 60, 20)
    GUICtrlSetBkColor($color_view, '0x' & "FFFFFF")

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

    $slRed = GUICtrlCreateSlider(540, 200, 250, 20, 0)
    GUICtrlSetLimit(-1, 255, 0)
    GUICtrlSetBkColor(-1, 0xFF0000)
    $slGreen = GUICtrlCreateSlider(540, 250, 250, 20, 0)
    GUICtrlSetLimit(-1, 255, 0)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $slBlue = GUICtrlCreateSlider(540, 300, 250, 20, 0)
    GUICtrlSetLimit(-1, 255, 0)
    GUICtrlSetBkColor(-1, 0x0000FF)
    $InRed = GUICtrlCreateInput("", 570, 175, 40, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
    $InGreen = GUICtrlCreateInput("", 570, 225, 40, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
    $InBlue = GUICtrlCreateInput("", 570, 275, 40, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
    $lbRed = GUICtrlCreateLabel("Rot", 540, 180, 21, 12)
    $lbGreen = GUICtrlCreateLabel("Grün", 540, 230, 27, 12)
    $lbBlue = GUICtrlCreateLabel("Blau", 540, 280, 25, 12)

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

    GUIsetstate(@SW_SHOW, $mainframe)

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

    While 1
    Switch (GUIGetMsg())
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ImageDispose($hImage1)
    _GDIPlus_ShutDown()
    Exit
    Case $InRed
    InRedChange()
    Case $InGreen
    InGreenChange()
    Case $InBlue
    InBlueChange()
    Case $ausgabe_farbe
    InHexChange()
    Case $slRed
    _Slider2Hex()
    Case $slGreen
    _Slider2Hex()
    Case $slBlue
    _Slider2Hex()
    EndSwitch

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

    If _IsPressed("01") Then
    Sleep(75)
    $mouseposi = MouseGetPos()
    $farbe = Hex(PixelGetColor($mouseposi[0], $mouseposi[1]),6)
    If $farbe = 'D4D0C8' Or $farbe = 'FFFFFF' Or $farbe = '000000' Or $farbe = 'FF0000' Or $farbe = '00FF00' Or $farbe = '0000FF' Or $farbe = '808080' Or $farbe = '404040' Or $farbe = '0A246A' Then
    Else
    GUICtrlSetData($ausgabe_farbe, "#" & $farbe)
    GUICtrlSetBkColor($color_view, '0x' & $farbe)
    _WinAPI_RedrawWindow($mainframe, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage1, $mouseposi[0] -416, $mouseposi[1] -236)
    _WinAPI_RedrawWindow($mainframe, 0, 0, $RDW_VALIDATE)
    EndIf
    EndIf
    WEnd

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

    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($mainframe, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
    _WinAPI_RedrawWindow($mainframe, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func InBlueChange()
    $tmp = GUICtrlRead($InBlue)
    If $tmp < 0 Or $tmp > 255 Then
    GUICtrlSetData($InBlue, GUICtrlRead($slBlue))
    Return
    EndIf
    GUICtrlSetData($slBlue, $tmp)
    _Slider2Hex()
    EndFunc

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

    Func InGreenChange()
    $tmp = GUICtrlRead($InGreen)
    If $tmp < 0 Or $tmp > 255 Then
    GUICtrlSetData($InGreen, GUICtrlRead($slGreen))
    Return
    EndIf
    GUICtrlSetData($slGreen, $tmp)
    _Slider2Hex()
    EndFunc

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

    Func InRedChange()
    $tmp = GUICtrlRead($InRed)
    If $tmp < 0 Or $tmp > 255 Then
    GUICtrlSetData($InRed, GUICtrlRead($slRed))
    Return
    EndIf
    GUICtrlSetData($slRed, $tmp)
    _Slider2Hex()
    EndFunc

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

    Func InHexChange()
    $tmp = GUICtrlRead($farbe)
    If Not StringRegExp($tmp, '(#[0-9A-Fa-f]{6}(?!.))') Then
    _Slider2Hex()
    Return
    EndIf
    _Hex2Slider()
    EndFunc

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

    Func _Slider2Hex()
    GUICtrlSetData($InBlue, GUICtrlRead($slBlue))
    GUICtrlSetData($InGreen, GUICtrlRead($slGreen))
    GUICtrlSetData($InRed, GUICtrlRead($slRed))
    $red = Hex(GUICtrlRead($slRed), 2)
    $green = Hex(GUICtrlRead($slGreen), 2)
    $blue = Hex(GUICtrlRead($slBlue), 2)
    $hexColor1 = '#' & $red & $green & $blue
    $hexColor2 = '0x' & $red & $green & $blue
    GUICtrlSetData($ausgabe_farbe, $hexColor1)
    GUICtrlSetBkColor($color_view, $hexColor2)
    EndFunc

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

    Func _Hex2Slider()
    $red = Dec(StringMid(GUICtrlRead($farbe), 3, 2))
    $green = Dec(StringMid(GUICtrlRead($farbe), 5, 2))
    $blue = Dec(StringRight(GUICtrlRead($farbe), 2))
    GUICtrlSetData($InRed, $red)
    GUICtrlSetData($InGreen, $green)
    GUICtrlSetData($InBlue, $blue)
    GUICtrlSetData($slRed, $red)
    GUICtrlSetData($slGreen, $green)
    GUICtrlSetData($slBlue, $blue)
    GUICtrlSetBkColor($color_view, GUICtrlRead($farbe))
    EndFunc

    [/autoit]

    Die übergabe von Slider auf HEX ins Inputfeld klappt... aber leider nicht umgedreht und ich versteh nicht, warum?

    Bilder

    • kreispkt2.png
      • 161 Byte
      • 6 × 6
  • Internet Explorer steuern

    • mirko2002
    • 6. Dezember 2012 um 10:48

    Nicht das ich wüsste.... ich kann im Quellcode nur einmal die Verwendung eines iframes sehen - und soweit ich sehe ist das nur für ein Errorreporting. Ich kann gern mal den Quellcode posten und lediglich die 2-3 Direktlinks abändern, so dass man nicht die richtige Adresse sieht?

  • Internet Explorer steuern

    • mirko2002
    • 6. Dezember 2012 um 09:16

    Naja kann die URL falsch sein, wenn er bei Ausführung des Scripts die Seite ja im Explorerfenster noch öffnet? Erst nachdem die Seite dann vollständig geladen wurde kommt in der Scite Console der Fehler, das er das Objekt nicht finden kann:

    --> IE.au3 V2.4-0 Warning from function _IEGetObjById, $_IEStatus_NoMatch (win0divFDX_QUERY_F_WRK_FDX_QUERY_AS_GROUP)

    Was aber quatsch ist. Man sieht ja anhand des Quellcodes, das der DIV-Container so heisst...

  • Internet Explorer steuern

    • mirko2002
    • 5. Dezember 2012 um 21:59

    Das der/diejenige nicht in mein Intranet kommt ist mir schon klar ;)

    Ich dachte, das man anhand der HTML Schnipsel bereits erkennen könnte, warum das ganze nicht funktioniert. In meinen Augen sieht der HTML Code ja fast identisch aus, jedoch nimmt er es nicht an.

    Ich weiss nicht inwiefern das ganze drumherum entscheidend ist, da mein HTML schon lange lange her is....

  • Internet Explorer steuern

    • mirko2002
    • 5. Dezember 2012 um 10:08

    Ooookay.... ich hab gestern nochmal etwas weiter recherchiert und auch gesehen, dass man mit dem HTML Quellcode arbeiten muss um die bestimmten Controls ansprechen zu können.

    Soweit so gut - nun kommt folgendes Problem. Zum testen hab ich erstmal versucht (man will ja klein anfangen :) ), dass beim Dropdownmenü eine Vorauswahl getroffen wird.

    An folgendem Beispiel aus dem autoitscript.com Forum habe ich mich orientiert:

    Spoiler anzeigen
    [autoit]


    #include <IE.au3>

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

    $site = "http://software.intel.com/en-us/articles/vcsource-samples-optimizing-opencl/"
    $option = "Download all OpenCL samples"
    Local $oIE = _IECreate($site)
    Local $oDownloadSamples = _IEGetObjById($oIE,"download-samples")
    Local $oDownloadSamplesSelect = _IETagNameGetCollection($oDownloadSamples, "select", 0)
    _IEAction($oDownloadSamplesSelect, "focus")

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

    For $sample in $oDownloadSamplesSelect
    If $sample.innerText == $option Then
    _IEFormElementOptionSelect($oDownloadSamplesSelect, $option, 1, "byText")
    EndIf
    Next

    [/autoit]

    Der Quellcode dazu:

    Spoiler anzeigen
    PHP
    <div id="download-samples">
    <select>
    	<option>Select sample...</option>
    	<option value="http://software.intel.com/file/43405">Download this sample only</option>
    	<option value="http://software.intel.com/file/43406">Download all OpenCL samples</option> </select>
    	<a href="#" class="button sampledownload" title="Download">DOWNLOAD</a>
    </div>

    Das klappt... er öffnet die Seite und wählt rechts im Pulldownmenü den entsprechenden eintrag, der im autoIt Quellcode festgelegt wurde.

    Nun habe ich das ganze in unserer Intranetseite versucht:

    Spoiler anzeigen
    [autoit]


    #include <IE.au3>

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

    $site = "https://meine-seite.com/psp/fsprd/EMPLOYEE/ERP/c/FDX_QUERYLOG.FDX_QUERY_TODO.GBL?PORTALPARAM_PTCNAV=FDX_QUERY_TODO_GBL&EOPP.SCNode=ERP&EOPP.SCPortal=EMPLOYEE&EOPP.SCName=PT_PTPP_PORTAL_ROOT&EOPP.SCLabel=Use&EOPP.SCFName=FDX_QL_USE&EOPP.SCSecondary=true&EOPP.SCPTfname=FDX_QL_USE&FolderPath=PORTAL_ROOT_OBJECT.FDX_QL_QUERYLOG.FDX_QL_USE.FDX_QUERY_TODO_GBL&IsFolder=false"
    $option = "CS-Supplies"
    Local $oIE = _IECreate($site)
    Local $oDownloadSamples = _IEGetObjById($oIE,"win0divFDX_QUERY_F_WRK_FDX_QUERY_AS_GROUP")
    Local $oDownloadSamplesSelect = _IETagNameGetCollection($oDownloadSamples, "select", 0)
    _IEAction($oDownloadSamplesSelect, "focus")

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

    For $sample in $oDownloadSamplesSelect
    If $sample.innerText == $option Then
    _IEFormElementOptionSelect($oDownloadSamplesSelect, $option, 1, "byText")
    EndIf
    Next

    [/autoit]

    Der Quellcode dazu:

    Spoiler anzeigen
    PHP
    <div id="win0divFDX_QUERY_F_WRK_FDX_QUERY_AS_GROUP">
    <select name="FDX_QUERY_F_WRK_FDX_QUERY_AS_GROUP" id="FDX_QUERY_F_WRK_FDX_QUERY_AS_GROUP" tabindex="20" size="1" class="PSDROPDOWNLIST" style="width:237px; " onchange="addchg_win0(this);submitAction_win0(this.form,this.name);" psnchg="0">
    <option value=""></option>
    <option value="CS-ADDCUST" selected="selected">CS-ADDCUST</option>
    <option value="CS-MBG">CS-MBG</option>
    <option value="CS-Supplies">CS-Supplies</option>
    <option value="GTS-Call Out">GTS-Call Out</option>
    </select>
    </div>

    Ich blick es nicht :(

    Über das Script ruft er meine Intranetseite noch auf, jedoch kommt dann ein Fehler in der Console:

    Zitat


    >Running:(3.3.8.1):C:\Documents and Settings\751076\Desktop\AutoIT Tools\AutoIT3\autoit3.exe "C:\Documents and Settings\751076\Desktop\test.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    --> IE.au3 V2.4-0 Warning from function _IEGetObjById, $_IEStatus_NoMatch (win0divFDX_QUERY_F_WRK_FDX_QUERY_AS_GROUP)
    --> IE.au3 V2.4-0 Error from function _IETagNameGetCollection, $_IEStatus_InvalidDataType
    --> IE.au3 V2.4-0 Error from function _IEAction, $_IEStatus_InvalidDataType
    C:\Documents and Settings\751076\Desktop\test.au3 (51) : ==> Variable must be of type "Object".:
    For $sample in $oDownloadSamplesSelect
    For $sample in $oDownloadSamplesSelect^ ERROR
    ->10:06:25 AutoIT3.exe ended.rc:1
    >Exit code: 1 Time: 4.344

    Alles anzeigen

    Soweit ich das verstehe, findet er keine ID mit dem Namen win0divFDX_QUERY_F_WRK_FDX_QUERY_AS_GROUP... laut Quellcode heisst sie aber so.

    Wer kann mir hier weiterhelfen? ;(;(;(

  • Checkbox auslesen - GUICtrlRead-Ausgabe vertauscht

    • mirko2002
    • 4. Dezember 2012 um 14:45

    Aber wozu permanent den Tooltip oder ist das nur zu Testzwecken eingebaut?

  • Checkbox auslesen - GUICtrlRead-Ausgabe vertauscht

    • mirko2002
    • 4. Dezember 2012 um 13:37
    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=C:\Documents and Settings\z0035rer\Desktop\DD\DD.kxf
    $Form1 = GUICreate("Database Delete", 623, 442, 192, 124)
    $Group1 = GUICtrlCreateGroup("Select Database", 16, 16, 177, 209)
    $Radio1 = GUICtrlCreateRadio("REP DB", 32, 56, 113, 17, BitOR($GUI_SS_DEFAULT_RADIO,$BS_RIGHTBUTTON))
    $Radio2 = GUICtrlCreateRadio("COM DB", 32, 96, 113, 17, BitOR($GUI_SS_DEFAULT_RADIO,$BS_RIGHTBUTTON))
    $Radio3 = GUICtrlCreateRadio("BUS DB", 32, 136, 113, 17, BitOR($GUI_SS_DEFAULT_RADIO,$BS_RIGHTBUTTON))
    $Radio4 = GUICtrlCreateRadio("LOG DB", 32, 176, 113, 17, BitOR($GUI_SS_DEFAULT_RADIO,$BS_RIGHTBUTTON))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Verbindung ", 224, 16, 353, 209)
    $Checkbox1 = GUICtrlCreateCheckbox("automatisch", 256, 56, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Checkbox2 = GUICtrlCreateCheckbox("manuell", 424, 56, 97, 17)
    $Input1 = GUICtrlCreateInput("DB - Name", 256, 112, 121, 21)
    $Input2 = GUICtrlCreateInput("Benutzer", 256, 160, 121, 21)
    $Input3 = GUICtrlCreateInput("Passwort", 408, 112, 121, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $checkbox1
    Switch BitAND(GUICtrlRead($checkbox1), $GUI_CHECKED) = $GUI_CHECKED
    Case True
    ToolTip("checked")
    Case False
    ToolTip("unchecked")
    EndSwitch
    Case $checkbox2
    Switch BitAND(GUICtrlRead($checkbox2), $GUI_CHECKED) = $GUI_CHECKED
    Case True
    ToolTip("checked")
    Case False
    ToolTip("unchecked")
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]

    So gehts....

  • Internet Explorer steuern

    • mirko2002
    • 4. Dezember 2012 um 12:20

    Hallo zusammen,

    ich versuche mich gerade mal an was (für mich) ganz neues in AutoIT.

    Hier auf Arbeit arbeiten wir mit einer internen Seite. Ich würde gern diverse Sachen dort auslesen, damit mein Tool dann bestimmte Sachen ausführt. Klingt einfach, scheints dann aber doch nicht.

    Entweder hab ich im Internet falsch gesucht oder es gibt wirklich nicht so viel Info darüber. Ich hab soweit verstanden, dass ich das AutoIT Window Info Tool verwenden muss. (Habe mir auch mal das Winspector installiert... doch da blick ich ja gar nicht mehr durch)

    Ich hab mal 3 Screenshots angehangen wie die Seite aussieht. Ich bekomme, wenn ich das Window Info Tool verwende, nicht wirklich Infos raus. Bzw wüsste ich jetzt nicht wie ich:

    A: Das Dropdownmenü rechts ansprechen kann (Screenshot 2)
    B: Ich darunter den Refreshlink betätigen kann. Ich sehe lediglich eine Änderung im Infotool wenn ich mit der Maus ganz unten über die Links rüberfahre. Dann werden mir Javascripts angegeben.

    Da dies für mich komplett neu ist, könnte mir wer unter die Arme helfen und mir ein paar Beispiele zu meinen Screenshots geben?

    Ich steh hier total auf dem Schlauch -.-

    Danke und LG

    Dateien

    1.PNG 87,41 kB – 0 Downloads 2.PNG 86,13 kB – 0 Downloads 3.PNG 88,97 kB – 0 Downloads
  • Ordner durch Array erstellen

    • mirko2002
    • 29. November 2012 um 13:27

    Omg es war soooo einfach.

    Vielen Dank.... man sieht mal wieder den Wald vor lauter Bäumen nicht. Läuft wie erwartet perfekt!

  • Ordner durch Array erstellen

    • mirko2002
    • 29. November 2012 um 09:28

    Hallo alle zusammeln,

    derzeit bastel ich gerade ein kleines Tool für einen Arbeitskollegen, der sich folgendes wünschte:

    Er gibt in der GUI einen Projektnamen in ein Inputfeld, wählt dann über eine Browsefunktion einen Hauptordner an und kann dann noch auswählen ob bzw wieviele Unterordner er dazu haben möchte.

    Das läuft bisher auch soweit. Nur jetzt habe ich das Problem, dass ich gerne Namen für die Unterordner individuell angeben kann.

    Als Beispiel ich wähle 3 Unterordner, dann soll er mich fragen "Wie lautet Ordner 1?" und "Wie lautet Ordner 2" usw. Derzeit werden die Unterordner in einem Array einfach durchnummeriert erstellt.

    Mit AutoIt komm ich schon ganz gut klar - jedoch ist das Thema Array für mich absolut schwer zu verstehen und daher hab ich da doch arge Probleme mit.

    Hier mal das aktuelle Script:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt("GUIResizeMode",$GUI_DOCKALL)

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

    Global $subfolder[30]

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

    $version = "1.0"
    $mainframe = GUICreate("Project Creator " & $version, 300, 200)

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

    GUICtrlCreateLabel("Projektname:", 20, 10)
    $project = GUICtrlCreateInput("", 20, 30, 200, 20)

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

    GUICtrlCreateLabel("Projektpfad:", 20, 60)
    $folder = GUICtrlCreateInput("", 20, 80, 200, 20)
    $browse = GUICtrlCreateButton("Browse", 230, 80, 50, 18)

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

    GUICtrlCreateLabel("Anzahl Unterordner:", 20, 110, 220, 15)
    $subfolder_count = GUICtrlCreateInput("", 20, 130, 20, 20)

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

    $start = GUICtrlCreateButton("", 100, 155, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Projekt anlegen")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $label1 = GUICtrlCreateLabel("Projekt anlegen", 130, 160)

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

    GUIsetstate(@SW_SHOW, $mainframe)

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

    $read_subfolder_count = GUICtrlRead($subfolder_count)

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

    While 1
    Switch (GUIGetMsg())
    Case $GUI_EVENT_CLOSE
    Exit
    Case $browse
    $var = FileSelectFolder("Wähle einen Ordner wo das Projekt erstellt werden soll:", "", 1)

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

    If @error Then
    MsgBox(4096,"","Kein Ordner ausgewählt!")
    Else
    GUICtrlSetData($folder, $var & "\")
    EndIf
    Case $start
    $read_project = GUICtrlRead($project)
    $read_folder = GUICtrlRead($folder)
    $read_subfolder_count = GUICtrlRead($subfolder_count)
    If $read_folder = "" Then
    MsgBox(0,"ALERT", "Es wurde kein Projektpfad angegeben")
    ElseIf $read_project = "" Then
    MsgBox(0,"ALERT", "Es wurde kein Projektname angegeben")
    ElseIf $read_subfolder_count = "" Then
    $read_project = GUICtrlRead($project)
    $read_folder = GUICtrlRead($folder)
    DirCreate($read_folder & $read_project)
    $label2 = GUICtrlCreateLabel("Projekt erstellt", 130, 160)
    GUICtrlSetColor($label2, 0x33CC33)
    Sleep(3000)
    GUICtrlSetState(-1, $GUI_HIDE)
    Else
    DirCreate($read_folder & $read_project)
    Local $arTest[$read_subfolder_count]
    For $i = 0 To UBound($arTest) -1
    $arTest[$i] = $i +1
    DirCreate($read_folder & $read_project & "\" & $arTest[$i])
    Next

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

    $read_project = GUICtrlRead($project)
    $read_folder = GUICtrlRead($folder)
    $label2 = GUICtrlCreateLabel("Projekt erstellt", 130, 160)
    GUICtrlSetColor($label2, 0x33CC33)
    Sleep(3000)
    GUICtrlSetState(-1, $GUI_HIDE)
    EndIf
    EndSwitch

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

    If GUICtrlRead($subfolder_count) <> $read_subfolder_count Then
    $read_subfolder_count = GUICtrlRead($subfolder_count)
    If GUICtrlRead($subfolder_count) >= 31 Then
    MsgBox(0,"","Zuviele Ordner")
    Else
    Local $x = 30
    For $i = 0 To $read_subfolder_count -1
    $subfolder[$i] = GUICtrlCreateInput("", 290, $x, 135, 20)
    $x += 30
    Next
    _GUIAutoSize($mainframe, "C", "C")
    EndIf
    EndIf
    $read_subfolder_count = GUICtrlRead($subfolder_count)
    WEnd

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

    Func _GUIAutoSize($hGUI, $GUIX = Default, $GUIY = Default)
    Local Const $GW_CHILD = 0x5
    Local Const $GW_HWNDNEXT = 0x2
    Local Const $GWL_STYLE = 0xFFFFFFF0
    Local Const $WS_VISIBLE = 0x10000000
    Local $aClient, $aHwnd, $aID, $aPos, $aStyle, $NCW, $NCH
    ; ---------------------------------------------------------------------------------------------------------------------------
    ; Dimensionen des NonClient-Bereichs des Fensters ermitteln
    If Not IsHWnd($hGUI) Then Return SetError(1, 1, False)
    $aPos = WinGetPos($hGUI)
    $aClient = WinGetClientSize($hGUI)
    $NCW = $aPos[2] - $aClient[0]
    $NCH = $aPos[3] - $aClient[1]
    ; ---------------------------------------------------------------------------------------------------------------------------
    ; Positionen der Controls ermitteln
    Local $aSize[4] = [999999, 999999, 0, 0]
    $aHwnd = DllCall("User32.dll", "HWND", "GetWindow", "HWND", $hGUI, "UInt", $GW_CHILD)
    If @error Or $aHwnd[0] = 0 Then Return SetError(1, 2, False)
    While $aHwnd[0]
    $aStyle = DllCall("User32.dll", "Long", "GetWindowLong", "HWND", $aHwnd[0], "Int", $GWL_STYLE)
    If BitAND($aStyle[0], $WS_VISIBLE) = $WS_VISIBLE Then
    $aID = DllCall("User32.dll", "Int", "GetDlgCtrlID", "HWND", $aHwnd[0])
    $aPos = ControlGetPos($hGUI, "", $aID[0])
    $aPos[2] += $aPos[0]
    $aPos[3] += $aPos[1]
    If $aPos[0] < $aSize[0] Then $aSize[0] = $aPos[0]
    If $aPos[1] < $aSize[1] Then $aSize[1] = $aPos[1]
    If $aPos[2] > $aSize[2] Then $aSize[2] = $aPos[2]
    If $aPos[3] > $aSize[3] Then $aSize[3] = $aPos[3]
    EndIf
    $aHwnd = DllCall("User32.dll", "HWND", "GetWindow", "HWND", $aHwnd[0], "UInt", $GW_HWNDNEXT)
    If @error Then Return SetError(1, 2, False)
    WEnd
    If $aSize[0] = 999999 Then Return SetError(1, 3, False)
    ; ---------------------------------------------------------------------------------------------------------------------------
    ; Fenster anpassen
    Local $GUIW = $aSize[2] + $aSize[0] + $NCW
    Local $GUIH = $aSize[3] + $aSize[1] + $NCH
    If $GUIX = "C" Then $GUIX = (@DesktopWidth - $GUIW) / 2
    If $GUIY = "C" Then $GUIY = (@DesktopHeight - $GUIH) / 2
    WinMove($hGUI, "", $GUIX, $GUIY, $GUIW, $GUIH, 1)
    Return True
    EndFunc ;==>_GUIAutoSize

    [/autoit]
  • Mehrere Checkboxen mit unterschiedlichen Funktionen

    • mirko2002
    • 22. November 2012 um 10:49

    Hm stimmt....

    --> "If-Abfragen immer direkt .Attachments.Add hinschreiben" <--

    Damit könnt ich es erstmal mit meinem halbwissen machbar hinbekommen. soviele dateianhänge werden es ingesamt auch nicht sein, so das das tool nicht so überfordert sein wird mit abfragen.

    Cool, danke ;)

    Wenn wer noch andere Lösungen hat - immer her damit, mit IF-Abfragen wirds dann natürlich recht lang und unübersichtlich.

  • Mehrere Checkboxen mit unterschiedlichen Funktionen

    • mirko2002
    • 22. November 2012 um 10:18

    Na ich geb sie oben in dem Script mit an, ja.... da wo jetzt das steht:

    [autoit]

    ;############################### Dateianhänge #############################
    $Datei1 = "M:\test1.txt"
    $Datei2 = "M:\test2.txt"
    $Datei3 = "M:\test3.txt"
    $Datei4 = "M:\test4.txt"
    $Datei5 = "M:\test5.txt"
    $Datei6 = "M:\test6.txt"

    [/autoit]

    Nur halt mir unterschiedlichen Dateinamen. Und wichtig ist halt, dass pro Template was man auswhählt, ja auch nicht alle Anhänge zur Verfügung stehen sondern immer nur die, die auch zur Vorlage dazugehören. Also z.b. Datei 1-3 für Template 1. Datei 4 und 5 für Template 2 usw.... mal gibts auch Templates ganz ohne Anhang.

  • Mehrere Checkboxen mit unterschiedlichen Funktionen

    • mirko2002
    • 22. November 2012 um 10:06

    Hmm..... das würde soweit funktionieren sofern die Dateinamen aufsteigend mit den Zahlen wären ;)

    Die sind aber total anders... die test1.txt diente hier nur zur Veranschaulichung :D

    Stell Dir vor die Dateinamen lauten shortguide.pdf und technical_description.pdf usw....

    Mit der For-Schleife sollte das hinzufügen möglich sein.... nur irgendwie übersteigt das mein Wissen in AutoIt :(

  • Mehrere Checkboxen mit unterschiedlichen Funktionen

    • mirko2002
    • 22. November 2012 um 09:46

    ???

    Das die Funktion

    [autoit]

    .Attachments.Add ("M:\test1.txt")

    [/autoit]

    für das anhängen der Attachments zuständig ist, ist mir auch klar... :)

    Sie war nicht ohne Grund erstmal auskommentiert, da ich nicht eine fest vorgegebene Datei anhängen will sondern die, die der User über die Checkboxen ausgewählt hat.

  • Mehrere Checkboxen mit unterschiedlichen Funktionen

    • mirko2002
    • 22. November 2012 um 09:21

    Hallo AutoIt-Experten,

    ich steh mal wieder vor meinem nächsten Problem. Ich erstelle gerade für mich und meine Arbeitskollegen ein kleines Programm, worüber wir unsere eMailvorlagen (welche wir unseren Kunden zusenden) auswählen und senden können. Soweit ist das Grundgerüst schon fertig und funktioniert auch so wie ich mir das vorstelle.

    Nun kommen wir aber an den Punkt, dass auch Dateianhänge mitgesendet werden müssen. Bei einem einzelnen Dateianhang wär das kein Problem nur müssen pro Mail teils 3 Anhänge mit raus.

    Also hab ich dafür Checkboxen angelegt und der User kann selbst entscheiden ob und welche Anhänge er mit rausschicken will.

    Checkboxen sind bereits implentiert jedoch schnelle ich es nicht wie ich es hinbekomme das, wenn z.b. checkbox 1 und checkbox 2 aktiv sind (und checkbox 3 nicht) er dann Anhang X und Y mit anhängt (und Anhang Z z.b. nicht)

    Man sollte sich mal mein Script anschauen um zu verstehen wie es funktioniert. Es ist noch lange nicht vollständig. Ich habe nur eine Inhalte gefüllt, nur um zu schauen wie es funktioniert...

    Spoiler anzeigen
    [autoit]


    ;################################ Includes ################################
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    ;############################## User auslesen #############################
    $winuser = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\winlogon", "Defaultusername")
    If $winuser = "751076" then
    $winuser = "Max Mustermann"
    ElseIf $winuser = "828520" Then
    $winuser = "Peter Mustermann"
    ElseIf $winuser = "748169" Then
    $winuser = "Klaus Mustermann"
    ElseIf $winuser = "759732" Then
    $winuser = "Horst Mustermann"
    ElseIf $winuser = "828487" Then
    $winuser = "Fritz Mustermann"
    EndIf

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

    $Read_ZP500_Reset1 = FileRead(@ScriptDir & '\' & 'zp_500_reset.txt')
    $Read_ZP500_Reset = StringReplace($Read_ZP500_Reset1, 'Dein Name', $winuser)
    $Read_LP2348_Reset1 = FileRead(@ScriptDir & '\' & 'LP2348_reset.txt')
    $Read_LP2348_Reset = StringReplace($Read_LP2348_Reset1, 'Dein Name', $winuser)
    ;############################### Dateianhänge #############################
    $Datei1 = "M:\test1.txt"
    $Datei2 = "M:\test2.txt"
    $Datei3 = "M:\test3.txt"
    $Datei4 = "M:\test4.txt"
    $Datei5 = "M:\test5.txt"
    $Datei6 = "M:\test6.txt"
    ;############################## GUI erstellen #############################
    $GUI = GUICreate("The Templater", 620, 300)
    $Combo_Template = GUICtrlCreateCombo("Bitte auswählen", 30, 30, 350, 20)
    GUICtrlSetData(-1,"ZP500 Resetanleitung|LP2348 Resetanleitung|LP2844 Resetanleitung|LP2844 LINE/PAGE Mode ändern|Konfiguration FSM 7.15|" & _
    "Software 07.15 Serbien/Montenegro Patch|Schwedische Postleitzahlen|Software V3|Software 07.15|Datenbank Exportierung FSM Software|" & _
    "Löschen der Temporären Internetdateien für den Internet Explorer|Löschen der Temporären Internetdateien für Firefox|Löschen der Temporären Internetdateien für Opera|Löschen der Temporären Internetdateien für Google Chrome|" & _
    "Löschen der Temporären Internetdateien für Safari|Erstellen eines Screenshots (MAC)|Erstellen eines Screenshots|Lite Antwort Copy-Paste für DE/CH/AT Mastermails|FedEx ZP500 LINE/PAGE Mode ändern|" & _
    "Z4M Resetanleitung", "Bitte auswählen")

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

    $Combo_Template_Read = GUICtrlRead($Combo_Template)

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

    $Input_Template = GUICtrlCreateEdit("", 30, 60, 350, 200, BitOR ($WS_VSCROLL, $WS_HSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))

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

    GUICtrlCreateGroup("", 395, 24, 210, 236)
    GUICtrlCreateLabel("Dateianhänge:", 400, 32, 80, 18)

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

    $check1 = GUICtrlCreateCheckbox("Testcheckbox 1", 400, 60, 150, 18)
    GUICtrlSetState($check1, $GUI_HIDE)
    $check2 = GUICtrlCreateCheckbox("Testcheckbox 2", 400, 90, 150, 18)
    GUICtrlSetState($check2, $GUI_HIDE)
    $check3 = GUICtrlCreateCheckbox("Testcheckbox 3", 400, 120, 200, 18)
    GUICtrlSetState($check3, $GUI_HIDE)

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

    $check4 = GUICtrlCreateCheckbox("Testcheckbox 4", 400, 60, 150, 18)
    GUICtrlSetState($check4, $GUI_HIDE)
    $check5 = GUICtrlCreateCheckbox("Testcheckbox 5", 400, 90, 150, 18)
    GUICtrlSetState($check5, $GUI_HIDE)
    $check6 = GUICtrlCreateCheckbox("Testcheckbox 6", 400, 120, 200, 18)
    GUICtrlSetState($check6, $GUI_HIDE)

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

    GUICtrlCreateGroup("", 30, 260, 165, 32)
    GUICtrlCreateLabel("Empf.:", 35, 272, 30, 18)
    $Input_Empfaenger = GUICtrlCreateInput("", 70, 270, 120, 17)
    $Send_Button = GUICtrlCreateButton("Absenden", 200, 270, 60, 17)

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

    GUISetState(@SW_SHOW, $GUI)
    ;######################## GUI While Schleife ##########################
    While 1
    Switch (GUIGetMsg())
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Combo_Template
    $Combo_Template_Read = GUICtrlRead($Combo_Template)
    _Combo_Template()
    Case $Send_Button
    $Input_Empfaenger_Read = GUICtrlRead($Input_Empfaenger)
    _CreateMailItem()
    EndSwitch
    WEnd

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

    ;############################## Funktionen #############################
    Func _CreateMailItem()
    Local $olMailItem = 0
    Local $olFormatRichText = 3
    Local $olImportanceLow = 0
    Local $olImportanceNormal= 1
    Local $olImportanceHigh = 2
    Local $olFormatHTML = 1

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

    $oOApp = ObjCreate("Outlook.Application")
    $oOMail = $oOApp.CreateItem($olMailItem)

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

    With $oOMail
    .To = $Input_Empfaenger_Read ;("beispiel@domain.com")
    .Subject = GUICtrlRead($Combo_Template) ;"email betreff"
    ;.BodyFormat = $olFormatRichText
    .BodyFormat = $olFormatHTML
    ;.Importance = $olImportanceHigh
    ;.Attachments.Add ("M:\test1.txt")
    .HTMLBody = GUICtrlRead($Input_Template)
    ;.Body = GUICtrlRead($Input_Template)
    .Display
    ;.Send ;ist aus Sicherheitsgründen standartmäßig deaktiviert
    EndWith
    EndFunc ;--> _CreateMailItem()

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

    Func _Combo_Template()
    If $Combo_Template_Read = "Bitte auswählen" Then
    GUICtrlSetData($Input_Template, "")
    GUICtrlSetState($check1, $GUI_HIDE)
    GUICtrlSetState($check2, $GUI_HIDE)
    GUICtrlSetState($check3, $GUI_HIDE)
    GUICtrlSetState($check4, $GUI_HIDE)
    GUICtrlSetState($check5, $GUI_HIDE)
    GUICtrlSetState($check6, $GUI_HIDE)
    EndIf
    If $Combo_Template_Read = "ZP500 Resetanleitung" Then
    GUICtrlSetData($Input_Template, $Read_ZP500_Reset)
    GUICtrlSetState($check1, $GUI_SHOW)
    GUICtrlSetState($check2, $GUI_SHOW)
    GUICtrlSetState($check3, $GUI_SHOW)
    GUICtrlSetState($check4, $GUI_HIDE)
    GUICtrlSetState($check5, $GUI_HIDE)
    GUICtrlSetState($check6, $GUI_HIDE)
    EndIf
    If $Combo_Template_Read = "LP2348 Resetanleitung" Then
    GUICtrlSetData($Input_Template, $Read_LP2348_Reset)
    GUICtrlSetState($check1, $GUI_HIDE)
    GUICtrlSetState($check2, $GUI_HIDE)
    GUICtrlSetState($check3, $GUI_HIDE)
    GUICtrlSetState($check4, $GUI_SHOW)
    GUICtrlSetState($check5, $GUI_SHOW)
    GUICtrlSetState($check6, $GUI_SHOW)
    EndIf
    EndFunc ;--> _Combo_Template()

    [/autoit]
  • Mails über Outlook senden und Body formatieren

    • mirko2002
    • 22. November 2012 um 08:41

    Letzteres hab ich dann gestern auch irgendwie rausgefunden :)

    [autoit]


    Func _CreateMailItem()
    Local $olMailItem = 0
    Local $olFormatRichText = 3
    Local $olImportanceLow = 0
    Local $olImportanceNormal= 1
    Local $olImportanceHigh = 2
    Local $olFormatHTML = 1

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

    $oOApp = ObjCreate("Outlook.Application")
    $oOMail = $oOApp.CreateItem($olMailItem)

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

    With $oOMail
    .To = $Input_Empfaenger_Read ;("to@domain.com")
    .Subject = GUICtrlRead($Combo_Template) ;"email subject"
    .BodyFormat = $olFormatHTML
    ;.Importance = $olImportanceHigh
    ;.Attachments.Add ("C:\test.txt")
    .HTMLBody = GUICtrlRead($Input_Template)
    .Display
    ;.Send
    EndWith
    EndFunc

    [/autoit]

    Gibts dazu irgendwo eine Dokumentation? In der normalen AutoIt Hilfe konnte ich nichts zu finden und wirklich nur mühsam über google und andere Foren Scriptteile zusammenstellen...

  • Mails über Outlook senden und Body formatieren

    • mirko2002
    • 21. November 2012 um 11:21

    Hallo zusammen,

    ich versuche derzeit über eine Funktion eine Outlookmail zu generieren, die dann Templates von mir und meinen Arbeitskollegen enthält und wir diese an Kunden senden.

    Soweit funktioniert das erstellen der Mail einwandfrei - ich bekomme nur keine Textformatierung hin. Bestimmte Sachen in der Mail sollen halt formatiert sein. Manches halt fett manches kursiv usw und so fort.

    Gibt ja mehrere Wege die Mails zu generieren:

    [autoit]

    CreateMailItem()
    Func CreateMailItem()
    Local $olMailItem = 0
    Local $olFormatRichText = 3
    Local $olImportanceLow = 0
    Local $olImportanceNormal= 1
    Local $olImportanceHigh = 2

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

    $oOApp = ObjCreate("Outlook.Application")
    $oOMail = $oOApp.CreateItem($olMailItem)

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

    With $oOMail
    .To = ("to@domain.com")
    .Subject = "email subject"
    .BodyFormat = $olFormatRichText
    ;.Importance = $olImportanceHigh
    ;.Attachments.Add ("C:\test.txt")
    .Body = "email message"
    .Display
    ;.Send
    EndWith
    EndFunc

    [/autoit]

    oder

    [autoit]

    $address = "to@domain.com"
    $subject = "Testbetreff"
    $Body = "Aktueller Mailtext" & @CRLF & _
    "Testzeile 2" & @CRLF & _
    "Testzeile 3"
    _INetMail($address, $subject, $Body)

    [/autoit]

    Gibt es irgendeinen Befehl um eine Formatierung mit übergeben zu können? Ich habe auch über Google leider nichts passendes finden können :(

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™