Jump to content
Sign in to follow this  
WannaBeGut

Skype - Alert when somebody comes online!

Recommended Posts

Hey,

I want the program to make different Actions when some persons come online, depending on the priority you choose in the GUI (1-3). It does not seem to work:

#include <Skype.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region --- GUI START ---
$mainwin = GUICreate("Skype Notifier", 290, 186, 899, 341)
$label_user1 = GUICtrlCreateLabel("User1:", 16, 16, 63, 18)
GUICtrlSetFont(-1, 9, 400, 0, "Verdana")
$label_user2 = GUICtrlCreateLabel("User2:", 16, 48, 39, 18)
GUICtrlSetFont(-1, 9, 400, 0, "Verdana")
$label_user3 = GUICtrlCreateLabel("User3:", 16, 112, 36, 18)
GUICtrlSetFont(-1, 9, 400, 0, "Verdana")
$label_user4 = GUICtrlCreateLabel("User4:", 16, 80, 34, 18)
GUICtrlSetFont(-1, 9, 400, 0, "Verdana")
$label_user5 = GUICtrlCreateLabel("User5:", 160, 80, 49, 18)
GUICtrlSetFont(-1, 9, 400, 0, "Verdana")
$label_user6 = GUICtrlCreateLabel("User6:", 160, 48, 45, 18)
GUICtrlSetFont(-1, 9, 400, 0, "Verdana")
$label_user7 = GUICtrlCreateLabel("User7:", 160, 16, 32, 18)
GUICtrlSetFont(-1, 9, 400, 0, "Verdana")
$input_priority1 = GUICtrlCreateInput("0", 104, 16, 17, 21)
$input_priority2 = GUICtrlCreateInput("0", 104, 48, 17, 21)
$input_priority3 = GUICtrlCreateInput("0", 104, 80, 17, 21)
$input_priority4 = GUICtrlCreateInput("0", 104, 112, 17, 21)
$label_user8 = GUICtrlCreateLabel("User8:", 160, 112, 61, 18)
GUICtrlSetFont(-1, 9, 400, 0, "Verdana")
$input_priority5 = GUICtrlCreateInput("0", 240, 16, 17, 21)
$input_priority6 = GUICtrlCreateInput("0", 240, 48, 17, 21)
$input_priority7 = GUICtrlCreateInput("0", 240, 80, 17, 21)
$input_priority8 = GUICtrlCreateInput("0", 240, 112, 17, 21)
$button_arrowleft1 = GUICtrlCreateButton("<", 86, 16, 16, 22, $WS_GROUP)
$button_arrowright1 = GUICtrlCreateButton(">", 123, 16, 16, 22, $WS_GROUP)
$button_arrowleft2 = GUICtrlCreateButton("<", 86, 48, 16, 22, $WS_GROUP)
$button_arrowright2 = GUICtrlCreateButton(">", 123, 48, 16, 22, $WS_GROUP)
$button_arrowleft3 = GUICtrlCreateButton("<", 86, 80, 16, 22, $WS_GROUP)
$button_arrowright3 = GUICtrlCreateButton(">", 123, 80, 16, 22, $WS_GROUP)
$button_arrowleft4 = GUICtrlCreateButton("<", 86, 112, 16, 22, $WS_GROUP)
$button_arrowright4 = GUICtrlCreateButton(">", 123, 112, 16, 22, $WS_GROUP)
$button_arrowleft5 = GUICtrlCreateButton("<", 222, 16, 16, 22, $WS_GROUP)
$button_arrowright5 = GUICtrlCreateButton(">", 259, 16, 16, 22, $WS_GROUP)
$button_arrowleft6 = GUICtrlCreateButton("<", 222, 48, 16, 22, $WS_GROUP)
$button_arrowright6 = GUICtrlCreateButton(">", 259, 48, 16, 22, $WS_GROUP)
$button_arrowleft7 = GUICtrlCreateButton("<", 222, 80, 16, 22, $WS_GROUP)
$button_arrowright7 = GUICtrlCreateButton(">", 259, 80, 16, 22, $WS_GROUP)
$button_arrowleft8 = GUICtrlCreateButton("<", 222, 112, 16, 22, $WS_GROUP)
$button_arrowright8 = GUICtrlCreateButton(">", 259, 112, 16, 22, $WS_GROUP)
$button_apply = GUICtrlCreateButton("Apply", 176, 144, 103, 25, $WS_GROUP)
GUICtrlSetFont(-1, 8, 400, 0, "Verdana")
$checkbox_busy = GUICtrlCreateCheckbox("Busy Mode", 16, 144, 89, 25)
GUICtrlSetFont(-1, 8, 400, 0, "Verdana")
$checkbox_logfile = GUICtrlCreateCheckbox("Log File", 112, 144, 65, 25)
GUISetState(@SW_SHOW)
#EndRegion --- GUI END ---
Global $oSkype = ObjCreate("Skype4COM.Skype")
Global $oUser1 = $oSkype.User("User1")
Global $oUser2 = $oSkype.User("User2")
Global $oUser3 = $oSkype.User("User3")
Global $oUser4 = $oSkype.User("User4")
Global $oUser5 = $oSkype.User("User5")
Global $oUser6 = $oSkype.User("User6")
Global $oUser7 = $oSkype.User("User7")
Global $oUser8 = $oSkype.User("User8")
Global $SkypeStatus_Offline = $oSkype.Convert.TextToUserStatus("OFFLINE")
Global $SkypeStatus_Online = $oSkype.Convert.TextToUserStatus("ONLINE")
Global $SkypeStatus_Ringing = $oSkype.Convert.TextToCallStatus("RINGING")
Global $SkypeStatus_Inprogress = $oSkype.Convert.TextToCallStatus("INPROGRESS")
Global $SkypeStatus_Failed = $oSkype.Convert.TextToCallStatus("FAILED")
Global $SkypeStatus_Refused = $oSkype.Convert.TextToCallStatus("REFUSED")
Global $SkypeStatus_Cancelled = $oSkype.Convert.TextToCallStatus("CANCELLED")
Global $SkypeStatus_Finished = $oSkype.Convert.TextToCallStatus("FINISHED")
Global $SkypeStatus_Busy = $oSkype.Convert.TextToCallStatus("BUSY")
Global $SkypeStatus_Available = $oSkype.Convert.TextToAttachmentStatus("AVAILABLE")
Global $SkypeStatus_Invisible = $oSkype.Convert.TextToAttachmentStatus("AVAILABLE")
Global $mutestatus = $oSkype.Mute
Global $inputnumber1 = 0
Global $inputnumber2 = 0
Global $inputnumber3 = 0
Global $inputnumber4 = 0
Global $inputnumber5 = 0
Global $inputnumber6 = 0
Global $inputnumber7 = 0
Global $inputnumber8 = 0
Global $readpriority1 = GUICtrlRead($input_priority1)
Global $readpriority2 = GUICtrlRead($input_priority2)
Global $readpriority3 = GUICtrlRead($input_priority3)
Global $readpriority4 = GUICtrlRead($input_priority4)
Global $readpriority5 = GUICtrlRead($input_priority5)
Global $readpriority6 = GUICtrlRead($input_priority6)
Global $readpriority7 = GUICtrlRead($input_priority7)
Global $readpriority8 = GUICtrlRead($input_priority8)
Global $readcheckboxbusy = GUICtrlRead($checkbox_busy)
Global $readcheckboxlogfile = GUICtrlRead($checkbox_logfile)
Global $checkboxbusy = 0
Global $applystart = 0
Global $checkdone1 = 0

If Not $oSkype.Client.IsRunning Then
    $oSkype.Client.Start()
 EndIf
$oSkype.Attach(5)
If $SkypeStatus_Offline = $oSkype.CurrentUserStatus Then
    $oSkype.ChangeUserStatus($SkypeStatus_Online)
EndIf

 While 1
    $nMsg = GUIGetMsg()
        CheckingProcess()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $button_apply
            Global $readpriority1 = GUICtrlRead($input_priority1)
            Global $readpriority2 = GUICtrlRead($input_priority2)
            Global $readpriority3 = GUICtrlRead($input_priority3)
            Global $readpriority4 = GUICtrlRead($input_priority4)
            Global $readpriority5 = GUICtrlRead($input_priority5)
            Global $readpriority6 = GUICtrlRead($input_priority6)
            Global $readpriority7 = GUICtrlRead($input_priority7)
            Global $readpriority8 = GUICtrlRead($input_priority8)
            Global $readcheckboxbusy = GUICtrlRead($checkbox_busy)
            Global $readcheckboxlogfile = GUICtrlRead($checkbox_logfile)
            Global $applystart = 1
         Case $button_arrowleft1
            $inputnumber1 = $inputnumber1 - 1
            If $inputnumber1 < 0 then $inputnumber1 = 0
            GUICtrlSetData($input_priority1, $inputnumber1)
         Case $button_arrowright1
            $inputnumber1 = $inputnumber1 + 1
            If $inputnumber1 > 3 then $inputnumber1 = 3
            GUICtrlSetData($input_priority1, $inputnumber1)
         Case $button_arrowleft2
            $inputnumber2 = $inputnumber2 - 1
            If $inputnumber2 < 0 then $inputnumber2 = 0
            GUICtrlSetData($input_priority2, $inputnumber2)
         Case $button_arrowright2
            $inputnumber2 = $inputnumber2 + 1
            If $inputnumber2 > 3 then $inputnumber2 = 3
            GUICtrlSetData($input_priority2, $inputnumber2)
         Case $button_arrowleft3
            $inputnumber3 = $inputnumber3 - 1
            If $inputnumber3 < 0 then $inputnumber3 = 0
            GUICtrlSetData($input_priority3, $inputnumber3)
         Case $button_arrowright3
            $inputnumber3 = $inputnumber3 + 1
            If $inputnumber3 > 3 then $inputnumber3 = 3
            GUICtrlSetData($input_priority3, $inputnumber3)
         Case $button_arrowleft4
            $inputnumber4 = $inputnumber4 - 1
            If $inputnumber4 < 0 then $inputnumber4 = 0
            GUICtrlSetData($input_priority4, $inputnumber4)
         Case $button_arrowright4
            $inputnumber4 = $inputnumber4 + 1
            If $inputnumber4 > 3 then $inputnumber4 = 3
            GUICtrlSetData($input_priority4, $inputnumber4)
         Case $button_arrowleft5
            $inputnumber5 = $inputnumber5 - 1
            If $inputnumber5 < 0 then $inputnumber5 = 0
            GUICtrlSetData($input_priority5, $inputnumber5)
         Case $button_arrowright5
            $inputnumber5 = $inputnumber5 + 1
            If $inputnumber5 > 3 then $inputnumber5 = 3
            GUICtrlSetData($input_priority5, $inputnumber5)
         Case $button_arrowleft6
            $inputnumber6 = $inputnumber6 - 1
            If $inputnumber6 < 0 then $inputnumber6 = 0
            GUICtrlSetData($input_priority6, $inputnumber6)
         Case $button_arrowright6
            $inputnumber6 = $inputnumber6 + 1
            If $inputnumber6 > 3 then $inputnumber6 = 3
            GUICtrlSetData($input_priority6, $inputnumber6)
         Case $button_arrowleft7
            $inputnumber7 = $inputnumber7 - 1
            If $inputnumber7 < 0 then $inputnumber7 = 0
            GUICtrlSetData($input_priority7, $inputnumber7)
         Case $button_arrowright7
            $inputnumber7 = $inputnumber7 + 1
            If $inputnumber7 > 3 then $inputnumber7 = 3
            GUICtrlSetData($input_priority7, $inputnumber7)
         Case $button_arrowleft8
            $inputnumber8 = $inputnumber8 - 1
            If $inputnumber8 < 0 then $inputnumber8 = 0
            GUICtrlSetData($input_priority8, $inputnumber8)
         Case $button_arrowright8
            $inputnumber8 = $inputnumber8 + 1
            If $inputnumber8 > 3 then $inputnumber8 = 3
            GUICtrlSetData($input_priority8, $inputnumber8)
    EndSwitch
 WEnd
 Func CheckingProcess()
            If $applystart = 0 then return
            Global $userstatus1 = $oSkype.Convert.OnlineStatusToText($oUser1.OnlineStatus)
            If $readpriority1 = 1 and $userstatus1 = "Online" or "Busy" then GUICtrlSetData($input_priority1, "!")
            If $readpriority1 = 2 and $userstatus1 = "Online" or "Busy" then  ChatAlert()
            If $readpriority1 = 3 and $checkboxbusy = 0 and $userstatus1 = "Online" or "Busy" then  MsgBox(0, "User Online!", "User1 ist Online!"&Chr(10))
            If $readpriority1 = 3 and $checkboxbusy = 1 and $userstatus1 = "Online" or "Busy" then  ChatAlert2()
            If $userstatus1 = "Do not Disturb" then $userstatus1 = "Busy"
            If $readcheckboxlogfile = 1 and $userstatus1 = "Online" or "Busy" then FileWrite("SkypeLog.txt", @MDAY&"/"&@MON&"/"&@YEAR&"/"&@HOUR&":"&@MIN&":"&@SEC&": "&"User1"&" is "&$userstatus1)

            Global $userstatus2 = $oSkype.Convert.OnlineStatusToText($oUser2.OnlineStatus)
            If $readpriority2 = 1 and $userstatus2 = "Online" or "Busy" then GUICtrlSetData($input_priority1, "!")
            If $readpriority2 = 2 and $userstatus2 = "Online" or "Busy" then ChatAlert()
            If $readpriority2 = 3 and $checkboxbusy = 0 and $userstatus2 = "Online" or "Busy" then MsgBox(0, "User Online!", "User2 ist Online!")
            If $readpriority2 = 3 and $checkboxbusy = 1 and $userstatus2 = "Online" or "Busy" then ChatAlert2()
            If $readcheckboxlogfile = 1 and $userstatus2 = "Online" or "Busy" then FileWrite("SkypeLog.txt", @MDAY&"/"&@MON&"/"&@YEAR&"/"&@HOUR&":"&@MIN&":"&@SEC&": "&"User2"&" is "&$userstatus2)
 EndFunc
 Func ChatAlert()
 EndFunc

 Func ChatAlert2()
 EndFunc

I hope you can help me! =)

Edit: I will make it a bit more neat when I get it to work ^^

Edited by WannaBeGut

Share this post


Link to post
Share on other sites

What does not seem to work? What is the issue you're seeing?


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

What does not seem to work? What is the issue you're seeing?

It will always think the Users are online, at least the MsgBox always pops up, the interesting thing is: If I display the $userstatus variable in a MsgBox, I can see it always shows the right state of the User (Online, Offline, Busy, Away)

If $readpriority2 = 1 and $userstatus2 = "Online" or "Busy" then GUICtrlSetData($input_priority1, "!")
Edited by WannaBeGut
Correction

Share this post


Link to post
Share on other sites

Try this change:

If $readpriority1 = 1 and ($userstatus1 = "Online" or $userstatus1 = "Busy") then GUICtrlSetData($input_priority1, "!")

 


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

Try this change:

If $readpriority1 = 1 and ($userstatus1 = "Online" or $userstatus1 = "Busy") then GUICtrlSetData($input_priority1, "!")

 

Just fixed it! That's what I did: (Thx anyways :D)

Local $userstatus1 = $oSkype.Convert.OnlineStatusToText($oUser1.OnlineStatus)
        If $userstatus1 = "Do Not Disturb" then $userstatus1 = "Busy"
        If $userstatus1 = "Online" then $uservalue1 = "Online"
        If $userstatus1 = "Offline" then $uservalue1 = "Offline"
        If $userstatus1 = "Busy" then $uservalue1 = "Online"
        If $userstatus1 = "Away" then $uservalue1 = "Offline"
        If $readpriority1 = 1 and $uservalue1 = "Online" then GUICtrlSetData($input_priority1, "!")
        If $readpriority1 = 2 and $uservalue1 = "Online" then Msg()
        If $readpriority1 = 3 and $busymode = 0 and $uservalue1 = "Online" then MsgBox(0, "User Online!", "User st Online!")
        If $readpriority1 = 3 and $busymode = 1 and $uservalue1 = "Online" then MsgImportant()

 

Edited by WannaBeGut

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
Sign in to follow this  

  • Similar Content

    • By BetaLeaf
      What is Rollbar?
      Rollbar provides real-time error alerting & debugging tools for developers. Learn more about it at https://rollbar.com/product/
      Demo: https://rollbar.com/demo/demo/
      Screenshot:
      Instructions: (RollbarTest.au3)
      ; Include RollbarSDK #include "RollbarSDK.au3" ;Turns on ConsoleWrite debugging override. ;Global $Rollbar_Debug=False ; Initialize RollbarSDK with the project's API key. ; Parameters ....: $__Rollbar_sToken - [Required] Go to https://rollbar.com/<User>/<ProjectName>/settings/access_tokens/ for your project. Use the token for post_server_item. _Rollbar_Init("eaa8464a4082eeabd9454465b8f0c0af") ; Write code that causes an error you want to catch, then call ; _Rollbar_Send ; Parameters ....: $__Rollbar_sErrorLevel - [Required] Must be one of the following values: Debug, Info, Warning, Error, Critical. ; $__Rollbar_sMessage - [Required] The message to be sent. This should contain any useful debugging info that will help you debug. ; $__Rollbar_sMessageSummary - [Optional] A string that will be used as the title of the Item occurrences will be grouped into. Max length 255 characters. If omitted, Rollbar will determine this on the backend. _Rollbar_Send("Debug", "This is an debug message. If you received this, you were successful!", "Debug Message") _Rollbar_Send("Info", "This is a test message. If you received this, you were successful!", "Info Message") _Rollbar_Send("Warning", "This is an warning message. If you received this, you were successful!", "Warning Message") _Rollbar_Send("Error", "This is an error message. If you received this, you were successful!", "Error Message") _Rollbar_Send("Critical", "This is an critical message. If you received this, you were successful!", "Critical Message") _Rollbar_Send("Info", "This is a test message. If you received this, you were successful!") ;No Message ; Rollbar_Send's helper functions ; Parameters ....: $__Rollbar_sMessage - [Required] The message to be sent. This should contain any useful debugging info that will help you debug. ; $__Rollbar_sMessageSummary - [Optional] A string that will be used as the title of the Item occurrences will be grouped into. Max length 255 characters. If omitted, Rollbar will determine this on the backend. _Rollbar_SendDebug("This is an debug message. If you received this, you were successful!", "Debug Message") _Rollbar_SendInfo("This is a test message. If you received this, you were successful!", "Info Message") _Rollbar_SendWarning("This is an warning message. If you received this, you were successful!", "Warning Message") _Rollbar_SendError("This is an error message. If you received this, you were successful!", "Error Message") _Rollbar_SendCritical("This is an critical message. If you received this, you were successful!", "Critical Message") ; Usable Example Local $sImportantFile = "C:\NOTAREALFILE_1234554321.txt" Switch FileExists($sImportantFile) Case True MsgBox(0, "Example Script", "An important file was found. Continuing...") Case Else _Rollbar_SendCritical('An important file was missing. Halting... File: "' & $sImportantFile & '"', 'Important file "' & $sImportantFile & '" is missing.') EndSwitch Notes: Please comment your feedback, advice, & suggestions below. While this is only a proof of concept, I will expand its feature set for everyone to use. 
      Right now, it is fully functional but not tested in production.
       
       
      Changelog:
      RollbarSDK.au3
      RollbarTest.au3
      v0.2
       
      v0.1.1
       
    • By 2Toes
      Hey there,
      I have a program that I'm working on, and I have a button that's supposed to stop a running function, when it's pressed.
      However, I cannot get that to work.
      I put together a sample script that is set up in the same way:
      #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= Opt("GUIOnEventMode", 1) Global $Form1 = GUICreate("Form1", 290, 106, 192, 124) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") Global $btnStart = GUICtrlCreateButton("Start", 24, 24, 99, 49) GUICtrlSetOnEvent($btnStart, "_Start") Global $btnStop = GUICtrlCreateButton("Stop", 152, 24, 99, 49) GUICtrlSetOnEvent($btnStop, "_Stop") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 ;~ $nMsg = GUIGetMsg() ;~ Switch $nMsg ;~ Case $GUI_EVENT_CLOSE ;~ Exit ;~ EndSwitch WEnd Func _Start() Global $bStartFlag = True $num = 1 While $bStartFlag ConsoleWrite($num & @CRLF) Sleep(1000) $num += 1 WEnd ConsoleWrite("Exited loop.." & @CRLF) EndFunc Func _Stop() Global $bStartFlag = False EndFunc Func _Exit() Exit EndFunc  
      With the code above, while the _Start() func is running, the Stop button doesn't do anything.
      I even threw a MsgBox into the _Stop() func, to see if the script was at least accessing the _Stop() func. But that showed that the _Stop() func is not being accessed at all while the _Start() func is running.
      I'm sure this is a simple solution that I'm just over looking. But I can't figure out what that solution is lol.
      Any help here would be greatly appreciated!
      Thank you in advance!  
    • By jantograaf
      Hi all,
      I'm trying to write a script that connects with a VBA/COM API to get the status of a connected phone. I've been looking up and down this forum for tips or other user's experiences, but I can't seem to find anything (even remotely) similar. It shouldn't be so hard to do, however.
      Software I'm trying to connect to
      I'm trying to integrate CallCenter by using their API, which is documented over here : JustRemotePhone API Reference
      Things I've tried
      I've tried using ObjCreate but I don't get any result, it always returns the same (negative) error.
      #Version 1 tried ObjCreate("JustRemotePhone.RemotePhoneService") #Version 2 tried ObjCreate("JustRemotePhoneCOM.RemotePhoneService") #Version 3 tried ObjCreate("JustRemotePhoneCOM.RemotePhoneService.Application") None of the three versions I tried seem to deliver any result other than a negative error value which basically says that the given class is not valid.
      I am starting to get the hang of AutoIt by now, but unmanaged programming languages and object-oriented stuff is still quite a grey zone for me. If anyone could help me 'talk' to this application, I'd be immensely grateful!
      Thanks in advance and kind regards from Belgium!
       
      Jan
    • By kurtykurtyboy
      GuiFlatButton is a UDF to easily create regular buttons with different colors for background, foreground, border, hover, focus, etc..
      This started as an effort to change the background color of a button and eventually grew into a full UDF.
      If you've looked around forums for changing button background colors, you have probably noticed that each proposed workaround has its own set of issues/side-effects. The answers usually circle back to 'use ownerdrawn buttons' and 'not worth it'. Well, now it is possible for anyone to easily create ownerdrawn buttons - totally worth it!
      Some issues with other workarounds such as drawing with GDI+ or using a colored label as a 'button':
      Not 'real' buttons so you lose built-in functionality that windows gives to buttons Messy / inefficient code in the main while loop to check for mouse position Slow to respond to click, paint, etc... Having to deal with GUIRegisterMsg messages Not straight-forward to implement GuiFlatButton is not a workaround; it is a technique to respond to Windows' built-in owner-drawn button events.
      With minimal effort, we can now create true simple colored buttons.
      The idea is to create an owner-drawn button using GUICtrlCreateButton then subclass the GUI and controls to handle the button-specific events to paint it however we want.
      This UDF magically does all of this for us! No need to worry about event handling or main while loop logic.
       
      How to use
      It couldn't be any easier! Simply create a new button using the familiar syntax. This creates an ownerdrawn button with default colors.
      $mybutton1 = GuiFlatButton_Create("Button 1", 78, 20, 120, 40) If you want to change the background and text colors:
      GuiFlatButton_SetBkColor(-1, 0x5555FF) GuiFlatButton_SetColor(-1, 0xFFFFFF) Advanced Usage
      Set background/text/border all at once
      GuiFlatButton_SetColors(-1, 0x0000FF, 0xFFFFFF, 0x9999FF) Set ALL colors for ALL button states! (normal, focus, hover, selected)
      Local $aColorsEx = [0x0000FF, 0xFFFFFF, -2, 0x4444FF, 0xFFFFFF, 0xAAAAFF, 0x6666FF, 0xFFFFFF, 0xCCCCFF, 0x0000EE, 0xFFFFFF, 0x7777EE] GuiFlatButton_SetColorsEx(-1, $aColorsEx) Set default colors to apply to any future buttons
      ;set colors GuiFlatButton_SetDefaultColors(0x0000FF, 0xFFFFFF, 0x9999FF) ;create buttons $mybutton1 = GuiFlatButton_Create("Button 1", 12, 20, 120, 40) $mybutton2 = GuiFlatButton_Create("Button 2", 143, 20, 120, 40) Set ALL color defaults
      ;set colors Local $aColorsEx = [0x0000FF, 0xFFFFFF, -2, 0x4444FF, 0xFFFFFF, 0xAAAAFF, 0x6666FF, 0xFFFFFF, 0xCCCCFF, 0x0000EE, 0xFFFFFF, 0x7777EE] GuiFlatButton_SetDefaultColorsEx($aColorsEx) ;create buttons $mybutton1 = GuiFlatButton_Create("Button 1", 12, 20, 120, 40) $mybutton2 = GuiFlatButton_Create("Button 2", 143, 20, 120, 40)  
      Available Functions
       
      Simple Example

      #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include "GuiFlatButton.au3" Example() ;GUI with one button Func Example() Local $hGUI, $mybutton1 $hGUI = GUICreate("GuiFlatButton Ex0", 275, 120) GUISetBkColor(0x333333) $idLabel = GUICtrlCreateLabel("Click the button", 10, 100, 150, 30) GUICtrlSetColor(-1, 0xFFFFFF) ;create new button then set the background and foreground colors $mybutton1 = GuiFlatButton_Create("Button 1", 78, 20, 120, 40) GuiFlatButton_SetBkColor(-1, 0x5555FF) GuiFlatButton_SetColor(-1, 0xFFFFFF) GUISetState(@SW_SHOW, $hGUI) Local $i = 0 Local $iMsg While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $GUI_EVENT_CLOSE ExitLoop Case $mybutton1 $i += 1 GUICtrlSetData($idLabel, $i) ConsoleWrite($i & @CRLF) EndSwitch Sleep(10) WEnd GUIDelete() EndFunc ;==>Example
      Menu/Toolbar Example

      #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include "GuiFlatButton.au3" Example() ;Example GUI with toolbar Func Example() Local $hGUI, $idLabel, $aButtons, $iTbSize $hGUI = GUICreate("GuiFlatButton Ex2", 300, 200) GUISetBkColor(0x444444) $idLabel = GUICtrlCreateLabel("Click a button", 10, 180, 150, 30) GUICtrlSetColor(-1, 0xFFFFFF) $aButtons = createToolbar() $iTbSize = UBound($aButtons) GUISetState(@SW_SHOW, $hGUI) Local $i = 0 Local $iMsg While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $GUI_EVENT_CLOSE ExitLoop Case $aButtons[0] To $aButtons[$iTbSize - 1] ConsoleWrite("1") GUICtrlSetData($idLabel, GuiFlatButton_Read($iMsg)) EndSwitch Sleep(10) WEnd GUIDelete() EndFunc ;==>Example Func createToolbar() Local $aButtons[6] Local $bkColor = 0x777777 Local $textColor = 0xFFFFFF Local $borderColor = 0x999999 Local $aBtnClrs[12] = [0x777777, 0xFFFFFF, $GUI_BKCOLOR_TRANSPARENT, 0x888888, 0xFFFFFF, $GUI_BKCOLOR_TRANSPARENT, 0x999999, 0xFFFFFF, $GUI_BKCOLOR_TRANSPARENT, 0x666666, 0xFFFFFF, $GUI_BKCOLOR_TRANSPARENT] For $i = 0 To UBound($aButtons) - 1 $aButtons[$i] = GuiFlatButton_Create("B" & $i, $i * 50, 0, 50, 17) GuiFlatButton_SetColorsEx($aButtons[$i], $aBtnClrs) Next Return $aButtons EndFunc ;==>createToolbar  
      Icon Example
      You can even easily add icons to your buttons -- just create a new button and send it an icon!

      #include <GDIPlus.au3> #include "GuiFlatButton.au3" Example() ;buttons with Icon images Func Example() ;get images for demonstration _GDIPlus_Startup() ;initialize GDI+ Local $hIcon = _WinAPI_ShellExtractIcon(@SystemDir & '\shell32.dll', 258, 24, 24) ;extract the 'Save' icon Local $hBitmap = _GDIPlus_BitmapCreateFromHICON($hIcon) ;Create Bitmap from Icon (for demonstration) Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) ;Create HBitmap from Bitmap _GDIPlus_BitmapDispose($hBitmap) ;dispose the bitmap _GDIPlus_Shutdown() ;done with GDI+ Local $hGUI = GUICreate("GuiFlatButton Ex5", 255, 400) GUISetBkColor(0xEEEEEE) ;set default colors of future buttons Local $aColorsEx = _ [0xE2E5E8, 0X000000, 0x888888, _ ; normal : Background, Text, Border 0xE2E5E8, 0X000000, 0x333333, _ ; focus : Background, Text, Border 0xE8E8E8, 0X000000, 0x666666, _ ; hover : Background, Text, Border 0xDDDDDD, 0X000000, 0xAAAAAA] ; selected : Background, Text, Border GuiFlatButton_SetDefaultColorsEx($aColorsEx) ;normal button with icon $label1 = GUICtrlCreateLabel( "$BS_TOOLBUTTON -->", 5, 10) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) Local $mybutton1 = GuiFlatButton_Create("Save", 130, 5, 50, 48, $BS_TOOLBUTTON) _WinAPI_DeleteObject(_SendMessage(GUICtrlGetHandle($mybutton1), $BM_SETIMAGE, $IMAGE_ICON, $hIcon)) ;align top Local $mybuttonT = GuiFlatButton_Create("Top", 5, 65, 120, 55, $BS_TOP) _WinAPI_DeleteObject(_SendMessage(GUICtrlGetHandle($mybuttonT), $BM_SETIMAGE, $IMAGE_ICON, $hIcon)) ;align top-left Local $mybuttonTL = GuiFlatButton_Create("Top-Left", 5, 125, 120, 55, BITOR($BS_TOP, $BS_LEFT)) _WinAPI_DeleteObject(_SendMessage(GUICtrlGetHandle($mybuttonTL), $BM_SETIMAGE, $IMAGE_ICON, $hIcon)) ;align top-right Local $mybuttonTR = GuiFlatButton_Create("Top-Right", 5, 185, 120, 55, BITOR($BS_TOP, $BS_RIGHT)) _WinAPI_DeleteObject(_SendMessage(GUICtrlGetHandle($mybuttonTR), $BM_SETIMAGE, $IMAGE_ICON, $hIcon)) ;align left Local $mybuttonL = GuiFlatButton_Create("Left", 5, 245, 120, 55, $BS_LEFT) _WinAPI_DeleteObject(_SendMessage(GUICtrlGetHandle($mybuttonL), $BM_SETIMAGE, $IMAGE_ICON, $hIcon)) ;align bottom Local $mybuttonB = GuiFlatButton_Create("Bottom", 130, 65, 120, 55, $BS_BOTTOM) _WinAPI_DeleteObject(_SendMessage(GUICtrlGetHandle($mybuttonB), $BM_SETIMAGE, $IMAGE_ICON, $hIcon)) ;align bottom-left Local $mybuttonBL = GuiFlatButton_Create("Bottom-Left", 130, 125, 120, 55, BITOR($BS_BOTTOM, $BS_LEFT)) _WinAPI_DeleteObject(_SendMessage(GUICtrlGetHandle($mybuttonBL), $BM_SETIMAGE, $IMAGE_ICON, $hIcon)) ;align bottom-right Local $mybuttonBR = GuiFlatButton_Create("Bottom-Right", 130, 185, 120, 55, BITOR($BS_BOTTOM, $BS_RIGHT)) _WinAPI_DeleteObject(_SendMessage(GUICtrlGetHandle($mybuttonBR), $BM_SETIMAGE, $IMAGE_ICON, $hIcon)) ;align right Local $mybuttonR = GuiFlatButton_Create("Right", 130, 245, 120, 55, $BS_RIGHT) _WinAPI_DeleteObject(_SendMessage(GUICtrlGetHandle($mybuttonR), $BM_SETIMAGE, $IMAGE_ICON, $hIcon)) GuiFlatButton_SetState($mybuttonR, $GUI_DISABLE ) ;disabled Local $mybuttonDisable = GuiFlatButton_Create("Disabled", 130, 310, 120, 55, $BS_TOOLBUTTON) _WinAPI_DeleteObject(_SendMessage(GUICtrlGetHandle($mybuttonDisable), $BM_SETIMAGE, $IMAGE_BITMAP, $hHBitmap)) GuiFlatButton_SetState($mybuttonDisable, $GUI_DISABLE ) ;clean up! _WinAPI_DestroyIcon( $hIcon ) _WinAPI_DeleteObject( $hHBitmap ) GUISetState(@SW_SHOW, $hGUI) Local $iMsg While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $GUI_EVENT_CLOSE ExitLoop EndSwitch Sleep(10) WEnd GUIDelete() EndFunc ;==>Example  
      I'm sure there are some use-cases I've forgotten, so feedback is welcome!
       
      Download the UDF and several more examples: GuiFlatButton_20190414.zip
      Update 2019-04-14
      Fixed bug, not showing pressed down state when clicking rapidly
      Added Icon/Bitmap support!
      Added function GuiFlatButton_SetPos to change the position and/or size of a button
      Update 2019-02-09
      Added 2 new functions to set the button colors globally for all future buttons.
      GuiFlatButton_SetDefaultColors 
      GuiFlatButton_SetDefaultColorsEx

      Credits to:
      Melba23 (UDF template)
      LarsJ (general subclassing code)
      4ggr35510n (TrackMouseEvent example)
      binhnx (disable dragging with $WS_EX_CONTROLPARENT)
      GUIRegisterMsg in AutoIt Help (owner-draw button example)
      funkey (_WinAPI_DrawState example)
    • By nooneclose
      Hello everyone, I am wondering if and how it is possible to connect my AutoIt script to a different email in my outlook. I have two different accounts when I open outlook. The first which my script always connects to is my own email while the second is a group email account. How or can I make the script connect to the second one and access its inbox instead of mine? This is all work related so no funny business here. 
      Global $oOutlook = _OL_Open() ; Store all the Unread emails into an array Global $aItems = _OL_ItemFind($oOutlook, "*\Outlook-UDF-Test", $olMail, _ "[UnRead]=True", "Subject", "Maintenance Request from Eagle's Nest", "EntryID,Subject", "", 1) ; Display the array of unRead emails If IsArray($aItems) Then ;_ArrayDisplay($aItems, "OutlookEX UDF: _OL_ItemFind - Unread mails") Else MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", _ "Could not find an unread mail. @error = " & @error & ", @extended: " & @extended) EndIf ; Get the number of unread emails Global $numberOfUnRead = UBound($aItems, $UBOUND_ROWS) - 1 ;MsgBox("", "Number of Unread emails", $numberOfUnRead) ConsoleWrite("Number of unread emails: " & $numberOfUnRead & @CRLF) I might be missing some code in the post but my code works It's just so long I don't want to post all 2300+ lines. 
      Thank you for the help I greatly appreciate this community. 
×
×
  • Create New...