Newsgroup: it.comp.lang.delphi
Titolo: Stampante .... ancora lei .....

Ciao a tutti,
      ho l'ennesimo problema con la stmapante ... (speriamo di risolvere 
anche questo ...)
Prima della procedura di stampa verifico che esista almeno una stampante 
installata (puo' sembrare strano, ma c'e' chi non usa stampanti !!) e se 
c'e' allora procedo con la stampa.
La procedura che uso e' la seguente (lo so puo' essere benissimo anche una 
funzione ...)
Procedure TFP.CheckPrinter;
Begin
  Try
   PRTOK:=(Printer.Handle<>0) And (Printer.Printers.Count>0) // si presume 
la stampante installata ...
  Except
   PRTOK:=False;
  End;
End;
Il problema e' che, casualmente e (sembra) senza alcun motivo, una volta 
entrato in questa procedura non si esce piu'.
Il problema e' qui perche' commentando la riga nella procedura che richiama 
il codice di controllo il problema non si presenta.
Il problema NON si verifica in debug, ma solo eseguendo il programma e si 
presenta sia con stampanti condivise sia con stampanti locali.
Qualche suggerimento su come risolvere il problema con delphi 6.0 ???
Infine, esistono delle unit (free, share, comm) che restituiscano le 
informazioni generali dello stato della stampnte selezionata ?? (in linea, 
portello aperto, inchiostro finito ecc.....).
Ho provato ad utilizzare le api di windows xp ma senza risultati 
apprezzabili.
Grazie a tutti
Ciao
Daniele

 Qualche suggerimento su come risolvere il problema con delphi 6.0 ???
Printer.printers è la chiave di tutto, se hai problemi accedendo a 
questo elenco verifica se l'applicazione viene eseguita con privilegi 
necessari ad interrogare le stampanti.
Delphi viene eseguito con privilegi di debug quindi ha piu' permessi di 
un normal user che invoca un programma.
Verifica inoltre commentanto il test "Printer.Handle<>0", perchè così 
facendo vai direttamente sulla stampante di default e se per qualche 
motivo non esiste o non hai i privilegi per leggerla resti bloccato.
Dacci maggiori info riguardo l'OS: vista? xp ?
Ciao
-- 
Morde

 Dacci maggiori info riguardo l'OS: vista? xp ?
Tutto gira su XP, sia a casa che in ufficio, solo che a me funziona tutto 
....... in ufficio no !!
Grazie ancora, adesso cerco qualche dritta per sapere quali sono privilegi 
per poter stampare e quelli dell'utente.
Ciao, Daniele 

 per poter stampare e quelli dell'utente.
E' un'argomento sistemistico. Probabilmente il programma viene lanciato 
da un'utenza che non ha accesso a quelle stampanti.
Per verificare quanto detto, basta uscire dall'utenza normale di 
utilizzo ed entrare con uno user diverso, sia esso admin o altro user: 
lanciare poi il programma e verificare le stampanti disponibili.
Metti una listbox sul form, associagli printer.printers alla proprietà 
items e vedi quali stampanti accede l'utente che ha lanciato il 
programma.
-- 
Morde

 ha scritto nel messaggio 
news:4926...@newsgate.x-privat.org...

Se cosi' le cose vanno bene puoi sempre connetterti senza essere 
amministratore ma usare uno di quei programmini che avviano
la tua applicazione con i privilegi di amministratore. Naturalmente in 
questi devi inserire un account di amministratore.
Prova a cercare questi:  RUNASSPC.EXE;   runasspcadmin.exe
Ciao giorgio 

Ciao,
   due notizie..... una buona e una meno buona !!!!
La prima, quella buona, il problema e' stato risolto .... non era un 
problema di stampnti. C'era un ciclo tipo
Repeat
   CheckDate
Until DateOk
Nella procedura CheckDate DateOK non veniva mai settata a True, quindi ciclo 
infinito.
La seconda, quella meno buona, su due pc in rete (sempre XP ma fino a 
qualche giorno fa senza utenti particolari, ovvero xp si caricava con 
l'utente admin e pwd admin, quale fantasia ...) sono stati creati alcuni 
profili (in pratica quelli dei colleghi che possono spostarsi di postazione 
e quindi usare i pc in rete con il loro login) di cui solo 2 con i privilegi 
di amministratore. Con il loro log tutto ok, con gli altri c'e' qualche 
problema.
Quello che mi viene in mente e' cercare di alzare i privilegi del programma 
(non so come), oppure se possibile bypassare il printers.
Cerchero' di alzare i privilegi .... se riesco (non sono un mosro di 
programmazione .....)
Grazie a tutti per l'aiuto ...
Ciao
Daniele 

 programmazione .....)
Risolvi le cose facendo così: loggati sugli xp con le utenze di quelli 
con meno privilegi, e INSTALLA LE STAMPANTI che il tuo programma deve 
usare.
Da quel momento in avanti, un programma lanciato con quelle utenze 
vedrà anche le stampanti che mancavano.
Spero che questa volta mi sono spiegato meglio delle precedenti.
ciao
-- 
Morde