Moi,
Mahtaakohan kukaan tietää kuinka ohjelma voi kutsua itsensä aktiiviseksi AppActivate-komennolla? Mulla on tuossa sellainen serveri-sovellus, jonka pitäisi "pullahtaa" pintaan heti, kun joku toinen ohjelma kutsuu sitä verkon läpi. Siksi lisäsin serverin koodiin seuraavat rivit:
...
UserForm.WindowState = vbNormal
AppActivate appTitle
...
Omalla koneella testatessani (serveri ja kutsuva ohjelma samalla koneella) se ei kuitenkaan toimi toivotulla tavalla, koska ainoastaan taskbar:n ikoni vilkuu ja sovellus pysyy sitkeästi taustalla.
Mikäli siirrän AppActivate-komennon kutsuvaan ohjelmaan (i.e pois serveri-ohjelmasta) niin silloin homma rulaa kuin pitääkin, mutta siitä ei ole paljon iloa, koska yleensä kutsuva ohjelma sijaitsee toisella koneella eikä edes tiedä serverin nimeä.
Yksi mahdollisuus asian korjaamiseen on tietenkin eräänlaisen "PopUp"-serveriohjelman tekeminen, jota serveri kutsuu tarvittaessa edelleen nostaakseen itsensä pinnalle. En kuitenkaan pidä tästä ratkaísumallista, koska se edellyttää jälleen yhden moduulin lisäämistä tähän jo ennestään monimutkaiseen kokonaisuuteen. Tehdään vasta tarvittaessa, mutta sitä ennen tutkitaan vielä tämä keskustelupalstan mahdollisuus. Ainakin viimeksi asennusongelman yhteydessä apu löytyi aika vikkelään - toivottavasti nytkin.
Etukäteen kiittäen,
Jonttu
Mahtaakohan kukaan tietää kuinka ohjelma voi kutsua itsensä aktiiviseksi AppActivate-komennolla? Mulla on tuossa sellainen serveri-sovellus, jonka pitäisi "pullahtaa" pintaan heti, kun joku toinen ohjelma kutsuu sitä verkon läpi. Siksi lisäsin serverin koodiin seuraavat rivit:
...
UserForm.WindowState = vbNormal
AppActivate appTitle
...
Omalla koneella testatessani (serveri ja kutsuva ohjelma samalla koneella) se ei kuitenkaan toimi toivotulla tavalla, koska ainoastaan taskbar:n ikoni vilkuu ja sovellus pysyy sitkeästi taustalla.
Mikäli siirrän AppActivate-komennon kutsuvaan ohjelmaan (i.e pois serveri-ohjelmasta) niin silloin homma rulaa kuin pitääkin, mutta siitä ei ole paljon iloa, koska yleensä kutsuva ohjelma sijaitsee toisella koneella eikä edes tiedä serverin nimeä.
Yksi mahdollisuus asian korjaamiseen on tietenkin eräänlaisen "PopUp"-serveriohjelman tekeminen, jota serveri kutsuu tarvittaessa edelleen nostaakseen itsensä pinnalle. En kuitenkaan pidä tästä ratkaísumallista, koska se edellyttää jälleen yhden moduulin lisäämistä tähän jo ennestään monimutkaiseen kokonaisuuteen. Tehdään vasta tarvittaessa, mutta sitä ennen tutkitaan vielä tämä keskustelupalstan mahdollisuus. Ainakin viimeksi asennusongelman yhteydessä apu löytyi aika vikkelään - toivottavasti nytkin.
Etukäteen kiittäen,
Jonttu
Vastaukset 2
Vanhimmat
http://www.mvps.org/vb/code/ForceFore.zip
Nythän workkii niinkuin pitääkin, kiitos. Toinen kiitos tulee tuosta oivasta "koodipankki"-osoitteesta (http://www.mvps.org/vb/), jonka ylläpitäjä ainakin ensisilmäyksellä näyttää osaavalta kaverilta.
Näyttäisi siltä, että VB:n "AppActivate" on sama asia kuin "SetForegroundWindow" API-funktion kutsuminen, joten Win 98 ja 2000 käyttäjien pitää käyttää "ForceForegroundWindow":ta (ForceFore.bas) saadakseen hommat toimimaan haluamallaan tavalla.
-Jonttu-