FireFox

Skype UDF v1.2 (Sep 15, 2013)

149 posts in this topic




Huge functions list, great job! :graduated:


Minesweeper

A minesweeper game created in autoit, source available.

_Mouse_UDF

An UDF for registering functions to mouse events, made in pure autoit.

2D Hitbox Editor

A 2D hitbox editor for quick creation of 2D sphere and rectangle hitboxes.

Share this post


Link to post
Share on other sites

nice job! I will test it

Share this post


Link to post
Share on other sites

Dude you are amazing. This is so going in my downloads folder.


ongoing projects:-firestorm: Largescale P2P Social NetworkCompleted Autoit Programs/Scripts: Variable Pickler | Networked Streaming Audio (in pure autoIT) | firenet p2p web messenger | Proxy Checker | Dynamic Execute() Code Generator | P2P UDF | Graph Theory Proof of Concept - Breadth First search

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Thanks for your feedback :graduated:

I have added the "Auto Anwser" example Posted Image

Br, FireFox.

Edited by FireFox

 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

Hi Firefox, great job... I will start to test very soon.

DO you know a place/documentation where I can know what each function does? Maybe at skype homepage?

THANKS

Jose

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

Hi Firefox, great job... I will start to test very soon.

DO you know a place/documentation where I can know what each function does? Maybe at skype homepage?

THANKS

Jose

You've got a description for each function in the UDF.

I don't think that the manual available will help you, link here

Br, FireFox.

Edited by FireFox

 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

Thanks !, I have worked on it for many days. I'm happy to have a feedback like yours because they are not as numerous as you can see.

Br, FireFox.

Edited by FireFox

 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

#10 ·  Posted

Hi there,

I just ran across this by accident and it reminded me of a problem I tried to solve a few months ago, but wasn't able to:

I can send messages to every single member of my Skype list, but we have a "group" that I tried to inform about a set of values at regular intervals (about once every 4 hours).

The problem is that this step works, if I create a group and adress it, but for some unknown reason, our existing "group" (I'm writing it in parentheses, because Skype seems to treat it as something other than a group - and sadly, I did not create it) is not treated as such and DOES NOT show in the list of participants when I run your "Skype in AutoIT.au3".

In my actual Skype contact's list, it shows with a logo similar to the "Online" symbol, but with a circle of 6 white points around the center.

If I remember right, the lines

$ichat = $oSkype.get_Chat("#xyz.dev/$febc24a082b613eb")
For $aChat In $ichat.Chats
If $aChat.Timestamp >= "20120907000149" Then
$msgstring = $msgstring & @CR & $aChat.Timestamp & " | Groupname:" & $aChat.GroupName & " | Name:" & $aChat.Name & "| FriendlyName:" & $aChat.FriendlyName
ConsoleWrite("-> " & @ScriptLineNumber & " " & $msgstring & @CRLF)
EndIf
Next
worked correctly on all other groups, but not this one.

$oSkype.RecentChats reports all chats of that group with the name ("#xyz.dev/$febc24a082b613eb"), but all attempts at sending them a message with either $oSkype.SendMessage(...) or $oSkype.Client.OpenUserInfoDialog("#xyz.dev/$febc24a082b613eb") and similar fail.

Your function displayChatProperties($aChat) reports

(Label: some group of people - sensible easygoing chat.. (sun)

Created at: 20120603013930

Last activity at: 20121028162704

Id: #xyz.dev/$febc24a082b613eb

Blob: 9Ec90D8ftJYM4SvdywDZqXIzfMdkVvWkDU ... vlCwtU3h5QmoQEZJuCeZDYVA

Description:

Guidelines:

My role: Master

My status: Subscribed

Type: Multichat

Members:

member1

member 2

memberxyz

memberetc.

Is anybody aware of a special command to send a message to a multichat (I couldn't fond any in the Skype docs either)?

Share this post


Link to post
Share on other sites

#11 ·  Posted

@guwguw

Maybe the UDF is deprecated due to new Skype functions.

The only way for me to help you would to test it, so add me in skype you will find my ID on my profile.

Br, FireFox.


 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

#12 ·  Posted

@guwguw

Maybe the UDF is deprecated due to new Skype functions.

I doubt that: I'm using version 4.2.0.187

will get in touch via Skype later tonight

Share this post


Link to post
Share on other sites

#13 ·  Posted

This is the solution for our friend :

#include "Skype.au3"

Global $aChat = _Skype_ChatGetActive(), $oChat

For $iChat = 0 To UBound($aChat) -1
 $oChat = $aChat[$iChat]
 If _Skype_ChatGetName($oChat) = "#abc.def/$febc24a082b613eb" Then ExitLoop ;we've found the chat name
Next

_Skype_ChatSendMessage($oChat, "test") ;send test to the chat

Be reminded that you must store the object in a variable before using it ! (it won't work if you use it directly with the array)

@everybody

New version available ! (see first post for update)

1 person likes this

 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

#14 ·  Posted

Hi, I am running Skype 6.0 on my W7.

your UDF doesn't work on autoit 64bit.

So you could put this line in your example script:

#AutoIt3Wrapper_UseX64=n

With that it works always well.

How do you use your UDF to make a VideoCall?

Thank you

Share this post


Link to post
Share on other sites

#15 ·  Posted

So you could put this line in your example script:

OK I will add this under "Notes".

How do you use your UDF to make a VideoCall?

hm... never tested it, I will give it a try.

Br, FireFox.


 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

#16 ·  Posted (edited)

I have just tested it and it won't work as you expected.

First, you have to make a simple call and when this one is in progress start the video.

Note that your contact will have to click on the webcam button to activate it on his side.

#include "Skype.au3"

_Skype_OnEventCallStatus("CallStatusEvent_InProgress", $cClsInProgress)

;~ _Skype_UserGetIsVideoCapable ;you can use it to check if the video call is possible

Global $oCall = _Skype_CallCreate("useridhere")

While 1
    Sleep(1000)
WEnd

Func CallStatusEvent_InProgress($oCall)
    _Skype_CallStartVideoSend($oCall)
    _Skype_CallStartVideoReceive($oCall)
EndFunc

Br, FireFox.

Edited by FireFox

 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

#17 ·  Posted (edited)

Thank you.

Another useful thing could be to determine which webcam to use/switch from the pc.

I am searching another thing: I would like to receive on my phone a call with more information just near the user name.

I have a prog that makes a call to phone from the pc and I want to recognize which action took place.

The only thing I got is make the call, answer it, then send a message during the call and open it to know the reason.

It could be a lot better if i could put the text near the user caller so I don't need to answer.

It needs the call because sending only the message doesn't make the cell ring loud and for some time.

Edited by frank10

Share this post


Link to post
Share on other sites

#18 ·  Posted

Another useful thing could be to determine which webcam to use/switch from the pc.

Well, I don't think it's possible. You can get and set the video devices with the _Skype_[set/Get]VideoIn functions.

I suggest you to list your video devices by switching them manually from Skype and then getting them with the _Skype_GetVideoIn func.

I think that Skype will return an error if you try to set a video device not connected.

In case it's not working you will have to use an external application to check the video device.

I am searching another thing: I would like to receive on my phone a call with more information just near the user name.

I have a prog that makes a call to phone from the pc and I want to recognize which action took place.

The only thing I got is make the call, answer it, then send a message during the call and open it to know the reason.

It could be a lot better if i could put the text near the user caller so I don't need to answer.

It needs the call because sending only the message doesn't make the cell ring loud and for some time.

I don't understand what you mean by "more information" and "recognize which action".

Br, FireFox.


 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

#19 ·  Posted

SetVideoIn works well to select the correct webcam before starting the call, but it doesn't change the webcam during the call, like this:

_Skype_SetVideoIn('HP Webcam HD-4110')

_Skype_OnEventCallStatus("CallStatusEvent_InProgress", $cClsInProgress)
Global $oCall = _Skype_CallCreate("Francesem10")

While 1
    Sleep(30000)
    _Skype_SetVideoIn('Philips SPC 900NC PC Camera')
    _Skype_CallStartVideoSend($oCall)


WEnd

It blacks the pic for some seconds but then it continues with the first webcam.

While if I make these steps manually, it works also during a call:

Make call, options-> Video Settings ->select new webcam-> save webcam

then video->start video

the Videocall changes the webcam video.

I was thinking if there is something similar in skype4com, maybe it lacks the "start video" command to reinitialize the new webcam.

For the other problem, I mean: if I get action1 in the pc I will send a text like "action1 occurred", for action2 I will send "action2" and so on.

At this time i send this text in the instant message comunication after I answer the call.

I'm asking if it's possible to incorporate some text message directly near the user caller when the phone rings.

BTW:

there is a typo in the description of this func:

Func _Skype_CallStopVideoReceive($oCall)

it's called startVideo

Share this post


Link to post
Share on other sites

#20 ·  Posted (edited)

SetVideoIn works well to select the correct webcam before starting the call, but it doesn't change the webcam during the call

It blacks the pic for some seconds but then it continues with the first webcam.

It's maybe an API issue.

Try this (not tested) :

...
_Skype_OnEventCallVideoStatusChanged("CallVideoStatusEvent")

;your script with video call
$oCall = ...

Func CallVideoStatusEvent($oCall, $TCallVideoStatus)
    If $TCallVideoStatus = $cCvsBothEnabled Then
;~      _Skype_CallStopVideoSend($oCall) ;uncomment this in case the script does not work
;~      _Skype_CallStopVideoReceive($oCall) ;same

        _Skype_SetVideoIn(...)

        _Skype_CallStartVideoSend($oCall)
        _Skype_CallStartVideoReceive($oCall)
    EndIf
EndFunc

For the other problem, I mean: if I get action1 in the pc I will send a text like "action1 occurred", for action2 I will send "action2" and so on.

At this time i send this text in the instant message comunication after I answer the call.

I'm asking if it's possible to incorporate some text message directly near the user caller when the phone rings.

Hm... try _Skype_ProfileGet/SetMoodText, but I don't see the problem of sending a message (notifications?)

BTW:

there is a typo in the description of this func:

Func _Skype_CallStopVideoReceive($oCall)

it's called startVideo

Right, when you make a thousand of functions you just stop checking what you have done :)

@everyone

New version available !

Br, FireFox.

Edited by FireFox

 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • Reizvoller
      OutlookEX UDF (Question, not error)
      By Reizvoller
      Howdy!
      I've been reading through the OutLookEX documentation and examples for the past two days ( VERY well documented, very clear! ) 
      https://www.autoitscript.com/wiki/OutlookEX_UDF_-_General
       
      But I've had trouble locating information on specifying what user to use. My outlook is linked to two email accounts and I can only manipulate the main account's stuff. A simple script I've been playing with is this 
      ; Include Functions #include <OutlookEX.au3> ; Connect to Outlook Global $oOutlook = _OL_Open() If @error <> 0 Then Exit MsgBox(16, "Connect to Outlook", "Error connecting to Outlook. @error = " & @error & ", @extended = " & @extended) ;List the folders Global $aResult = _OL_FolderTree($oOutlook, "*") If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_FolderTree Example Script", "Error accessing root folder. @error = " & @error) _ArrayDisplay($aResult, "OutlookEX UDF: _OL_FolderTree Example Script - All folders") It works like a charm but it only returns my main account's folders. 
      I really hope I didn't overlook a wiki page or help file... 
      Any assistance would be greatly appreciated!
      -Reiz
    • ling3882688
      How to get this 7-Zip progress?
      By ling3882688
      There is an Example called _7ZIPExtractEx_Example_using_Callback.AU3 in the 7-Zip UDF.
      I found a problem. If one file in the 7z archive is too big,the progress  bar will stop for a long time.
      How can I get the exact progress even though there are big files in the archive?
      In other words,how to get the exact extracted file size without delay  ?
      7Zip_UDF.zip
    • mLipok
      POP3.au3 UDF
      By mLipok
      Here I found a usefull UDF for POP3.
      I modified this UDF.
      You can download it from download section.


      Below you see old description:
      Spoiler  
      Here I found a usefull UDF for POP3.
      I decide to refresh this UDF so you can now use _POP3_Ex.au3 , it is still not finished yet, but any comments are welcome (I hope can help me to finish):
      _POP3_Ex.au3:
      #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #Region _POP3_Ex.au3 - INDEX ;=============================================================================== ;=============================================================================== ; Name ..........: _POP3_Ex.au3 ; Author: .......: Apzo - Luc HENNINOT <lhenninot@nordnet.fr> ; Author: .......: Tipulatoid, MrCreatoR - _POP3_EML_Parser() ; Modified ......: Thorsten Willert (thorsten [dot] willert [at] gmx [dot] de) ; Modified ......: Oscar ; Modified ......: mLipok ; Date ..........: 2015/02/09 ; Version .......: based on 1.03 ; AutoIt ........: v3.3.10.2++ ;=============================================================================== #cs Original UDF: http://www.autoitscript.com/forum/index.php?showtopic=22838 Basic functions for AU3 Scripts, based on the 1939 RFC ( http://www.ietf.org/rfc/rfc1939.txt ). Standard for the Format of ARPA-Internet Text Messages ( https://tools.ietf.org/html/rfc822 ) ; 4. MESSAGE SPECIFICATION ; 4.1. SYNTAX ; 5. DATE AND TIME SPECIFICATION ; 5.1. SYNTAX POP3 AUTHentication command ( https://www.ietf.org/rfc/rfc1734.txt ) Include version : 0.99 (March 2006, 9th). Author : Apzo - Luc HENNINOT <lhenninot@nordnet.fr> Modified : Thorsten Willert (thorsten [dot] willert [at] gmx [dot] de) Modified : mLipok http://www.autoitscript.com/forum/user/10673-mlipok/ (Function names Changed, Variables names Changed, added new functions, added Quoted-printable.au3, Script CleanUp, $g__bPOP3_TRACE and $g__vPOP3_ISCONNECTED Removed) Requires AU3 v3.3.10.2+ and UDF: Quoted-printable.au3 #ce #EndRegion _POP3_Ex.au3 - INDEX #Region _POP3_Ex.au3 - Include #include-once #include <StringConstants.au3> #include <FileConstants.au3> #include <array.au3> #include "Quoted-printable.au3" #EndRegion _POP3_Ex.au3 - Include #Region _POP3_Ex.au3 - Global Constants and Enums ; -- _POP3 error codes, sent by SetError. Use @error to display it. -- Global Enum _ $POP3_ERROR_OK = 0, _ $POP3_ERROR, _ $POP3_ERROR_TCPCONNECT_FAILED, _ $POP3_ERROR_SERVER_RESPONSE_TIMEOUT, _ $POP3_ERROR_ALREADY_CONNECTED, _ $POP3_ERROR_NOT_CONNECTED, _ $POP3_ERROR_NO_AUTH, _ $POP3_ERROR_TCPRECV_TIMEOUT, _ $POP3_ERROR_USER_REFUSED, _ $POP3_ERROR_PASSWD_REFUSED, _ $POP3_ERROR_ERR_RESPONSE, _ $POP3_ERROR_NO_OK_RESPONSE, _ $POP3_ERROR_STAT_BADRESPONSE, _ $POP3_ERROR_NO_TCP_RESPONSE, _ $POP3_ERROR_STAT_REFUSED, _ $POP3_ERROR_LIST_REFUSED, _ $POP3_ERROR_RSET_REFUSED, _ $POP3_ERROR_RETR_REFUSED, _ $POP3_ERROR_QUIT_REFUSED, _ $POP3_ERROR_DELE_REFUSED, _ $POP3_ERROR_TOP_REFUSED, _ $POP3_ERROR_UIDL_REFUSED, _ $POP3_ERROR_NOOP_REFUSED ;-- _POP3 vars -- Global Const _ $POP3_OK = '^\+OK'; Regexp syntax #EndRegion _POP3_Ex.au3 - Global Constants and Enums #Region _POP3_Ex.au3 - Global variables Global $g__iPOP3_SOCKET #EndRegion _POP3_Ex.au3 - Global variables #Region _POP3_Ex.au3 - Example ;~ _POP3_Example() Func _POP3_Example() If _POP3_ServerConnect('POP3.server.url') Then If _POP3_ServerLogIn("UserName", "Password") Then Local $aInfo = _POP3_Info() _POP3_RFC_QUIT() _POP3_ServerDisconnect() _ArrayDisplay($aInfo) EndIf EndIf EndFunc ;==>_POP3_Example #EndRegion _POP3_Ex.au3 - Example #Region _POP3_Ex.au3 - rfc1939 Functions ; http://www.ietf.org/rfc/rfc1939.txt ; #FUNCTION# =================================================================== ; Name ..........: _POP3_RFC_DELE ; Description ...: Delete msg n-msg_number. ; Syntax ........: _POP3_RFC_DELE($iMsg) ; Parameter(s): .: $iMsg - msg-number ; Return Value ..: Success - server response ; Failure - 0 ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert ; Date ..........: Thu Jan 14 15:24:41 CET 2010 ; Link ..........: ; Related .......: ; Example .......: No ; ============================================================================== Func _POP3_RFC_DELE($iMsg) If _POP3_ServerIsAuth() Then __POP3_Cmd("DELE " & $iMsg) If @error Then Return SetError(@error, 0, 0) Local $sRet = __POP3_WaitTcpResponse() If @error Then Return SetError($POP3_ERROR_NO_TCP_RESPONSE, 0, 0) Else Return $sRet EndIf Else Return SetError($POP3_ERROR_NO_AUTH, 0, 0) EndIf EndFunc ;==>_POP3_RFC_DELE ; #FUNCTION# =================================================================== ; Name ..........: _POP3_RFC_LIST ; Description ...: Returns an array with the msg number and its size (octets) ; Syntax ........: _POP3_RFC_LIST([$iMsg = -1]) ; Parameter(s): .: $iMsg - Optional: (Default = -1) : ; | -1 = all ; Return Value ..: Success - array[n][2] ; Failure - 0 ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert, Oscar ; Date ..........: Thu Feb 24 23:00:26 CET 2010 ; Link ..........: ; Related .......: _POP3_RFC_UIDL ; Example .......: No ; ============================================================================== Func _POP3_RFC_LIST($iMsg = -1) If _POP3_ServerIsAuth() Then Local $aRet[1][2], $aTMP2 Local $sAddMsg = "" If $iMsg <> -1 Then $sAddMsg = " " & $iMsg EndIf ; Send List Local $sRet = __POP3_Cmd("LIST" & $sAddMsg) If @error Then Return SetError(@error, 0, 0) While $iMsg = -1 And Not StringRegExp($sRet, "\r\n\.\r\n") $sRet = $sRet & __POP3_WaitTcpResponse() If @error Then Return SetError($POP3_ERROR_NO_TCP_RESPONSE, 0, 0) WEnd $sRet = StringRegExpReplace($sRet, '.+?message.+\(.+\)\r\n', @LF) ; Yahoo-Support, by Oscar ; Stripping useless infos for complete listing If $iMsg = -1 Then $sRet = StringMid($sRet, 2, StringLen($sRet) - 6) Else $sRet = StringMid($sRet, 1, StringLen($sRet) - 2) EndIf Local $aTMP = StringSplit(StringStripCR($sRet), @LF) Local $iE = UBound($aTMP) ReDim $aRet[$iE][2] $aRet[0][0] = $iE - 1 For $i = 1 To $iE - 1 $aTMP2 = StringSplit($aTMP[$i], " ", 2) $aRet[$i][0] = $aTMP2[0] $aRet[$i][1] = $aTMP2[1] Next Return $aRet EndIf EndFunc ;==>_POP3_RFC_LIST ; #FUNCTION# =================================================================== ; Name ..........: _POP3_RFC_NOOP ; Description ...: Actually, does nothing. ; Syntax ........: _POP3_RFC_NOOP() ; Parameter(s): .: - ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert ; Date ..........: Thu Jan 14 11:22:36 CET 2010 ; Remark(s) .....: The most interesting command from RFC 1939 ;) ; Link ..........: ; Related .......: ; Example .......: No ; ============================================================================== Func _POP3_RFC_NOOP() If _POP3_ServerIsAuth() Then ; Send NOOP __POP3_Cmd("NOOP") If @error Then Return SetError($POP3_ERROR_USER_REFUSED, 0, 0) Return 1 EndIf EndFunc ;==>_POP3_RFC_NOOP ; #FUNCTION# =================================================================== ; Name ..........: _POP3_RFC_QUIT ; Description ...: Validates your actions (dele for example) and stops the connection as it should. ; Syntax ........: _POP3_RFC_QUIT() ; Parameter(s): .: - ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert ; Date ..........: Thu Jan 14 11:25:00 CET 2010 ; Link ..........: ; Related .......: ; Example .......: No ; ============================================================================== Func _POP3_RFC_QUIT() If _POP3_ServerIsAuth() Then __POP3_Cmd("QUIT") If @error Then Return SetError(@error, 0, 0) Return 1 Else Return SetError($POP3_ERROR_NO_AUTH, 0, 0) EndIf EndFunc ;==>_POP3_RFC_QUIT ; #FUNCTION# =================================================================== ; Name ..........: _POP3_RFC_RETR ; Description ...: Downloads the according message ; Syntax ........: _POP3_RFC_RETR([$iMsg = -1]) ; Parameter(s): .: $iMsg - Optional: (Default = -1) : ; | -1 = newest ; Return Value ..: Success - string ; Failure - 0 ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert ; Date ..........: Thu Jan 14 17:23:03 CET 2010 ; Link ..........: ; Related .......: ; Example .......: No ; ============================================================================== Func _POP3_RFC_RETR($iMsg = -1) If _POP3_ServerIsAuth() Then If $iMsg = -1 Then Local $aStat = _POP3_RFC_STAT() If Not @error Then $iMsg = $aStat[0] EndIf ; Send Retr Local $sRet = __POP3_Cmd("RETR " & $iMsg) If @error Then Return SetError(@error, 0, 0) ; Downloading until final dot and cariage return. While Not StringRegExp($sRet, "\r\n\.\r\n") $sRet = $sRet & __POP3_WaitTcpResponse() If @error Then Return SetError($POP3_ERROR_NO_TCP_RESPONSE, 0, 0) WEnd Return $sRet Else Return SetError($POP3_ERROR_NO_AUTH, 0, 0) EndIf EndFunc ;==>_POP3_RFC_RETR ; #FUNCTION# =================================================================== ; Name ..........: _POP3_RFC_RSET ; Description ...: Withdraw changes, such as dele orders ; Syntax ........: _POP3_RFC_RSET() ; Parameter(s): .: - ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert ; Date ..........: Thu Jan 14 11:34:52 CET 2010 ; Link ..........: ; Related .......: ; Example .......: No ; ============================================================================== Func _POP3_RFC_RSET() If _POP3_ServerIsAuth() Then ; Send RSET __POP3_Cmd("RSET") If @error Then Return SetError(@error, 0, 0) Return 1 Else Return SetError($POP3_ERROR_NO_AUTH, 0, 0) EndIf EndFunc ;==>_POP3_RFC_RSET ; #FUNCTION# =================================================================== ; Name ..........: _POP3_RFC_STAT ; Description ...: Gets the number of messages in the pop3 account (array[1]) and the size(array[2]) in octets ; Syntax ........: _POP3_RFC_STAT() ; Parameter(s): .: - ; Return Value ..: Success - array ; Failure - array[-1,-1] ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert ; Date ..........: Fri Jan 15 09:54:17 CET 2010 ; Link ..........: ; Related .......: _POP3_MsgCnt ; Example .......: No ; ============================================================================== Func _POP3_RFC_STAT() Local $aRet[2] = [-1, -1] If _POP3_ServerIsAuth() Then ; Send STAT Local $sRet = __POP3_Cmd("STAT") If @error Then Return SetError(@error, 0, 0) $sRet = StringStripWS($sRet, 3) $aRet = StringSplit($sRet, " ", 2) If IsArray($aRet) Then Return $aRet Else Return SetError($POP3_ERROR_STAT_BADRESPONSE, 0, $aRet) EndIf Else Return SetError($POP3_ERROR_NO_AUTH, 0, $aRet) EndIf EndFunc ;==>_POP3_RFC_STAT ; #FUNCTION# =================================================================== ; Name ..........: _POP3_RFC_TOP ; Description ...: Retreives the mail headers, and the X first lines of the message ; Syntax ........: _POP3_RFC_TOP([$iMsg = -1[, $iLines = 0]]) ; Parameter(s): .: $iMsg - Optional: (Default = -1) : ; | -1 : newest ; $iLines - Optional: (Default = 0) : ; Return Value ..: Success - string ; Failure - 0 ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert ; Date ..........: Thu Jan 14 17:26:42 CET 2010 ; Link ..........: ; Related .......: ; Example .......: No ; ============================================================================== Func _POP3_RFC_TOP($iMsg = -1, $iLines = 0) If _POP3_ServerIsAuth() Then If $iMsg = -1 Then Local $aStat = _POP3_RFC_STAT() If Not @error Then $iMsg = $aStat[0] EndIf ; Send Top Local $sRet = __POP3_Cmd("TOP " & $iMsg & " " & $iLines) If @error Then Return SetError(@error, 0, 0) ; Downloading until final dot and cariage return. While Not StringRegExp($sRet, "\r\n\.\r\n") $sRet = $sRet & __POP3_WaitTcpResponse() If @error Then Return SetError($POP3_ERROR_NO_TCP_RESPONSE, 0, 0) WEnd Return $sRet Else Return SetError($POP3_ERROR_NO_AUTH, 0, 0) EndIf EndFunc ;==>_POP3_RFC_TOP ; #FUNCTION# =================================================================== ; Name ..........: _POP3_RFC_UIDL ; Description ...: Same as _POP3_RFC_LIST(), but with UIDL identifiers instead of message size. ; Syntax ........: _POP3_RFC_UIDL([$iMsg = -1]) ; Parameter(s): .: $iMsg - Optional: (Default = -1) : ; Return Value ..: Success - array[n][2] ; Failure - 0 ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert ; Date ..........: Thu Jan 14 16:51:30 CET 2010 ; Link ..........: ; Related .......: _POP3_RFC_LIST ; Example .......: No ; ============================================================================== Func _POP3_RFC_UIDL($iMsg = -1) If _POP3_ServerIsAuth() Then Local $aRet[1][2], $aTMP2 Local $sAddMsg = "" If $iMsg <> -1 Then $sAddMsg = " " & $iMsg ; Send List Local $sRet = __POP3_Cmd("UIDL " & $sAddMsg) If @error Then Return SetError(@error, 0, 0) While $iMsg = -1 And Not StringRegExp($sRet, "\r\n\.\r\n") $sRet = $sRet & __POP3_WaitTcpResponse() If @error Then Return SetError($POP3_ERROR_NO_TCP_RESPONSE, 0, 0) WEnd ; Stripping useless infos for complete listing If $iMsg = -1 Then $sRet = StringMid($sRet, 2, StringLen($sRet) - 6) Else $sRet = StringMid($sRet, 1, StringLen($sRet) - 2) EndIf Local $aTMP = StringSplit(StringStripCR($sRet), @LF) Local $iE = UBound($aTMP) ReDim $aRet[$iE][2] $aRet[0][0] = $iE - 1 For $i = 1 To $iE - 1 $aTMP2 = StringSplit($aTMP[$i], " ", 2) $aRet[$i][0] = $aTMP2[0] $aRet[$i][1] = $aTMP2[1] Next Return $aRet Else Return SetError($POP3_ERROR_NO_AUTH, 0, 0) EndIf EndFunc ;==>_POP3_RFC_UIDL #EndRegion _POP3_Ex.au3 - rfc1939 Functions ; http://www.ietf.org/rfc/rfc1939.txt #Region _POP3_Ex.au3 - UDF Function ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_Info ; Description ...: Returns an array with the specified informations about all mails ; Syntax ........: _POP3_Info([$v_Info = Default[, $iNumberOfMessages = Default]]) ; Parameters ....: $v_Info - [optional] A variant value. Default is Default. String or array ; $iNumberOfMessages - [optional] An integer value. Default is Default. ; Return values .: ; Success - array (Default: array[date,from,to,subject]) ; Failure - 0 ; Author ........: Thorsten Willert ; Modified ......: mLipok ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: Yes ; =============================================================================================================================== Func _POP3_Info($v_Info = Default, $iNumberOfMessages = Default) If _POP3_ServerIsAuth() Then If $v_Info = Default Then Local $aFiledNames[4] = ["Date", "From", "To", "Subject"] ElseIf IsArray($v_Info) Then $aFiledNames = $v_Info Else $aFiledNames = StringSplit($v_Info, ',', $STR_NOCOUNT) EndIf Local $iMsgCnt = _POP3_MsgCnt() If @error Then Return SetError(@error, 0, 0) If $iNumberOfMessages <> Default Then ; TODO EndIf Local $sTMP_EML, $aTMP_EML_Fields Local $iFieldsCnt = UBound($aFiledNames) If $iMsgCnt > 0 Then Local $aRet[$iMsgCnt + 1][$iFieldsCnt] $aRet[0][0] = $iMsgCnt For $iMsg = 1 To $iMsgCnt $sTMP_EML = _POP3_RFC_TOP($iMsg) If @error Then Return SetError(@error, 0, 0) For $iField = 0 To $iFieldsCnt - 1 $aTMP_EML_Fields = StringRegExp($sTMP_EML, '(?i)\n' & $aFiledNames[$iField] & ':\s*(.*?)\R', 3) If Not @error Then $aRet[$iMsg][$iField] = $aTMP_EML_Fields[0] Next Next Return $aRet EndIf Return SetError($POP3_ERROR, 0, 0) Else Return SetError($POP3_ERROR_NO_AUTH, 0, 0) EndIf EndFunc ;==>_POP3_Info ; #FUNCTION# =================================================================== ; Name ..........: _POP3_ServerConnect ; Description ...: Connect to the POP3 server. ; Syntax ........: _POP3_ServerConnect($sServer [, $iPort = 110]]) ; Parameter(s): .: $sServer - pop3 server ; $iPort - Optional: (Default = 110) : ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert, mLipok ; Date ..........: Fri Jan 15 18:37:29 CET 2010 ; Link ..........: ; Related .......: _POP3_ServerLogIn() ; Example .......: No ; ============================================================================== Func _POP3_ServerConnect($sServer, $iPort = 110) If Not _POP3_ServerIsConnected() Then If $iPort = 995 Then _POP3_ConsoleDebugError("_POP3_ServerConnect: Error: SSL not supported ..." & @CRLF) Return SetError(1, 0, _POP3_ServerIsConnected(False)) EndIf TCPStartup() If @error Then Return SetError($POP3_ERROR_TCPCONNECT_FAILED, @error, _POP3_ServerIsConnected(False)) EndIf ; Basic name to IP conversion _POP3_ConsoleDebug("_POP3_ServerConnect: connecting to: (" & $sServer & " - using port: " & $iPort & ") ") If StringRegExp($sServer, "[a-zA-Z]") Then Local $sServerIP = TCPNameToIP($sServer) _POP3_ConsoleDebug($sServer & " >> " & $sServerIP & @CRLF) $sServer = $sServerIP EndIf $g__iPOP3_SOCKET = TCPConnect($sServer, $iPort) If @error Then _POP3_ConsoleDebugError("_POP3_ServerConnect: Error: " & @error & @CRLF) Return SetError($POP3_ERROR_TCPCONNECT_FAILED, 0, _POP3_ServerIsConnected(False)) EndIf ; We need a first OK from pop3 server __POP3_WaitForOK() If @error Then Return SetError($POP3_ERROR_NO_OK_RESPONSE, 0, _POP3_ServerIsConnected(False)) Else Return _POP3_ServerIsConnected(True) EndIf Else Return SetError($POP3_ERROR_ALREADY_CONNECTED, 0, _POP3_ServerIsConnected()) EndIf EndFunc ;==>_POP3_ServerConnect ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_ServerLogIn ; Description ...: Login to POP3 Conneted server ; Syntax ........: _POP3_ServerLogIn($sUserName, $sPasswd) ; Parameters ....: $sUserName - A string value. ; $sPasswd - A string value. ; Return values .: None ; Author ........: Lipok ; Modified ......: ; Remarks .......: ; Related .......: _POP3_ServerConnect() ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_ServerLogIn($sUserName, $sPasswd) If _POP3_ServerIsConnected() Then ; Send user __POP3_Cmd("USER " & $sUserName) If @error Then Return SetError($POP3_ERROR_USER_REFUSED, 0, _POP3_ServerIsAuth(False)) EndIf ; Send passwd __POP3_Cmd("PASS " & $sPasswd) If @error Then Return SetError($POP3_ERROR_PASSWD_REFUSED, 0, _POP3_ServerIsAuth(False)) EndIf Return SetError(0, 0, _POP3_ServerIsAuth(True)) Else Return SetError($POP3_ERROR_NOT_CONNECTED, 0, _POP3_ServerIsAuth(False)) EndIf EndFunc ;==>_POP3_ServerLogIn ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_ServerIsConnected ; Description ...: Set/Check POP3 Connection Status ; Syntax ........: _POP3_ServerIsConnected([$bState = Default]) ; Parameters ....: $bState - [optional] A binary value. Default is Default = do not change nothing just return Current status. ; Return values .: Status, current or just set ; Author ........: mLipok ; Modified ......: ; Remarks .......: Default Status is False ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_ServerResponseTimeOut($iTimeOut = Default) Local Static $iServerResponseTimeOut = 60000 If Not IsNumber($iTimeOut) Or Not StringIsDigit($iTimeOut) Then SetError(1, 0, $iServerResponseTimeOut) If $iTimeOut <> Default Then $iServerResponseTimeOut = $iTimeOut EndIf Return $iServerResponseTimeOut EndFunc ;==>_POP3_ServerResponseTimeOut ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_ServerIsAuth ; Description ...: Set/Check whether user is loged to the POP3 server ; Syntax ........: _POP3_ServerIsAuth([$bState = Default]) ; Parameters ....: $bState - [optional] A binary value. Default is Default = do not change nothing just return Current status. ; Return values .: Status, current or just set ; Author ........: mLipok ; Modified ......: ; Remarks .......: Default Status is False ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_ServerIsAuth($bState = Default) Local Static $bIsAuth = False If $bState <> Default Then If $bState = True Then $bIsAuth = True Else $bIsAuth = False EndIf EndIf Return $bIsAuth EndFunc ;==>_POP3_ServerIsAuth ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_ServerIsConnected ; Description ...: Set/Check POP3 Connection Status ; Syntax ........: _POP3_ServerIsConnected([$bState = Default]) ; Parameters ....: $bState - [optional] A binary value. Default is Default = do not change nothing just return Current status. ; Return values .: Status, current or just set ; Author ........: mLipok ; Modified ......: ; Remarks .......: Default Status is False ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_ServerIsConnected($bState = Default) Local Static $bIsConnected = False If $bState <> Default Then If $bState = True Then $bIsConnected = True Else _POP3_ServerIsAuth(False) $bIsConnected = False EndIf EndIf Return $bIsConnected EndFunc ;==>_POP3_ServerIsConnected ; #FUNCTION# =================================================================== ; Name ..........: _POP3_ServerDisconnect ; Description ...: Shuts down connection to POP3 server. ; Syntax ........: _POP3_ServerDisconnect() ; Parameter(s): .: - ; Return Value ..: Success - 1 ; Failure - 0 ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert ; Date ..........: Thu Jan 14 11:15:16 CET 2010 ; Remark(s) .....: Use _POP3_RFC_QUIT to exit !! ; Link ..........: ; Related .......: ; Example .......: No ; ============================================================================== Func _POP3_ServerDisconnect() If _POP3_ServerIsConnected() Then TCPCloseSocket($g__iPOP3_SOCKET) TCPShutdown() _POP3_ServerIsConnected(False) Return SetError(0, 0, 1) Else _POP3_ServerIsConnected(False) Return SetError($POP3_ERROR_NOT_CONNECTED, 0, 1) EndIf EndFunc ;==>_POP3_ServerDisconnect ; #FUNCTION# =================================================================== ; Name ..........: _POP3_MsgCnt ; Description ...: Returns the number of messages ; Syntax ........: _POP3_MsgCnt() ; Parameter(s): .: - ; Return Value ..: Success - number of messages ; Failure - -1 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Fri Jan 15 09:56:20 CET 2010 ; Link ..........: ; Related .......: _POP3_RFC_STAT ; Example .......: NO ; ============================================================================== Func _POP3_MsgCnt() Local $a = _POP3_RFC_STAT() Return SetError(@error, 0, $a[0]) EndFunc ;==>_POP3_MsgCnt #EndRegion _POP3_Ex.au3 - UDF Function #Region _POP3_Ex.au3 - _EML_ Functions ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_EML_SaveToFile ; Description ...: ; Syntax ........: _POP3_EML_SaveToFile($iMsg, $sEML_FileFullPath) ; Parameters ....: $iMsg - An integer value. ; $sEML_FileFullPath - A string value. FileFullPath to save EML file. ; Return values .: None ; Author ........: mLipok ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_EML_SaveToFile($iMsg, $sEML_FileFullPath) Local $sEML = _POP3_RFC_RETR($iMsg) If Not @error Then _POP3_ConsoleDebug(StringStripCR($sEML) & @CR) Local $hEML_File = FileOpen($sEML_FileFullPath, $FO_OVERWRITE + $FO_CREATEPATH + $FO_UTF8_FULL) FileWrite($hEML_File, $sEML) FileClose($hEML_File) Else EndIf EndFunc ;==>_POP3_EML_SaveToFile ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_EML_GetDate ; Description ...: ; Syntax ........: _POP3_EML_GetDate($sEML_Content) ; Parameters ....: $sEML_Content - A string value. ; Return values .: None ; Author ........: mLipok ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_EML_GetDate($sEML_Content) Local $aDate = StringRegExp($sEML_Content, '(?i)(?:\A|\R)Date: (\V+)', 3) If UBound($aDate) Then Return SetError(0, 0, $aDate[0]) EndIf Return SetError(1, 0, '') EndFunc ;==>_POP3_EML_GetDate ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_EML_GetSubject ; Description ...: ; Syntax ........: _POP3_EML_GetSubject($sEML_Content[, $bDecodeQP = True]) ; Parameters ....: $sEML_Content - A string value. ; $bDecodeQP - [optional] A binary value. Default is True. ; Return values .: None ; Author ........: mLipok ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_EML_GetSubject($sEML_Content, $bDecodeQP = True) Local $aSubject = StringRegExp($sEML_Content, '(?i)(?:\A|\R)Subject: (\V+)', 3) If UBound($aSubject) Then Return SetError(0, 0, $bDecodeQP ? _QuotedPrintable_DecodeEncodedWord($aSubject[0]) : $aSubject[0]) EndIf Return SetError(1, 0, '') EndFunc ;==>_POP3_EML_GetSubject ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_EML_GetThreadTopic ; Description ...: ; Syntax ........: _POP3_EML_GetThreadTopic($sEML_Content[, $bDecodeQP = True]) ; Parameters ....: $sEML_Content - A string value. ; $bDecodeQP - [optional] A binary value. Default is True. ; Return values .: None ; Author ........: mLipok ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_EML_GetThreadTopic($sEML_Content, $bDecodeQP = True) Local $aTopic = StringRegExp($sEML_Content, '(?i)(?:\A|\R)Thread-Topic: (\V+)', 3) If UBound($aTopic) Then Return SetError(0, 0, $bDecodeQP ? _QuotedPrintable_DecodeEncodedWord($aTopic[0]) : $aTopic[0]) EndIf Return SetError(1, 0, '') EndFunc ;==>_POP3_EML_GetThreadTopic ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_EML_GetFrom ; Description ...: ; Syntax ........: _POP3_EML_GetFrom($sEML_Content[, $bDecodeQP = True]) ; Parameters ....: $sEML_Content - A string value. ; $bDecodeQP - [optional] A binary value. Default is True. ; Return values .: None ; Author ........: mLipok ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_EML_GetFrom($sEML_Content, $bDecodeQP = True) Local $aFrom = StringRegExp($sEML_Content, '(?i)(?:\A|\R)From: (\V+)', 3) If UBound($aFrom) Then Return SetError(0, 0, $bDecodeQP ? _QuotedPrintable_DecodeEncodedWord($aFrom[0]) : $aFrom[0]) EndIf Return SetError(1, 0, '') EndFunc ;==>_POP3_EML_GetFrom ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_EML_GetTo ; Description ...: ; Syntax ........: _POP3_EML_GetTo($sEML_Content[, $bDecodeQP = True]) ; Parameters ....: $sEML_Content - A string value. ; $bDecodeQP - [optional] A binary value. Default is True. ; Return values .: None ; Author ........: mLipok ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_EML_GetTo($sEML_Content, $bDecodeQP = True) Local $aTo = StringRegExp($sEML_Content, '(?i)(?:\A|\R)To: (\V+)', 3) If UBound($aTo) Then Return SetError(0, 0, $bDecodeQP ? _QuotedPrintable_DecodeEncodedWord($aTo[0]) : $aTo[0]) EndIf Return SetError(1, 0, '') EndFunc ;==>_POP3_EML_GetTo ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_EML_Parser ; Description ...: ; Syntax ........: _POP3_EML_Parser ($sEML_Contents) ; Parameters ....: $sEML_Contents - A string value. ; Return values .: ; It returns an Array where saved: ; In the 1st line - Sender's name ; In the 2nd line - Sender's address ; In the 3rd line - Recipient name ; In the 4th line - Recipient address ; In the 5th line - Subject ; In the 6th line - Charset ; In the 7th line - Message body ; In the 8th line - Attachment's name (if exists) ; In the 9th line - Attachment's body (if exists) ; In the next pairs of lines - names and bodies of the other attachments (if exist) ; Author ........: Tipulatoid, MrCreatoR ; Modified ......: mLipok ; Remarks .......: ; Related .......: ; Link ..........: http://www.autoitscript.com/forum/topic/22838-pop3-udf-according-to-the-1939-rfc/#entry596715 ; Example .......: No ; =============================================================================================================================== Func _POP3_EML_Parser($sEML_Contents) Local $aLetter[1] __POP3_EML_Parser_AddToLetterArray(StringRegExp($sEML_Contents, '(?im)^From: +(.*)(?: |<)(?:.*?<|)(.*?)(?:>|)\r\n', 1), $aLetter) __POP3_EML_Parser_AddToLetterArray(StringRegExp($sEML_Contents, '(?im)^To: +(.*)(?: |<)(?:.*?<|)(.*?)(?:>|)\r\n', 1), $aLetter) __POP3_EML_Parser_AddToLetterArray(StringRegExp($sEML_Contents, '(?im)^Subject: +(.*)\r\n', 1), $aLetter) __POP3_EML_Parser_AddToLetterArray(StringRegExp($sEML_Contents, '(?i)charset="?(.*?)(?:"|\r\n)', 1), $aLetter) Local $aSplit = StringSplit($sEML_Contents, @CRLF, 1) Local $iFirstBoundaryString = _ArraySearch($aSplit, "boundary=", 0, 0, 0, 1) Local $iBoundary = $aSplit[$iFirstBoundaryString] Local $iBoundary_StartPos = StringInStr($iBoundary, '"') Local $iBoundary_EndPos = StringInStr($iBoundary, '"', 0, 2) Local $boundary = StringMid($iBoundary, $iBoundary_StartPos + 1, $iBoundary_EndPos - $iBoundary_StartPos - 1) Local $boundary1 = _ArraySearch($aSplit, $boundary, $iFirstBoundaryString + 1, 0, 1, 1) Local $boundary2 = _ArraySearch($aSplit, $boundary, $boundary1 + 1, 0, 1, 1) Local $sMessage = "" Local $bWrite = False For $i = $boundary1 To $boundary2 - 1 If $aSplit[$i] = "" Then $bWrite = True If $bWrite = True Then $sMessage &= $aSplit[$i] & @CRLF Next __POP3_EML_Parser_AddToLetterArray($sMessage, $aLetter) __POP3_EML_Parser_AddToLetterArray(StringRegExp($sEML_Contents, '(?ims)filename="?(.*?)(?:"|\r).*?\n\r\n(.*?)\r\n^-+', 3), $aLetter) Return $aLetter EndFunc ;==>_POP3_EML_Parser ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name ..........: __POP3_EML_Parser_AddToLetterArray ; Description ...: ; Syntax ........: __POP3_EML_Parser_AddToLetterArray($aContents, Byref $afLetter) ; Parameters ....: $aContents - An array of unknowns. ; $afLetter - [in/out] An array of booleans. ; Return values .: None ; Author ........: Tipulatoid, MrCreatoR ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: http://www.autoitscript.com/forum/topic/22838-pop3-udf-according-to-the-1939-rfc/#entry596715 ; Example .......: No ; =============================================================================================================================== Func __POP3_EML_Parser_AddToLetterArray($aContents, ByRef $afLetter) If IsArray($aContents) Then For $i_ID = 0 To UBound($aContents) - 1 _ArrayAdd($afLetter, $aContents[$i_ID]) Next Else _ArrayAdd($afLetter, $aContents) EndIf ; Return $afLetter EndFunc ;==>__POP3_EML_Parser_AddToLetterArray #EndRegion _POP3_Ex.au3 - _EML_ Functions #Region _POP3_Ex.au3 - ConosoleDebugingSystem Func _POP3_ConsoleDebugError($sText) If _POP3_ConsoleDebugSatus() Then ConsoleWriteError($sText & @CRLF) EndIf EndFunc ;==>_POP3_ConsoleDebugError Func _POP3_ConsoleDebug($sText) If _POP3_ConsoleDebugSatus() Then ConsoleWrite($sText & @CRLF) EndIf EndFunc ;==>_POP3_ConsoleDebug ; #FUNCTION# ==================================================================================================================== ; Name ..........: _POP3_ConsoleDebugSatus ; Description ...: Set/Check POP3 ConsoleDebugingSystem ; Syntax ........: _POP3_ConsoleDebugSatus([$bDebug = Default]) ; Parameters ....: $bDebug - [optional] A binary value. Default is Default = do not change nothing just return Current status. ; Return values .: Status, current or just set ; Author ........: mLipok ; Modified ......: ; Remarks .......: Default Status is False = POP3 ConsoleDebugingSystem is Disabled ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _POP3_ConsoleDebugSatus($bDebug = Default) Local Static $bDebugStatic = False If $bDebug <> Default Then If $bDebug = True Then $bDebugStatic = True Else $bDebugStatic = False EndIf EndIf Return $bDebugStatic EndFunc ;==>_POP3_ConsoleDebugSatus #EndRegion _POP3_Ex.au3 - ConosoleDebugingSystem #Region _POP3_Ex.au3 - #INTERNAL_USE_ONLY# ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __POP3_Cmd ; Description ...: ; Syntax ........: __POP3_Cmd($sMSg) ; Parameter(s): .: $sMSg - ; Return Value ..: Success - string ; Failure - 0 ; @ERROR - ; Author(s) .....: Thorsten Willert ; Date ..........: Thu Jan 14 17:07:08 CET 2010 ; ============================================================================== Func __POP3_Cmd($sMSg) If _POP3_ConsoleDebugSatus() Then _POP3_ConsoleDebug(">: " & $sMSg & @CRLF) TCPSend($g__iPOP3_SOCKET, $sMSg & @CRLF) If @error Then Return SetError($POP3_ERROR_USER_REFUSED, 0, 0) Local $sRet = __POP3_WaitForOK() If @error Then Return SetError($POP3_ERROR_NO_OK_RESPONSE, 0, 0) Return $sRet EndFunc ;==>__POP3_Cmd ; #INTERNAL_USE_ONLY# ========================================================== ; Name ..........: __POP3_WaitForOK ; Description ...: Returns the server response if it starts with "+OK" ; Syntax ........: __POP3_WaitForOK() ; Parameter(s): .: - ; Return Value ..: Success - string ; Failure - "" ; @ERROR - ; Author(s) .....: Luc HENNINOT, Thorsten Willert ; Date ..........: Thu Jan 14 11:50:34 CET 2010 ; ============================================================================== Func __POP3_WaitForOK() ; Wait for server response. Local $sRet Local $hTimer = TimerInit() While TimerDiff($hTimer) < _POP3_ServerResponseTimeOut() $sRet = __POP3_WaitTcpResponse() If Not @error And StringRegExp($sRet, '\+OK') Then Return StringRegExpReplace($sRet, '\+OK\s?', "") If StringRegExp($sRet, '\-ERR\s?') Then Return SetError($POP3_ERROR_ERR_RESPONSE, 0, "") Sleep(100) WEnd Return SetError($POP3_ERROR_SERVER_RESPONSE_TIMEOUT, 0, "") EndFunc ;==>__POP3_WaitForOK ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name ..........: __POP3_WaitTcpResponse ; Description ...: Returns the server response ; Syntax ........: __POP3_WaitTcpResponse() ; Return values .: ; Success - string ; Failure - 0 ; Author ........: Luc HENNINOT ; Modified ......: Thorsten Willert, mLipok ; Remarks .......: Timeout to 60 s, should be enough in most cases. Change it if needed by using _POP3_ServerResponseTimeOut(). ; Related .......: _POP3_ServerResponseTimeOut() ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func __POP3_WaitTcpResponse() Local $sRet = "" Local $hTimer = TimerInit() While TimerDiff($hTimer) < _POP3_ServerResponseTimeOut() $sRet = TCPRecv($g__iPOP3_SOCKET, 512) If _POP3_ConsoleDebugSatus() And $sRet Then _POP3_ConsoleDebug("<: " & $sRet) If $sRet <> "" Then Return $sRet Sleep(100) WEnd Return SetError($POP3_ERROR_TCPRECV_TIMEOUT, 0, 0) EndFunc ;==>__POP3_WaitTcpResponse #EndRegion _POP3_Ex.au3 - #INTERNAL_USE_ONLY# Quoted-printable.au3:
      #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #include-once ; #INDEX# ======================================================================================================================= ; Title .........: UDF to Decode Word Encoded with Quoted Printable ; AutoIt Version : 3.3.10.2++ ; Language ......: English ; Description ...: ; Author(s) .....: Prog@ndy ; Modified ......: mLipok ; =============================================================================================================================== #cs Author original post https://autoit.de/index.php/Thread/11350-UTF8-Sting-Convertieren/?postID=87721#post87721 Quoted-Printable http://tools.ietf.org/html/rfc2045#section-6.7 https://www.ietf.org/rfc/rfc2045.txt #ce ;~ _QuotedPrintable_Example() Func _QuotedPrintable_Example() Local $sTestString = '' ;~ https://autoit.de/index.php/Thread/11350-UTF8-Sting-Convertieren/?postID=87721#post87721 ;~ $sTestString = "=?utf-8?b?QmFja3VwIEV4ZWMtTWVsZHVuZzogQXVmdHJhZyBlcmZvbGdyZWljaA==?=" $sTestString = "=?iso-8859-2?Q?3%_na_Otwartym_Koncie_Oszcz=EAdno=B6ciowym?=" MsgBox(0, '', _QuotedPrintable_DecodeEncodedWord($sTestString)) MsgBox(0, '', _QuotedPrintable_DecodeEncodedWord("Subject: =?iso-8859-1?Q?=A1Hola,_se=F1or!?=")) EndFunc ;==>_QuotedPrintable_Example ; #FUNCTION# ==================================================================================================================== ; Name ..........: _QuotedPrintable_GetCodepage ; Description ...: ; Syntax ........: _QuotedPrintable_GetCodepage($charset) ; Parameters ....: $charset - An unknown value. ; Return values .: None ; Author ........: Prog@ndy ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _QuotedPrintable_GetCodepage($charset) Local Const $PATH = "HKEY_CLASSES_ROOT\MIME\Database\Charset\" Local $alias While 1 $alias = RegRead($PATH & $charset, "AliasForCharset") If @error Then ExitLoop $charset = $alias WEnd Local $result = RegRead($PATH & $charset, "InternetEncoding") Return SetError(@error, @extended, $result) EndFunc ;==>_QuotedPrintable_GetCodepage ; #FUNCTION# ==================================================================================================================== ; Name ..........: _QuotedPrintable_MultiByteToWideChar ; Description ...: ; Syntax ........: _QuotedPrintable_MultiByteToWideChar($CodePage, $dwFlags, $lpMultiByteStr, $cbMultiByte, $lpWideCharStr, ; $cchWideChar) ; Parameters ....: $CodePage - An unknown value. ; $dwFlags - An unknown value. ; $lpMultiByteStr - An unknown value. ; $cbMultiByte - An unknown value. ; $lpWideCharStr - An unknown value. ; $cchWideChar - An unknown value. ; Return values .: None ; Author ........: Prog@ndy ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _QuotedPrintable_MultiByteToWideChar($CodePage, $dwFlags, $lpMultiByteStr, $cbMultiByte, $lpWideCharStr, $cchWideChar) Local $TypeMBStr = "str" If IsPtr($lpMultiByteStr) Then $TypeMBStr = "ptr" Local $aResult = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", "UINT", $CodePage, "DWORD", $dwFlags, _ $TypeMBStr, $lpMultiByteStr, "int", $cbMultiByte, "ptr", $lpWideCharStr, "int", $cchWideChar) If @error Then Return SetError(@error, 0, 0) Return $aResult[0] EndFunc ;==>_QuotedPrintable_MultiByteToWideChar ; #FUNCTION# ==================================================================================================================== ; Name ..........: _QuotedPrintable_TranslateString ; Description ...: ; Syntax ........: _QuotedPrintable_TranslateString($String, $CodePage) ; Parameters ....: $String - An unknown value. ; $CodePage - An unknown value. ; Return values .: None ; Author ........: Prog@ndy ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _QuotedPrintable_TranslateString($String, $CodePage) SetError(0) If Not (IsInt($CodePage) And $CodePage > 0) Then $CodePage = _QuotedPrintable_GetCodepage($CodePage) If @error Or $CodePage = 0 Then Return SetError(1, 0, "") Local $Length = _QuotedPrintable_MultiByteToWideChar($CodePage, 0, $String, StringLen($String), 0, 0) Local $Buffer = DllStructCreate("wchar[" & $Length + 1 & "]") If Not _QuotedPrintable_MultiByteToWideChar($CodePage, 0, $String, StringLen($String), DllStructGetPtr($Buffer), $Length) Then Return SetError(2, 0, "") EndIf Return DllStructGetData($Buffer, 1) EndFunc ;==>_QuotedPrintable_TranslateString ; #FUNCTION# ==================================================================================================================== ; Name ..........: _QuotedPrintable_Base64Decode ; Description ...: ; Syntax ........: _QuotedPrintable_Base64Decode($s) ; Parameters ....: $s - A string value. ; Return values .: None ; Author ........: Eddy ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _QuotedPrintable_Base64Decode($s) Local $key = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', _ $t = '', $p = -8, $a = 0, $c, $d, $len = StringLen($s) For $i = 1 To $len $c = StringInStr($key, StringMid($s, $i, 1), 1) - 1 If $c < 0 Then ContinueLoop $a = BitOR(BitShift($a, -6), BitAND($c, 63)) $p = $p + 6 If $p >= 0 Then $d = BitAND(BitShift($a, $p), 255) If $c <> 64 Then $t = $t & Chr($d) $a = BitAND($a, 63) $p = $p - 8 EndIf Next Return $t EndFunc ;==>_QuotedPrintable_Base64Decode ; #FUNCTION# ==================================================================================================================== ; Name ..........: _QuotedPrintable_Decode ; Description ...: ; Syntax ........: _QuotedPrintable_Decode($s[, $IsQ = False]) ; Parameters ....: $s - A string value. ; $IsQ - [optional] An unknown value. Default is False. ; Return values .: None ; Author ........: Prog@ndy ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _QuotedPrintable_Decode($s, $IsQ = False) If $IsQ Then $s = StringReplace($s, "_", " ") $s = StringSplit($s, "=") Local $result = $s[1] For $i = 2 To $s[0] $result &= Chr(Dec(StringLeft($s[$i], 2))) & StringTrimLeft($s[$i], 2) Next Return $result EndFunc ;==>_QuotedPrintable_Decode ; #FUNCTION# ==================================================================================================================== ; Name ..........: _QuotedPrintable_DecodeEncodedWord ; Description ...: ; Syntax ........: _QuotedPrintable_DecodeEncodedWord($theString) ; Parameters ....: $theString - A dll struct value. ; Return values .: None ; Author ........: Prog@ndy ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _QuotedPrintable_DecodeEncodedWord($theString) Local $EncodedChunks = StringRegExp($theString, "=\?(.+?)\?(.)\?(.*?)\?=", 4) If Not @error Then Local $parts For $Index = 0 To UBound($EncodedChunks) - 1 $parts = $EncodedChunks[$Index] Switch $parts[2] Case "B", "b" $parts[3] = _QuotedPrintable_Base64Decode($parts[3]) Case "Q", "q" $parts[3] = _QuotedPrintable_Decode($parts[3], True) EndSwitch $parts[3] = _QuotedPrintable_TranslateString($parts[3], $parts[1]) $theString = StringReplace($theString, $parts[0], $parts[3]) Next EndIf Return $theString EndFunc ;==>_QuotedPrintable_DecodeEncodedWord Cheers
      mLipok
       
      EDIT: Topic title change, and Script bug correction
      EDIT2: Script correction #CS #CE >> #cs #ce    -- changed for correct display by GESHi
      _POP3_Ex.ZIP
       
       
       
       
       
       
    • J2TeaM
      Font Icon UDF
      By J2TeaM
      This is an UDF that helps you use Font Awesome in your AutoIt project.
      Screenshot

      Download
      Click here to download!
      Usage/Example
      #NoTrayIcon #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> ; Font Icon UDF by Juno_okyo #include <font-icon.au3> Opt('GUIOnEventMode', 1) #Region ### START Koda GUI section ### Global $FormMain = GUICreate('Font Icon for AutoIt by Juno_okyo', 355, 126, -1, -1) GUISetFont(20, 400, 0, 'Arial') GUISetOnEvent($GUI_EVENT_CLOSE, 'FormMainClose') GUIStartGroup() Global $Label1 = GUICtrlCreateLabel('Juno_okyo', 25, 42, 155, 36) GUICtrlSetFont(-1, 24, 400, 0, 'Arial') ; See demo.html for Icon name Global $Label2 = GUICtrlCreateLabel(Font_Icon('icon-heart'), 193, 46, 35, 36) GUICtrlSetFont(-1, 20, 400, 0, 'juno_okyo') ; Font name GUICtrlSetColor(-1, 0xa83f39) ; Heart color ;) Global $Label3 = GUICtrlCreateLabel('AutoIt', 235, 42, 90, 36) GUICtrlSetFont(-1, 24, 400, 0, 'Arial') GUIStartGroup() GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1     Sleep(100) WEnd Func FormMainClose()     Exit EndFunc Credits
      Author: Juno_okyo Font Awesome by Dave Gandy Source code on GitHub. Contributing are welcome!
    • J2TeaM
      Font Icon UDF
      By J2TeaM
      This is an UDF that helps you use Font Awesome in your AutoIt project.
      Screenshot

      Download
      Click here to download!
      Usage/Example
      #NoTrayIcon #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> ; Font Icon UDF by Juno_okyo #include <font-icon.au3> Opt('GUIOnEventMode', 1) #Region ### START Koda GUI section ### Global $FormMain = GUICreate('Font Icon for AutoIt by Juno_okyo', 355, 126, -1, -1) GUISetFont(20, 400, 0, 'Arial') GUISetOnEvent($GUI_EVENT_CLOSE, 'FormMainClose') GUIStartGroup() Global $Label1 = GUICtrlCreateLabel('Juno_okyo', 25, 42, 155, 36) GUICtrlSetFont(-1, 24, 400, 0, 'Arial') ; See demo.html for Icon name Global $Label2 = GUICtrlCreateLabel(Font_Icon('icon-heart'), 193, 46, 35, 36) GUICtrlSetFont(-1, 20, 400, 0, 'juno_okyo') ; Font name GUICtrlSetColor(-1, 0xa83f39) ; Heart color ;) Global $Label3 = GUICtrlCreateLabel('AutoIt', 235, 42, 90, 36) GUICtrlSetFont(-1, 24, 400, 0, 'Arial') GUIStartGroup() GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 Sleep(100) WEnd Func FormMainClose() Exit EndFunc Credits
      Author: Juno_okyo Font Awesome by Dave Gandy Source code on GitHub. Contributing are welcome!