Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

Sende besked fra en instans af .exe til en anden

Af Gæst Steffen | 14-08-2006 20:26 | 1159 visninger | 4 svar, hop til seneste
Jeg har et lidt pudsigt problem. Jeg har lavet et program som ligger sig i tray og kører. Når så brugeren eventuelt vil starte endnu et eksemplar af samme program, vil jeg gerne at det allerede kørende program starter en ny tråd op med endnu en instans af programmet, fremfor at der skal startes en helt ny proces op med tilhørende garbage collector osv. Mit problem er hvordan jeg sendes besked fra den nyligt startede instans af programmet til den allerede kørende, så den der kører kan starte en ny tråd, og den nyligt startede kan lukke sig selv ned igen. Det skal lige nævnes at programmet ikke arver fra WinForm men istedet ApplicationContext, så det udelukkende kører i Tray. Jeg kan derfor ikke snuppe window handlet og bare sende en message via SendMessage eller PostMessage til hovedvinduet. Jeg har tænkt på at sætte det første instans op som TCP server, men jeg vil helst ikke bruge ressourcer på det, hvis nu brugeren ikke starter flere instanser op. Jeg har ligeså tænkt på named pipes, men igen er jeg ret sikker på at "server" delen så skal bruge ressourcer på at stå og lytte, hvilket jeg gerne vil undgå. Ligeså må det ikke være en løsning der involverer et delay (f.eks. noget fusk med at skrive til en fil, hvor første instans af programmet så tjekker på filen) Det jeg søger er altså en løsning, der ikke bruger nogle nævneværdige ressourcer på "server" delen (dvs. den første instans man starter op). Om det koster lidt ressourcer når der skal startes ny tråd osv. er ligegyldigt, da det jo kun er en kort periode. Håber problemet er ordentligt beskrevet, ellers må i bede mig uddybe :)
--
Gæstebruger, opret dit eget login og få din egen signatur.
#1
atc
Semibruger
14-08-2006 20:54

Rapporter til Admin
Jeg tror, du bliver nødt til at skrive, hvilket sprog programmet er skrevet i.. Derudover er det ikke mit indtryk, at denne side er den rette sted at spørge om sådan nogle spørgsmål. http://www.udvikleren.dk[...] er rigtig god på dette område.. Ikke for at fornærme hol i øvrigt.
--
http://www.tornweb.dk[...]
#2
Steffen
Gæst
14-08-2006 21:05

Rapporter til Admin
Hovsa det glemte jeg jo helt. Det er .Net 1.1, men 2.0 kan også gå an. Om i har eksempler i C#, J#, C++ eller VB.Net er hip som hap :)
--
Gæstebruger, opret dit eget login og få din egen signatur.
#3
NitroBlast
Mega Supporter
14-08-2006 21:26

Rapporter til Admin
For at registrere et ikon i tray, kræves der et window-handle / HWND - se evt. beskrivelsen af Shell32 funktionen "Shell_NotifyIcon". Det handle, der registreres, kan også bruges til at modtage "messages" sendt med "SendMessage" (Uskift WndProc med "GetWindowLong"). Du kan gemme dette handle i registrerings-databasen, så efterfølgende instanser kan kalde handlen. Hvis en instans så får et negativt svar tilbage fra "SendMessage", så er det fordi at instansen er den første der startes, og derfor skal programafviklingen fortsætte, og handlet skal gemmes i regdb. Alternativet er at bruge pipes eller sockets. Pipes bruger mindre resourcer end en socket - men begge dele kræver, at der kører en ekstra Thread i baggrunden, som kan "lytte", og dette er næppe optimalt. Enjoy!
--
Min rekord: Det tog [71,7968800000] sekunder at generere denne side Folk der ikke kan sige "Tak for hjælpen", når man løser deres problem burde IP-blockes!
#4
Steffen
Gæst
16-08-2006 21:16

Rapporter til Admin
#3 > Ah rigtigt fedt at man kan bruge tray icon'et handle, det vil jeg lige forsøge mig med. Det skal dog siges at jeg ikke selv kalder Shell_NotifyIcon, idet jeg bruger det tray komponent der ligger i .Net frameworket - men mon ikke jeg kan hive et handle fra det på en måde. Mange tak for det gode indfald :)
--
Gæstebruger, opret dit eget login og få din egen signatur.

Opret svar til indlægget: Sende besked fra en instans af .exe til en anden

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning