AppActivate

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
2106
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat
  • 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-

    Äänestä

Kommentoi aloitusta


Jonttu kirjoitti:

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

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu