Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [c/ Win Api]

    Salve,sto studiando i sorgenti di un'applicazione MFC e c'è un punto che non mi è chiaro.Ad un certo punto l'applicazione definisce un nuovo messaggio e lo registra tramite l' API RegisterWindowMessage() con parametro la stringa "{1DF71F66-5648-49dd-96A1-79F73A747956}".Ora questa API da quello che ho capito serve a trovare un identificatore numerico unico per il nuovo messaggio di windows che si sta definendo,il problema è dove vado a pescare la stringa da passare comne parametro?C'è un qualche criterio per costruirla,una API che la ritorna o posso anche usare un stringa a mio piacimento magari che richiami la finalità del messaggio?Sembra uno di quei valori che si trovano spesso nelle chiavi di registro.Qualcuno sa illuminarmi?Grazie
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  2. #2
    up
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Ciao,
    io utilizzo la RegisterWindowMessage in Delphi.

    Suppongo che tu sia già a conoscenza del fatto che i differenti messaggi all'interno di Windows sono identificati da una costante.

    Se due applicazione vogliono accordarsi per scambiarsi un certo messaggio, entrambe devono usare RegisterWindowMessage che provvede a restituire il primo codice numerico (costante) "libero" e non utilizzato per messaggi di sistema; se un'altra applicazione vuole intercettare questo messaggio, richiamando RegisterWindowMessage con lo stesso identificatore ottiene la stessa costante numerica che è stata restituita all'applicazione che ha precedentemente chiamato la funzione.

    Concludendo, si tratta di un meccanismo per garantire che un'applicazione non utilizzi costanti già adottate dal sistema per i propri messaggi personalizzati; inoltre, attribuendo un nome al messaggio, è possibile ottenere da due applicazioni diverse, o due istanze della stessa applicazione, lo stesso codice numerico che permette di ottenere alcune funzionalità come lo scambio di messaggi uguali e la loro dovuta comprensione.

    La stringa usata per identificare il messaggio dovrebbe essere il più univoca possibile, per evitare che abbia duplicati con identificatori usati da applicazioni di terze parti; credo che basti un nome del produttore concatenato con il nome dell'applicazione ed eventualmente il nome del messaggio per garantire una sufficiente univocità.

    Nell'esempio che hai trovato tu, probabilmente viene usata una GUID, un identificatore ottenuto in modo casuale e incorporato nell'applicazione...difficilmente ci saranno altre applicazioni che, usando una GUID anch'esse, adotteranno una sequenza di caratteri identica.

    Spero di averti chiarito meglio le idee a riguardo...

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Innanzitutto ti ringrazio della risposta,sei stato molto chiaro e quasi esaustivo.

    Nell'esempio che hai trovato tu, probabilmente viene usata una GUID, un identificatore ottenuto in modo casuale e incorporato nell'applicazione...difficilmente ci saranno altre applicazioni che, usando una GUID anch'esse, adotteranno una sequenza di caratteri identica.

    Spero di averti chiarito meglio le idee a riguardo...

    Ciao!
    In effetti nei commenti del programma che sto studiando si fa accenno a quasto GUID (tra parentesi l'applicazione realizza una comunicazione tra più istanze di se stessa),il problema è che non ho idea di cosa sia.E' un tool esterno?Una chiamata di sistema?Come lo uso?Nel codice non ho trovato nulla che faccia capire come quella stringa sia stata ottenuta.Insomma se anche io in una mia applicazione voglio usare un GUID per ottenere una stringa con ottime probabilità di univocità cosa devo fare?Illuminami.

    G razie
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Originariamente inviato da unomichisiada
    (tra parentesi l'applicazione realizza una comunicazione tra più istanze di se stessa)
    Come immaginavo. Per spedirsi un messaggio e interpretarlo, siccome tutto ciò avviene tramite una costante numerica, essa deve essere univoca nel sistema e identica per entrambe le applicazioni. La prima che arriva "registra" il messaggio e ottiene il numero identificativo che viene memorizzato dal sistema come risorsa globale; la seconda applicazione riceve questo numero quando usa anch'essa la funzione RegisterWindowMessage.

    Originariamente inviato da unomichisiada
    Nel codice non ho trovato nulla che faccia capire come quella stringa sia stata ottenuta.Insomma se anche io in una mia applicazione voglio usare un GUID per ottenere una stringa con ottime probabilità di univocità cosa devo fare?Illuminami.
    Non so come sia implementato l'algoritmo di generazione delle GUID in Windows, ma si potrebbe riprodurre un simile risultato attraverso una funzione creata ad hoc che generi una stringa sufficientemente lunga di caratteri determinati casualmente.

    Ad ogni modo, per quanto riguarda la GUID, dai un'occhiata al sito MSDN.

    Ciao!

    P.S.: ah, se tu avessi usato un titolo maggiormente significativo per la discussione, avresti ottenuto una risposta in tempi più brevi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    P.S.: ah, se tu avessi usato un titolo maggiormente significativo per la discussione, avresti ottenuto una risposta in tempi più brevi.
    Si credo tu abbia ragione,la prossima volta starò più attento nell'ideare il titolo.

    Grazie delle dritte.Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.