Page 4 of 4

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" :evil:

Your code snippets work fine here, I'm sure, one of my next programs will use some lines of them :wink:

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)