Page 4 of 4
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 11:32 am
				by whertz
				SROD YOU ARE A GENIUS!!!
You code didn't work at first, findwindow kept returning 0, until I changed from this: FindWindow_("Windowname", 0) to this: FindWindow_(0,"Windowname")
I always thought the string you are searching for with findwindow is the second parameter. Anyway, it works, thank you so much.
			 
			
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 11:38 am
				by srod
				Okay, just keep in mind that FindWindow_(0,"Windowname") can be unsafe/unreliable because window titles can change. Take a look at IE for example, the window title changes to reflect whichever page I am currently viewing. Also, the window title could be language dependent etc.
You are better off using the window class name. Use the following code to determine the classname (using the hWnd value you have found) :
Code: Select all
a$ = space(256)
GetClassName_(hWnd, @a$, 256)
debug a$
Once you have the classname, modify your FindWindow_() to :
Code: Select all
FindWindow_("Insert Classname here", 0)
With my Trillian example, I used the classname "trillian" which the application had registered etc.
 
			 
			
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 11:53 am
				by infratec
				Hi,
here is my small try for a solution
Code: Select all
Procedure Refresh(hTray.l)
 
 Result = #False
 
 If hTray
  rRect.RECT
  ;get the size of the window
  If GetClientRect_(hTray, rRect)
   ;loop through each line
;   For z.l = 0 To rRect\bottom
z = rRect\bottom / 2
    ; send a MouseMove to each position
    For x = 0 To rRect\right Step 4
     SendMessage_(hTray, #WM_MOUSEMOVE, 0, (z << 16) | x)
    Next x
;   Next z
   
   Result = #True
  EndIf
 EndIf
 ProcedureReturn Result
EndProcedure
Procedure.l FindSysTray()
 
 hWnd.l = FindWindow_("Shell_TrayWnd", #Null)
 If hWnd
  hWnd = FindWindowEx_(hWnd, 0, "TrayNotifyWnd", #Null)
  If hWnd
   hWnd = FindWindowEx_(hWnd, 0, "SysPager", #Null)
   If hWnd
    hWnd = FindWindowEx_(hWnd, 0, "ToolbarWindow32", #Null)
   EndIf
  EndIf
 EndIf
 
 ProcedureReturn hWnd
 
EndProcedure
Procedure SysTrayRefresh() 
 Result = #False
 
 ;get handle of Systray
 hSystray.l = FindSysTray()
 ;refresh Systray
 If Refresh(hSystray) : Result = #True : EndIf
 
 ProcedureReturn Result
 
EndProcedure
SysTrayRefresh()
Please test it.
Bernd
 
			 
			
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 11:57 am
				by srod
				Yep that works here.  
 
Nice solution.
 
			 
			
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 12:02 pm
				by whertz
				Thanks infratec, another good solution.
			 
			
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 12:16 pm
				by infratec
				Hi,
it is not neccessary to send a MouseMove to each line,
so I reduced it to the middle line.
I also 'move' now only every 4th pixel.
Since I still hit every icon, it works.
Bernd
			 
			
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 12:19 pm
				by Michael Vogel
				RASHAD wrote:Hi Michael
Nice talking to you
Give me some details, like What do you want to do?(may be I can help)
I think XP is in your mind not Win 7, right?
Right !
 
			 
			
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 12:21 pm
				by infratec
				Hi Michael,
my solution 'refreshes' the systray complete.
Like you move the mouse above it 
Bernd
 
			 
			
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 12:31 pm
				by RASHAD
				Hi Berned
Sorry it does not work here not with XP nor with Windows 7
It seems to me it will work with some special cases
I created a prog. it is only a process no windows it create a system tray icon and using Esc key to quit
When I kill the process the icon stayes in the system tray and no way up to now to clean it specially with 7
It is a kind of a f**** task somehow
Hi Micharl
Ok I will try (may be .... who knows)
			 
			
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 12:38 pm
				by infratec
				Hi Rashad,
I use XP 32 bit and the 'notepad' example.
It works without any problems.
The only thing what it does, is to simulate a mousemove across the whole stuff.
So if your icon removes when you use your real mouse, it should also remove with my program.
Please try the latest version.
Bernd
			 
			
					
				Re: How to remove systray icon?
				Posted: Fri Feb 19, 2010 12:48 pm
				by RASHAD
				Hi Berned
I know that you are testing some special case
Keep tring will you?
whertz just opened the hell
Michael
BTW:Your marvel code for ejecting the USB flash works for me in XP only
But nobody complain about that so I kept quiet check that please.
			 
			
					
				Re: How to remove systray icon?
				Posted: Sat Feb 20, 2010 3:08 pm
				by Michael Vogel
				Wrote some words like "Thanks Bernd and Rashad" but it seems that I forgot to click on "send"  
 
Your code snippets work fine here, I'm sure, one of my next programs will use some lines of them 
 
Michael
RASHAD wrote:Michael
BTW:Your marvel code for ejecting the USB flash works for me in XP only
But nobody complain about that so I kept quiet check that please.
Hm - I'm using the eject routines in a small tool called "Runner", which is something like a swiss knife on my USB stick. I also have included the routine to eject USB devices, which worked fine on all PCs for now (2000, XP, Vista and 7) -- the only difference is, that the LED doesn't get off on Vista 
 
The only thing in the eject procedure lines I had to change for Vista was the following (I fear, that has nothing to do with your problems)
Global LocalDrive;=FirstChar(PeekS(GetCommandLine_()))
GetModuleFileName_(0,@LocalDrive,2); <--- 1 works for XP but not for Vista !
LocalDrive&$df;
 
			 
			
					
				Re: How to remove systray icon?
				Posted: Sat Feb 20, 2010 3:36 pm
				by RASHAD
				OK Michael
I will give the code another look 
Now see next if it will suit you
Sorry if we are hijacking this thread
Code: Select all
    h1 = FindWindow_("Shell_TrayWnd",0)   
    h2 = FindWindowEx_(h1,0,"TrayNotifyWnd",0)
    h3 = FindWindowEx_(h2,0,"SysPager",0)  
    h4 = FindWindowEx_(h3,0,"ToolbarWindow32",0)
    h5 = FindWindowEx_(h2,0,"TrayClockWClass",0)
;********************************( Show Desktop Windows 7 )************************
    
    ;h6 = FindWindowEx_(h2,0,"TrayShowDesktopButtonWClass",0)
    
    
;******************(  Maximize Clock  )**************************
    ShowWindow_(h3,#SW_HIDE)
    ShowWindow_(h5,#SW_MAXIMIZE)
    SHChangeNotify_(134217728,0,0, 0)
    
    
;******************(  Restore Previous  )**************************
;     ShowWindow_(h5,#SW_RESTORE	)
;     ShowWindow_(h3,#SW_SHOW)
;     SHChangeNotify_(134217728,0,0, 0)