Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Muitten ohjelmien käsittelyä (vb)

Monkkats [29.11.2003 22:30:58]

#

Onko mahdollista jotenkin muuttaa vaikka Text1.Textin jostaa käynnissä olevasta ohjelmasta vaikkapa tesktiks "muutettu"?

Antti Laaksonen [29.11.2003 23:14:38]

#

Onnistuu esimerkiksi vanhalla kunnon DDE-tekniikalla.

Tehdään ensin ohjelma, joka vastaanottaa viestejä. Laita formille tekstikenttä, jonka nimeksi tulee Text1. Vaihda formin LinkMode-ominaisuuden arvoksi "1 - Source" ja LinkTopic-ominaisuuden arvoksi "ddetesti". Tämän jälkeen käännä ohjelma EXE-tiedostoksi. Paina vielä tätä ennen käännösikkunassa Options-nappia ja muuta esiin aukeavasta ikkunasta Application->Title-kohdan arvoksi "ddetesti".

Kun käynnistät ohjelman, voit muodostaa siihen DDE-yhteyden. Testataan tätä toisella VB-ohjelmalla. Aloita uusi projekti ja laita formille tekstikenttä (Text1) ja komentopainike (Command1). Kirjoita seuraava koodi formille:

Private Sub Command1_Click()
    'lähetetään tekstikentän sisältö toiseen ohjelmaan DDE:llä
    Text1.LinkPoke
End Sub

Private Sub Form_Load()
    'sekä ohjelman että ohjelman osan nimi on "ddetesti"
    Text1.LinkTopic = "ddetesti|ddetesti"
    'yhdistetään DDE-linkki Text1-kontrolliin
    Text1.LinkItem = "Text1"
    'linkitystapa on manuaalinen
    Text1.LinkMode = vbLinkManual
End Sub

Nyt voit testata ohjelman toimintaa. Kirjoita tekstikenttään jotakin ja paina nappulaa — jos olet tehnyt kaiken ohjeiden mukaisesti, ilmestyy teksti samalla hetkellä toisen ohjelman tekstikenttään.

thefox [29.11.2003 23:24:23]

#

Tai sitten hankit itsellesi ko. tekstiboksin kahvan (kaikki kontrollit on Windowsissa ikkunoita) esim. FindWindowilla, GetWindowilla etc, ja lähetät ikkunalle WM_SETTEXT viestin SendMessage APIlla (SetWindowText ei toimi muihin prosesseihin kuin kutsuvan ohjelman).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta