ActiveX og eventer i en service
Forum --> .NET
|
Author |
Comment |
Ole Morten Heien
|
ActiveX og eventer i en service |
27.05.2009 10:04:33
|
Heisan folkens En kollega av meg har laget et program som benytter en ActiveX for å motta hendelser fra en hardware. Dette fungerer glimrende i en WinForm applikasjon, men når han lager dette om til en WinService så får han ikek lest eventene, eller muligens så sendes ingen eventer. Min første tanke er jo at så lenge man ikek har en Window struktur aktiv så har man jo ingen event håndterer heller. Hvordan kan man få disse eventene. En tanke jeg sitter med er jo å fyre et vindu "hidden" og lese eventene fra dette vinduet, men er litt usikker om det lar seg gjøre fra en Service. Begreper som Message-Pump er også blitt nevnt... All hjelp er selvsagt imøtesett med et bredt smil.... 
|
Lars Thomas Bredland
|
RE:ActiveX og eventer i en service |
27.05.2009 13:34:32
|
Vet svaret er kjedelig men; man skal ikke bruke ActiveX i en service. Det er mulig å tillate en service å bruke vinduer - "allow service to interact with desktop" men det tyder på at man har et dårlig design når man må ty til det. Hvis man gjør det så byr det også på en del morsomheter med vista/win7 (siden vinduet til applikasjonen da havner i console 0 og egentlig ikke i konsollet til brukeren).
:-/
|
Ole Morten Heien
|
RE:ActiveX og eventer i en service |
27.05.2009 13:57:32
|
|
Men det at en ActiveX ikke tar imot eventer da? Betyr det at man ikke kan benytte ActiveX komponenter fullt ut i en service? |
Ole Morten Heien
|
RE:ActiveX og eventer i en service |
27.05.2009 13:57:59
|
hmmm. Det var jo akkurat det du sa..... ;.)
|
Ronny Hansen
|
RE:ActiveX og eventer i en service |
27.05.2009 14:07:13
|
Nå er historien fra DDE/COM frem til ActiveX og COM+ en brokete sti fordi markedsføringsavdelingen til MS har blandet seg inn i navngivingen og forvirret de fleste.
En COM integrasjon og en ActiveX integrasjon er identisk - det er bare navnet som er endret.
Dog er det forskjeller på COM/ActiveX komponenter, og det er basert på hvilke COM interfacer som er tilgjengelig, en ganske vanlig inndeling er COM/ActiveX CONTROL (dvs. noe som må legges på en form) eller en COM/ActiveX DLL (hvor objectet kan opprettes fra kode uten visuelle elementer).
Se gjerne http://www.answers.com/topic/activex for mere info.
Har personlig lang erfaring fra diverse integrasjoner med HW hvor komponenten som skal benyttes for HW integrasjon er OCX og ikke DLL, noe som jeg finner merkelig da det ikke egentlig er noe ”visuelle komponenter”.
Mest sannsynlig så er OCX'er lettere å få til å virke for urutinerte VB6 programmerere enn en DLL. I tillegg tror jeg at det er en del Windows "visuelle" RAD verktøy som kun støtter OCX og ikke DLL (kommer i hvert fall på én i farta).
Har fra gammelt av laget mange Windows Servicer i VB6 som benytter Forms for å holde på en OCX ut av nødvendighet, og det har fungert helt utmerket. Ved debugging kunne jeg også configurere service'en til å vises på desktoppen. (Under "login" til services, kan man der krysse av for "Allow service to interact with desktop").
Har p.t. ikke laget noen .NET applikasjon som benytter OCX og kjører som en service, men teoretisk så klarer jeg ikke å se at det skal skape noen problemer.. i praksis kan det være helt andre spilleregler
Tror nesten jeg må teste litt... |
Copyright (C) 2006 Norwegian .NET User Group