Onko mahdollista jotenkin muuttaa vaikka Text1.Textin jostaa käynnissä olevasta ohjelmasta vaikkapa tesktiks "muutettu"?
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.
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).
Aihe on jo aika vanha, joten et voi enää vastata siihen.