| View previous topic :: View next topic |
| Author |
Message |
majkinetor
Joined: 24 May 2006 Posts: 4055 Location: Belgrade
|
Posted: Wed Nov 28, 2007 3:07 pm Post subject: [module] Tray 2.1 |
|
|
_________________

Last edited by majkinetor on Fri Sep 11, 2009 8:28 am; edited 6 times in total |
|
| Back to top |
|
 |
Andreone
Joined: 20 Jul 2007 Posts: 257 Location: Paris, France
|
Posted: Wed Nov 28, 2007 4:16 pm Post subject: |
|
|
Great Thank you very much.
It's good to know that we are not limited with the number of tray icons anymore. |
|
| Back to top |
|
 |
Dragonscloud
Joined: 16 Jul 2005 Posts: 95
|
Posted: Wed Nov 28, 2007 10:22 pm Post subject: |
|
|
I will find this useful. Thanks. Looks pretty easy to use.  _________________ “yields falsehood when preceded by its quotation” yields falsehood when preceded by its quotation. |
|
| Back to top |
|
 |
Junyx
Joined: 11 Jul 2005 Posts: 84 Location: Germany
|
Posted: Thu Nov 29, 2007 9:51 pm Post subject: |
|
|
this piece of soft is very interesting!
@majkinetor:
is there a way to attach different menus to the tray icons?
with your test script every created icon shares the same menu.
i tried different things but wasn't able to do it the right way(tm).
regards...
Junyx _________________ C.R.E.A.M. |
|
| Back to top |
|
 |
majkinetor
Joined: 24 May 2006 Posts: 4055 Location: Belgrade
|
Posted: Thu Nov 29, 2007 10:50 pm Post subject: |
|
|
Yes, something like:
| Code: | hIcon1 := Tray_Add(...)
hIcon2 := Tray_Add(...)
OnTrayIcon(wparam, lparam) {
local msg
static LBUTTONDOWN=0x201, LBUTTONUP=0x202, LBUTTONDBLCLK=203, RBUTTONDOWN=0x204, ....
msg := lparam & 0xFFFF
if (msg != RBUTTONUP)
return
if (wparam = hIcon1)
ShowMenu(menu1)
if (wparam = hIcon2)
ShowMenu(menu2)
} |
_________________
 |
|
| Back to top |
|
 |
Junyx
Joined: 11 Jul 2005 Posts: 84 Location: Germany
|
Posted: Fri Nov 30, 2007 1:45 pm Post subject: |
|
|
thanks, man!
will try it on weekend.
i thought my "solution" looked similar but didn't work out as expected... _________________ C.R.E.A.M. |
|
| Back to top |
|
 |
Joy2DWorld
Joined: 04 Dec 2006 Posts: 532 Location: Galil, Israel
|
Posted: Mon Dec 03, 2007 12:31 pm Post subject: |
|
|
interesting.
glanced at code but did not see, is there a reason is placing only lo-res version of icons ? _________________ Joyce Jamce |
|
| Back to top |
|
 |
majkinetor
Joined: 24 May 2006 Posts: 4055 Location: Belgrade
|
Posted: Mon Dec 03, 2007 1:18 pm Post subject: |
|
|
LOL... well, there is a reason.
I am totaly bored by that topic (icons in the menus) and didn't find the way back then (while developing MMenu) to 1) load shell icons in any other size then 32 or 16, 2) make them hi res.
I beleive lexikos answered both of those questions, so perhaps we can summon him here for help instead of taking it hard way and browsing his Menu function. _________________
 |
|
| Back to top |
|
 |
Junyx
Joined: 11 Jul 2005 Posts: 84 Location: Germany
|
Posted: Mon Dec 03, 2007 6:02 pm Post subject: |
|
|
| majkinetor wrote: | | Code: | hIcon1 := Tray_Add(...)
hIcon2 := Tray_Add(...)
OnTrayIcon(wparam, lparam) {
local msg
static LBUTTONDOWN=0x201, LBUTTONUP=0x202, LBUTTONDBLCLK=203, RBUTTONDOWN=0x204, ....
msg := lparam & 0xFFFF
if (msg != RBUTTONUP)
return
if (wparam = hIcon1)
ShowMenu(menu1)
if (wparam = hIcon2)
ShowMenu(menu2)
} |
|
i tried the code (merged it with your _Test.ahk) - but i won't work.
menu2 will be displayed, but not only for tray icon no. 2.
instead both tray menus will be set to menu2.
did you try your code yourself? _________________ C.R.E.A.M. |
|
| Back to top |
|
 |
majkinetor
Joined: 24 May 2006 Posts: 4055 Location: Belgrade
|
Posted: Mon Dec 03, 2007 11:12 pm Post subject: |
|
|
you didn't do something correctly.
This example works:
| Code: | #NoTrayIcon
#SingleInstance force
Gui, +LastFound
hwnd := WinExist()
menus =
(LTrim
[TrayMenu1]
11
12
[TrayMenu2]
21
22
23
)
h1 := Tray_Add( hwnd, "OnTrayIcon", "res\new.ico")
h2 := Tray_Add( hwnd, "OnTrayIcon", "res\new.ico")
return
TrayMenu1:
msgbox Hi from menu1
return
TrayMenu2:
msgbox Hi from menu2
return
OnTrayIcon(wparam, lparam) {
local msg
static LBUTTONDOWN=0x201, LBUTTONUP=0x202, LBUTTONDBLCLK=203, RBUTTONDOWN=0x204, RBUTTONUP=0x205, RBUTTONDBLCLK=0x206, MBUTTONDOWN=0x207, MBUTTONUP=0x208, MBUTTONDBLCLK=0x209
msg := lparam & 0xFFFF
if (msg != RBUTTONUP)
return
if (wparam=h1)
ShowMenu(menus, "TrayMenu1")
else ShowMenu(menus, "TrayMenu2")
}
#include Tray.ahk
#include res\ShowMenu.ahk
|
_________________
 |
|
| Back to top |
|
 |
Junyx
Joined: 11 Jul 2005 Posts: 84 Location: Germany
|
Posted: Wed Dec 05, 2007 7:29 pm Post subject: |
|
|
okay, thanks. your last code worked for me.
Junyx _________________ C.R.E.A.M. |
|
| Back to top |
|
 |
majkinetor
Joined: 24 May 2006 Posts: 4055 Location: Belgrade
|
|
| Back to top |
|
 |
majkinetor
Joined: 24 May 2006 Posts: 4055 Location: Belgrade
|
Posted: Sun Jul 12, 2009 9:30 pm Post subject: |
|
|
v2.0a
- All globals removed.
- Module can now examine and modify 3thd pardy icons. See about for more information about the code.
- Add function now accepts icon resources.
- Several other APIs added.
- New samples.
- Docs updated. _________________
 |
|
| Back to top |
|
 |
majkinetor
Joined: 24 May 2006 Posts: 4055 Location: Belgrade
|
Posted: Thu Sep 10, 2009 6:29 pm Post subject: |
|
|
* v2.1 *
+ Tray_Click - you can now send click to any tray icon (even hidden ones) and generally totally automate tray area
+ Tray_Disable -allows you to totally disable notification area.
+ Tray_Focus - allows you to focus tray icon or tray area. You can then use keyboard to launch menus or move around.
+ Tray_Rect - get coordiantes of the icon, screen or relative.
+ Sample updated - clicking on icon will now send click to icon, use shift left click to dbl left click the icon. _________________
 |
|
| Back to top |
|
 |
majkinetor
Joined: 24 May 2006 Posts: 4055 Location: Belgrade
|
Posted: Thu Sep 10, 2009 7:11 pm Post subject: |
|
|
This is small example of how to select particular item from the menu of 3td party tray icon.
Program CCC.exe holds ATI video driver tray menu. I am selecting second item of the first submenu with the following code:
| Code: |
BlockInput, on
pos := Tray_Define("CCC.exe", "i")
Tray_Click(pos, "R")
WinWait, ahk_class #32768
; WinHide, ahk_class #32768 ;this and next line are to hide the menu.
; WinKill, ahk_class SysShadow
ControlSend,,{Down}{Down}{Right}{Down}{ENTER},ahk_class #32768
BlockInput, off
ExitApp |
This code is very reliable because it doesn't depend on Taskbar settings (if its hidden, on non-default position, disabled, etc...) and notification area settings (for instance, if icon is moved to the hidden icons) _________________
 |
|
| Back to top |
|
 |
|