"David A. D. Konrad" <david_konrad@hotmail.com> skrev i en meddelelse
news:b0d041$e8q$1@sunsite.dk...
> "Harald" <swobu@kroning.dk> skrev i en meddelelse
> news:3e29fd07$0$129$edfadb0f@dtext02.news.tele.dk...
>
> > Jeg fandt WM_COPYDATA metoden, har prøvet den og det ser ud til at
virke.
> Da
> > program A der sender strengen ikke ved hvilke programmer der skal
modtage
> > strengen bruger jeg HWND_BROADCAST i SendMessage.
> > Jeg har også kikket på bla. WaitForSingleObject men kan ikke lige se
> hvordan
> > det kan bruges her, men det er nok fordi jeg ikke fatter hvad
> > WaitForSingleObject overhovedet bruges til
. Du snakker om filnavne,
> > mener du så at du skriver noget til en fil på harddisken og så læser
denne
> > fil igen fra et andet program?
>
> Ja - nu har jeg desværre ikke en delphi installeret på den 'puter jeg
sidder
> ved pt, men jeg kan da nok komme med et eksempel i morgen...Det er dog
> rimelig nemt at lave. Princippet går slet og ret ud på at have et koncept
> omkring messagefiler, kreere filer, registrere nye forekomster af filer og
> slette dem igen.
>
> Her er princippet :
>
> Vi har program A og program B kørende. Al kommunikation imellem de to
> programmer foregår via filer. Filer der hedder "request" er en
forespørgsel,
> filer der hedder "response" er et svar. En fil med extensionen A er til
> programmet A, en fil med extensionen B er til programmet B. Når A vil
> kommunikere med programmet B, laver den slet og ret en fil i et
> foruddefineret katalog de har "aftalt" skal være kommunikationskataloget,
> med navnet "request.b". Programmet B ved nu, at her er en besked, kan læse
> beskeden og trigge de events/programdele der er aktuelle i forhold til
> filens indhold. Hele tricket består faktisk i et bæredygtigt system.
>
> Her er fremgangsmåden :
>
> Når program A henholdsvis program B starter op, "initialiserer" de hver
især
> en handle til det katalog der skal fungere som kommunikationskatalog.
Dette
> gøres med FindFirstChangeNotification ala
>
>
kommunikation_katalog_handle:=FindFirstChangeNotification('messages',true/fa
> lse,FILE_NOTIFY_CHANGE_FILE_NAME ...whatever)
>
> (slå selv brugen op)
>
> Derefter indlæser du listen af filer fra kataloget - hvis der er nogen, så
> du kan sammenligne med en senere status.
>
> Selve overvågningen af kataloget pakker du ind i en tread's execute metode
> ala
>
> // --> pseudokode, blot eksempel - sidder ikke med delphi...
>
> procedure Tminthread.execute;
> var result : integer;
> begin
> while not terminated do
> begin
> result:=WaitForSingleObject(kommunikation_katalog_handle,100);
> if result=WAIT_OBJECT_0 then
> begin
> //find nye filer - sammenlign med oprindelig status
> //er der en ny fil til "mig" - f.eks "request.A"
> //hvis ja, læs beskedens indhold og aktiver en event du har i dit
> hovedprogram
> begin
> MessageReceivedEvent(indhold);
> //slet fil, eller kør en FindNextChangeNotification
> end;
> //
> end;
> end;
>
> Det er faktisk rimelig simpelt. Jeg er sikker på du kan finde eksempler på
> nettet du kan komme videre med. De tre API-kald jeg benytter ovenover
anser
> jeg i øvrigt for at være blandt de allermest brugbare, da de kan bruges
til
> en række forskellige formål. Håber det hjalp en smule!
Ja tak nu kan jeg se hvordan det bruges, meget smart.
Mvh
HK