Fixer URL Shortener :)

  • Hallo!

    Ich habe mal mit McPoldy's großartiger Vorlage (Twitter API) einen mini TinyURL Client geschrieben!

    Er ist klein, fix und immer schnell da wenn man eine kurze URL braucht :)

    http://img.lenwo.de/show/1000/urlshortener.jpg

    Es sind ein paar neue Features dazugekommen:
    Traymenü:
    http://img.lenwo.de/show/1000/urlshortenertraymenu.jpg

    • Wenn die Option im Traymenu aktiviert ist, überprüft er nun auch die Zwischenablage und schreibt sie, falls es ein Korrekter Link ist in die GUI.
    • Außerdem kann man jetzt auch bequem übers Tray Menü die Zwischen ablage kürzen!
    • Noch etwas kleines: Bei bedarf kann man das Fenster verstecken und nur die Zwischen ablage Funktion benutzen!
    • Der Exit Button im Traymenü ist auch neu! Das war es auch schon!
    • Wenn jemand noch Anregungen, Kritik oder sonstiges los werden will, würde ich mich sehr freuen!

    ------------------------------------------------------------------------------------------------------------------------------------

    Spoiler anzeigen
    [autoit]

    Opt("TrayMenuMode", 1)

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

    #include <IE.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    HotKeySet("{ESC}", "_Exit")

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

    Const $GETShortened = "http://tinyurl.com/api-create.php?url="

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

    $TinyGUI = GUICreate("Tinyurl!", 258, 51, 192, 268, BitOR($WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    GUISetBkColor(0x525252)
    $Input1 = GUICtrlCreateInput("", 8, 24, 177, 21, BitOR($ES_AUTOHSCROLL, $WS_BORDER), 0)
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    $Label2 = GUICtrlCreateLabel("Tell me the URL you want to get shortened!", 0, 0, 258, 17, $SS_CENTER, $GUI_WS_EX_PARENTDRAG)
    GUICtrlSetFont(-1, 9, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $Button1 = GUICtrlCreateButton("Shorten It!", 192, 24, 59, 21, $WS_GROUP)

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

    #Region TrayMenu
    $TrayShortClip = TrayCreateItem("Shorten Clipboard!")
    $TrayShowHide = TrayCreateItem("Show / Hide Window")
    $TrayAutoClip = TrayCreateItem("Check Clip automatically [x]")
    TrayCreateItem("")
    $TrayExit = TrayCreateItem("Exit!")
    #EndRegion TrayMenu

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

    GUISetState(@SW_SHOW)

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

    $winState = 1
    $lastClip = ""
    $clipCorrect = 0
    $autoClip = 1

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

    WinSetOnTop($TinyGUI, "", 1)

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

    While 1
    #Region Window Dock!
    If $winState = 1 Then
    $WinPos = WinGetPos($TinyGUI)
    If $WinPos[0] <= 30 Then
    $WinPos[0] = 0
    WinMove($TinyGUI, "", $WinPos[0], $WinPos[1])
    ElseIf $WinPos[0] >= @DesktopWidth - $WinPos[2] - 30 Then
    $WinPos[0] = @DesktopWidth - $WinPos[2]
    WinMove($TinyGUI, "", $WinPos[0], $WinPos[1])
    EndIf
    If $WinPos[1] <= 30 Then
    $WinPos[1] = 0
    WinMove($TinyGUI, "", $WinPos[0], $WinPos[1])
    ElseIf $WinPos[1] >= @DesktopHeight - $WinPos[3] - 30 Then
    $WinPos[1] = @DesktopHeight - $WinPos[3]
    WinMove($TinyGUI, "", $WinPos[0], $WinPos[1])
    EndIf
    EndIf
    #EndRegion Window Dock!

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

    #Region Clip Check!
    If $autoClip = 1 Then
    $sClip = ClipGet()
    If $sClip <> $lastClip Then
    If StringLeft($sClip, 7) = "http://" Or StringLeft($sClip, 8) = "https://" Or StringLeft($sClip, 4) = "www." Then
    GUICtrlSetData($Input1, $sClip)
    $clipCorrect = 1
    Else
    $clipCorrect = 0
    EndIf
    $lastClip = $sClip
    EndIf
    EndIf
    #EndRegion Clip Check!
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    #Region But1 Action
    $sURL = GUICtrlRead($Input1)
    If $sURL = "" Then
    MsgBox(64, "Error", "Please fill the gap :)")
    Else
    If StringLeft($sURL, 7) <> "http://" And StringLeft($sURL, 8) <> "https://" Then $sURL = "http://" & $sURL
    GUICtrlSetData($Input1, _TinyQuery($GETShortened & $sURL))
    EndIf
    #EndRegion But1 Action
    EndSwitch

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

    $trayMsg = TrayGetMsg()
    Select
    Case $trayMsg = 0
    ContinueLoop
    Case $trayMsg = $TrayExit
    Exit
    Case $trayMsg = $TrayShortClip
    If $clipCorrect Then
    $shortURL = _TinyQuery($GETShortened & $sClip)
    ClipPut($shortURL)
    $lastClip = $shortURL
    ToolTip("Finish!")
    Sleep(1000)
    ToolTip("")
    Else
    ToolTip("Incorrect URL")
    Sleep(1000)
    ToolTip("")
    EndIf
    Case $trayMsg = $TrayShowHide
    If $winState = 1 Then
    GUISetState(@SW_HIDE)
    WinSetOnTop($TinyGUI, "", 0)
    $winState = 0
    ElseIf $winState = 0 Then
    GUISetState(@SW_SHOW)
    WinSetOnTop($TinyGUI, "", 1)
    $winState = 1
    EndIf
    Case $trayMsg = $TrayAutoClip
    If $autoClip = 1 Then
    $autoClip = 0
    TrayItemSetText($TrayAutoClip, "Check Clip automatically [ ]")
    ElseIf $autoClip = 0 Then
    $autoClip = 1
    TrayItemSetText($TrayAutoClip, "Check Clip automatically [x]")
    EndIf
    EndSelect
    WEnd

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

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

    Func _TinyQuery($sURL)
    $oHTTP = ObjCreate("Microsoft.XMLHTTP")
    $oHTTP.open("GET", $sURL, False)
    $oHTTP.send("")
    $HTTPPost = $oHTTP.responseText
    Return ($HTTPPost)
    EndFunc ;==>_TinyQuery

    [/autoit]


    autoit.de/wcf/attachment/5908/

    Beste Grüße und vielen Dank im Voraus,

    Lenny!

    Jaja, Moo does the Cow!

    3 Mal editiert, zuletzt von Lenny (28. Juli 2010 um 03:06) aus folgendem Grund: Bilder neu verlinkt

  • Sehr schön, kommt gleich mit in meine Tool Sammlung für unsere Mitarbeiter, ich finde lange Links furchtbar :)

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Zitat

    Sehr schön, kommt gleich mit in meine Tool Sammlung für unsere Mitarbeiter, ich finde lange Links furchtbar :)

    Vielen Dank, mich freut es immer total wenn jemand das brauchen kann!

    Beste Grüße,
    Lenny

    Jaja, Moo does the Cow!

  • Respekt Alter!!!!

    Echt gut geungen

    Mfg

    Edit: Ich versuche gerade mal nachzuvollziehen was du da gemacht hast, hab aber bei der stelle hier irgendwie meine Probleme:

    Spoiler anzeigen
    [autoit]

    Func _TinyQuery($sURL, $sMethod = "GET", $sSend = "")
    $oHTTP = ObjCreate("Microsoft.XMLHTTP")
    $oHTTP.open($sMethod, $sURL, False)
    $oHTTP.send($sSend)
    $HTTPPost = $oHTTP.responseText
    Return ($HTTPPost)
    EndFunc ;==>_TinyQuery

    [/autoit]


    bei $oHTTP hast du dann beim 2. und 3. mal nur mehr nen Punkt statt nem "=". Was bewirkt man damit????

    Mfg

    Computers are like Airconditioning. They don´t work with open Windows.

  • Ich hoffe ich habe bei der Erklärung keinen Fehler, BugFix schau noch mal drüber bitte.

    [autoit]

    Func _TinyQuery($sURL, $sMethod = "GET", $sSend = "")
    ; Hier wird das Objekt erzeugt, darum =
    $oHTTP = ObjCreate("Microsoft.XMLHTTP")

    ; Wenn man ein Objekt hat, kann man dessen Eigenschaften ändern
    ; Zum Beispiel, das Objekt ist ein Auto, die Eigenschaft der Farbe ist
    ; Rot, diese kannst du ändern.
    ; Oder du kannst die Methoden eines Objektes aufrufen, zum Beispiel,
    ; das Auto soll fahren = Auto.fahr
    ; Die Eigenschaften / Methoden werden mit einem Punkt hinter der
    ; der Objektbezeichnung aufgerufen. Auto(das Objek) .(Der Trenner) fahr (die Methode)
    $oHTTP.open($sMethod, $sURL, False)
    $oHTTP.send($sSend)
    $HTTPPost = $oHTTP.responseText


    Return ($HTTPPost)
    EndFunc ;==>_TinyQuery

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • So ein wenig Kritik dazu :S

    Du prüfst die Positions auf dem Desktop. Leider gibt es bei Dual Monitor da probleme.
    Es ist dadurch nicht möglich dein Prog auf den zweiten Monitor zu schieben :!:

    Am besten üder die WINAPI abchecken.
    Verbesserungsvorschlöag die Zwischen ablage zu prüfen ob sich ein Normaler link in der Zwischenablage befindet
    und ihn schon einmal in dein Gui reinschreiben lassen...

    Dies vllt sogar über das Tray einstellbar.
    Dein Prog ist leider nur über den Taskmanager beendbar.

  • Hey, und Danke fürs Feedback :)

    Das Programm lässt sich auch über ESC beenden, dass hatte ich ganz vergessen Oben zu schreiben :)

    Ich habe ein paar neue Features eingebaut, siehe Post 1

    bG, Lenny

    Jaja, Moo does the Cow!

  • @ Lenny
    Das nenn ich mal "Super" Endlich mal wer der auf Kritik nicht böse reagiert sonder es sofort in die Tat umsetzt .. nun ist es fast Perfekt ;)