Ok guys, in the end I implemented a big time clutch that simulates the behaviour I was after:
I created a tiny app in C++ that starts Pharo, the image reads the --serve flag (that I implemented in DefaultCommandLineHandler), hides itself via NB, and kills the UIManager process to prevent refreshes. Then it adds an icon into the tray, with a single context-menu entry (Quit) that kills the Pharo process quits the tiny app itself. I know it's ugly, but it does work and, to the end user, it looks like Pharo just started minimized to tray. Thanks a lot for your help! :) Bernat. 2013/11/13 Igor Stasenko <siguc...@gmail.com> > > > > On 13 November 2013 12:02, Bernat Romagosa <tibabenfortlapala...@gmail.com > > wrote: > >> Thanks a lot Torsten! >> >> I'll invest the whole morning tomorrow in trying to get a little bit more >> of this to work. >> >> If I don't succeed... there are lots of very good restaurants in >> Barcelona, Igor ;) >> >> i can imagine :) I hope i will be able come there once more one day. > Barcelona is very beautiful city. > :) > > >> 2013/11/13 Torsten Bergmann <asta...@gmx.de> >> >>> Hi Bernat, >>> >>> >how do I translate this into NB code >>> >>> Either invite Igor (author of NB) for lunch or try this: >>> >>> >>> Its a C-structure, you convert it by wrapping this in a sublcass >>> of "NBExternalStructure". See the examples already in a Pharo 3.0 image. >>> >>> Basically you need: >>> >>> - define a subclass NBExternalStructure subclass: #WinNotifyIconData ... >>> - define the correct fields in a class side #fieldsDesc method according >>> to the native data types used in the structure >>> - call "WinNotifyIconData rebuildFieldAccessors" >>> - setup the types in a shared pool that you can include later: >>> >>> - define the pool: SharedPool subclass: #WinTryIconConstants ... >>> - in a class initialize method you can setup the type >>> >>> initialize >>> >>> NOTIFYICONDATA := #WinNotifyIconData. >>> PNOTIFYICONDATA:= 'NOTIFYICONDATA *'. >>> >>> - by including the pool you can use "NOTIFYICONDATA" or >>> "PNOTIFYICONDATA" in any native boost call. >>> >>> >>> If you are in Pharo 3.0 load "OS-Windows" package from the config >>> browser. >>> Check the subclasses of NBExternalStructure there. >>> >>> I wrapped many other windows structures already so you can get an idea >>> about >>> it. For instance have a look at WinConsoleConstants>>initTypeConstants, >>> there you will find >>> the CONSOLE_CURSOR_INFO, CONSOLE_SCREEN_BUFFER_INFO structs wrapped in >>> WinConsoleCursor, WinConsoleScreenBuffer classes. >>> >>> Compare them with the MSDN struct description. >>> >>> >Could the Windows API be any more convoluted and dev-unfriendly in any >>> >possible sense? >>> >>> This question should go to M$ not Pharo-user ;) >>> >>> Bye >>> T. >>> >>> >>> BTW: I'm not sure "PNOTIFYICONDATA" alone will solve your problem if I >>> remember correctly >>> from my Smalltalk/MT and C/C++ times also playing with tray icons. >>> I guess you need a callback that gets called when the icon is >>> clicked or the tray icon menu >>> is choosen (see uCallbackMessage member in the struct). >>> You also need a handle to an icon - either the icon from the EXEs >>> resource section or >>> by loading one from a bitmap. That means wrapping the icon or >>> bitmap apis too... >>> >>> >> >> >> -- >> Bernat Romagosa. >> > > > > -- > Best regards, > Igor Stasenko. > -- Bernat Romagosa.