Nascondere MSGBOX aperti da una COM

mercoledì 27 settembre 2006 - 10.24

Keyser Profilo | Newbie

Salve,
in un mio programma uso una libreria COM
che in un caso manda un msgbox completamente inutile
che io dovrei eliminare, xkè mi blocca l'applicazione finchè l'utente non preme invio
e visto che l'applicazione lavora anche in background non sempre l'utente è vicino al pc.

Il msgbox è sincrono quindi non posso mandare l'invio, non posso fare niente.
Avevo pensato di creare un thread che controlla di continuo se esiste una finestra
con quel titolo (è sempre lo stesso), ma mi sembra una soluzione pesante.

Si può fare qualcosa di più "leggero" ?
Grazie

Brainkiller Profilo | Guru

>in un mio programma uso una libreria COM
>che in un caso manda un msgbox completamente inutile
>che io dovrei eliminare, xkè mi blocca l'applicazione finchè
>l'utente non preme invio

Se esce forse non sarà inutile no ?

>Avevo pensato di creare un thread che controlla di continuo se
>esiste una finestra
>con quel titolo (è sempre lo stesso), ma mi sembra una soluzione
>pesante.

Potrebbe essere ma poi devi cercare di chiuderlo questo "popup".

>Si può fare qualcosa di più "leggero" ?

Modificare la libreria COM.
Che cosa fa scusa questo componente e cosa viene segnalato nel messagebox ?

Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Keyser Profilo | Newbie

1) la libreria Com non la posso modificare, non ho il sorgente, è un motore di riconoscimento ottico
2) è inutile xkè esce quando riapro una sessione di riconoscimento salvata, e mi dice che non è stato trovato un componente (una dll), ma dopo aver chiuso il msgbox il tutto funziona alla perfezione xkè la libreria c'è e viene pure usata (sarà un baco della libreria).

3) ho creato un thread che cerca la finestra con l'api findwindow, e se la trova la chiude con un sendmessage, ma il problema è che non so perchè ma finchè non chiudo il msgbox il thread si ferma e aspetta come se fosse bloccato anche esso.

Brainkiller Profilo | Guru

>2) è inutile xkè esce quando riapro una sessione di riconoscimento
>salvata, e mi dice che non è stato trovato un componente (una
>dll), ma dopo aver chiuso il msgbox il tutto funziona alla perfezione
>xkè la libreria c'è e viene pure usata (sarà un baco della libreria).

Non è che magari stai usando un componente non licenziato correttamente ?
Mi sembra abbastanza strano che sia un bug così clamoroso.
Contatta la casa che lo produce e segnala la cosa.
E' abbastanza improbabile che venga rilasciato un componente che funziona così.
Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Dokkis Profilo | Newbie

sarà di sicuro un componente trial... tempo fa anche io ne avevo trovato uno cosi.. quindi immagino che se tu voglia usare quel componente lo debba comprare ^^

Keyser Profilo | Newbie

Vi siete fissati con sto fatto del componente non comprato.
E' licenziato, chi se ne frega, mica pago io, la società per cui lavoro l'ha comprato.
Senza licenza il motore da errore addirittura quando fai New....
si attiva tramite internet e la licenza è addirittura bloccata all'hardware dove è installato,
quindi è impossibile usarlo non licenziato.

Cmq ho risolto,quando devo aprire la sessione salvata, faccio partire un processo che non fa altro che controllare con findwindow quando viene creato il msgbox , appena lo trova, lo chiude ed esce.
In un thread dello stesso processo non funziona perchè il msgbox è sincrono per tutto il processo e il thread si fermava.

Keyser Profilo | Newbie

Vi siete fissati con sto fatto del componente non comprato.
E' licenziato, chi se ne frega, mica pago io, la società per cui lavoro l'ha comprato.
Senza licenza il motore da errore addirittura quando fai New....
si attiva tramite internet e la licenza è addirittura bloccata all'hardware dove è installato,
quindi è impossibile usarlo non licenziato.

Cmq ho risolto,quando devo aprire la sessione salvata, faccio partire un processo che non fa altro che controllare con findwindow quando viene creato il msgbox , appena lo trova, lo chiude ed esce.
In un thread dello stesso processo non funziona perchè il msgbox è sincrono per tutto il processo e il thread si fermava.

Brainkiller Profilo | Guru

>Vi siete fissati con sto fatto del componente non comprato.
>E' licenziato, chi se ne frega, mica pago io, la società per
>cui lavoro l'ha comprato.

No non è che ci siamo fissati, se ti sei offeso, scusami, non era mio e penso nostra intenzione farlo. Solo che sai, di furbi ce n'è piena l'aria, e dove risolvere un problema a un furbo, non mi va molto, non so se sei d'accordo. Mi sembrava solo strano che avessero creato questa sorta d'impiccio appunto a chi avesse acquistato con regolare licenza il componente.

>In un thread dello stesso processo non funziona perchè il msgbox
>è sincrono per tutto il processo e il thread si fermava.

Soluzione ineccepibile.

Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Keyser Profilo | Newbie

No ma quale offeso

Cmq è un problema stranissimo, su alcuni pc lo fa, su altri no,
il msgbox consiglia anche di reinstallare la libreria ma alcune volte risolve altre no.
Si potrebbe anche non usare la funzionalità salva e riprendi sessione
se si lavora su multitif piccoli, ma quando sono enormi ti fa risparmiare tempo.

Penso che con la nuova versione abbiano risolto, ma comprare una nuova licenza
solo per questo problemino è inutile.

Bye

Brainkiller Profilo | Guru

>Penso che con la nuova versione abbiano risolto, ma comprare
>una nuova licenza
>solo per questo problemino è inutile.

Concordo con te meglio uno stratagemma che una nuova licenza costosa

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5