Jump to content
hendrikhe

how to check if a windows with a Class is active

Recommended Posts

Hello,

I am trying to create a small tool which alerts me when I receive a message from Skype for Business.

You know sometimes you simple miss a conversation...

I need to know when the message windows pops up:

 

If message window active Then

play a very loud sound

EndIF

 

Usually I would use WinActive() function, however it requires a title. And this doenst work, because the title is the name of the person 

messaging me, and can change every time.

Is it possible to check if a Class "LyncTabFrameHostWindowClass" is active?

 

image.png.788d79eaf07faa4ec446e7e34ce9c026.pngimage.png.733050ec7e01387e68efe07c14c1d901.png

 

 

 

Share this post


Link to post
Share on other sites
57 minutes ago, hendrikhe said:

Usually I would use WinActive() function, however it requires a title. And this doenst work, because the title is the name of the person messaging me, and can change every time.

Actually, this is incorrect. See the help file entry for Winactive, then check the description of the Title parameter. Notice the part where it say "See title special definition"? Click that and it will take you to the Window Titles and Text (Advanced) entry. Read the section with the heading "Advanced Window Descriptions" for details on how to use things like window class to identify a window.

Also, if you look at the example under the WinActive help file entry, it shows how to use Class with WinActive.

 

Share this post


Link to post
Share on other sites

Than Danp2 , you are right.

Here my solution for others who might have the same idea/question:

#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>
#include <Sound.au3>


while 1
$x = WinExists("[CLASS:LyncTabFrameHostWindowClass]", "")
$y = WinExists("Skype for Business Notification", "")

if $x or $y Then

SoundPlay(@WindowsDir & "\media\tada.wav", 1)


EndIf

;MsgBox($MB_SYSTEMMODAL, "Stdout Read:", $x)
sleep(500)
WEnd

 

Share this post


Link to post
Share on other sites
3 hours ago, hendrikhe said:

Here my solution for others who might have the same idea/question:

Seems kinda obnoxious, 2 tada’s per second, no way to make it stop without closing the very message you want to read.

May I suggest:

While WinWait("[CLASS:LyncTabFrameHostWindowClass]", "")
   SoundPlay(@WindowsDir & "\media\tada.wav", 1)
   WinWaitClose("[CLASS:LyncTabFrameHostWindowClass]", "")
WEnd

 

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

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By rcmaehl
      Hi all,

      I'm encountering a weird issue. I'm attempting to toggle off Caps Lock and it briefly turns it off before it just turns right back on causing the LED to just strobe constantly. I'm using the following code:
      Opt("WinTitleMatchMode", 2) Global Const $VK_CAPITAL = 0x14 Main() Func _GetCapsLock() Local $ret $ret = DllCall("user32.dll","long","GetKeyState","long", $VK_CAPITAL) Return $ret[0] EndFunc Func Main() While 1 If _GetCapsLock() And WinActive("Chrome") Then Send("{CAPSLOCK OFF}") WEnd EndFunc I've tried the following to no resolve:
      Using #RequireAdmin Using {CAPSLOCK TOGGLE} Setting "SendKeyDownDelay" to values other than 5 Adding Sleep after attempting to turn off CapsLock Using _WinAPI_GetAsyncKeyState($VK_CAPITAL) My working environment is:
      AutoIt 3.3.14.4, running as Standard user (Admin also attempted as noted) Running as a non-compiled script in SciTE Windows 7 Enterprise 7601 SP1 McAfee Enterprise I'm sure I'm forgetting something basic, so any help is appreciated.
    • By hotkidd
      Have this AutoIT script used to click a button in Web to export data to Excel. It works well when run it from command line or AutoIT compiled .exe.
      But after added it to a Win10 VM Task Scheduler as I need to run it daily, it fails to be executed.
      Steps to reproduce:
      1. Compile the script to .exe.
      2. Go to Task Scheduler. Create the task to run this .exe.
      3. Right click on the created task -> run  -> shows nothing.
       
      Snippet of the code:
      Local $URL = "URL" Local $title = "title" Local $name = "name" Local $oIE = _IECreate() _IEPropertySet($oIE, "toolbar", False ) _IEPropertySet($oIE, "height", 800 ) _IEPropertySet($oIE, "width", 1000 ) _IEPropertySet($oIE, "left", 0 ) _IEPropertySet($oIE, "top", 0 ) _IEPropertySet($oIE, "resizable", False ) _IENavigate($oIE, $URL) Sleep(5000) _IENavigate($oIE, $ReportWeb) Sleep(10000) ;click the button to export the Excel and save it ControlClick($titleName, $textName, "[CLASS:Internet Explorer_Server; INSTANCE:1]","main",1,100,100) ControlSend($title,$name,"[CLASS:DirectUIHWND; INSTANCE:1]","{ENTER}")
    • By trescon
      Good evening, I need to configure a graphical interface where the contents of some "Button" are taken from a file I have foreseen to include with "#include".
      For the text no problem, the problem comes when I'm going to assign the color to the background of the "Button", the "Button" becomes BLACK WHITE.
      I included in the included file as follows:
      $ Promotion_Color = "$ Color_Red"
      Clarity I also imported #include the library <ColorConstants.au3>
      In the main program I wrote like this:
      $ Promotion = GUICtrlCreateButton ($ Promotion, Dim_Fin_X + $ 170, $ Dim_Fin_Y, 750.120)
      GUICtrlSetFont (-1, 70, 800, 0, "Calibri")
      GUICtrlSetBkColor ($ Promotion, $ Promotion_Color); will change background color
      I thank all those who want to help me
      Alberto
×
×
  • Create New...