Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    11

    [VB NET] aprire più file da windows

    salve a tutti, mentre aspetto la soluzione ad un problema già posto, ho riscontrato un altro intoppo.
    se apro un file col mio programma, riesco a risalire al percorso del file, però se ne seleziono più di uno mi si aprono più finestre del programma.
    vorrei mantenere le istanze multiple, cioè vorrei che si aprisse una nuova finestra se apro un altro file, ma vorrei che se apro il programma selezionando più file contemporaneamente si apra solo una finestra ed in qualche modo poter ricavare i percorsi di tutti i file
    confido nelle vostre conoscenze

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    11
    intendo dire che da windows, faccio apri file con... e scelgo il mio programma.
    il programma parte e dal parametro command() riesco a ricavare il percorso del file da cui ho lanciato il programma.
    però se seleziono più file e faccio apri, si apre più volte il programma e da ogni finestra ,con command(), ottengo solo il percorso del file associato alla finestra.
    vorrei riuscire ad aprire solo una volta il programma e che carichi tutti i file, però nel caso in cui apro un altro file ad esempio cliccandoci sopra, mi si apra un altra finestra.
    in pratica se apro una selezione di file deve aprirsi una finestra con i percorsi di tutti i file, se invece ne apro uno alla volta devono aprirsi più finestre.
    un po come il visualizzatore di immagini di windows.
    spero di essere stato più chiaro

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    OK, adesso si è capito bene.

    E' così che funziona Windows: non puoi cambiare il comportamento dato che Windows non sa che deve fare cose diverse a seconda di quanti file ha selezionato l'utente.
    Windows semplicemente avvia un'istanza della applicazione per ogni file selezionato.

    Probabilmente la cosa migliore è modificare il comportamento della tua applicazione in modo che immediatamente all'avvio controlli se è già in esecuzione un'altra istanza:
    a) se non c'è allora carichi il file
    b) se c'è già, ricavi il nome del file passato da Windows e lo passi all'istanza precedentemente avviata e chiudi l'istanza corrente.


  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    11
    grazie della risposta.
    supponevo che non ci fosse un comando diretto.
    ma allora il visualizzatore di immagini di windows è una cosa a parte?
    infatti provando con il classico programma di office 2010, mi partono più finestre.
    ma, proverò a fare il codice al caricamento, al massimo magari con un timer per prendere un intervallo di tempo

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    11
    comincio a non avere più idee su come impostare il tutto senza perdere le caratteristiche che voglio.
    su msdn mi stava attirando Enumerazione WatcherChangeTypes, con questo "comando" riuscirei a monitorare se in una cartella viene creat, cancellato, modificato o rinominato un file o una cartella. così mi è venuto il dubbio che non ci fosse un modo per rilevare se al momento ci sono , e quali, file selezionati. se c'è il modo qualcuno può dirmi se c'è anche la possibilità di rilevare l'impostazione di visualizzazione file nella cartella? cioè se nella cartella è impostata la visualizzazione per nome, data, dimensione o altro; in questo modo potrei risolvere in parte un altro problema che avevo già proposto nel forum.
    grazie

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da gberna90
    comincio a non avere più idee su come impostare il tutto senza perdere le caratteristiche che voglio.
    su msdn mi stava attirando Enumerazione WatcherChangeTypes, con questo "comando" riuscirei a monitorare se in una cartella viene creat, cancellato, modificato o rinominato un file o una cartella. così mi è venuto il dubbio che non ci fosse un modo per rilevare se al momento ci sono , e quali, file selezionati.
    E poi?
    Cosa c'entra il watcher?
    Quando anche tu conosca i file selezionati, cosa cambia?

    Niente, perchè tu vuoi aprire i file da Esplora risorse, che non ha niente a che vedere con il tuo programma.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    11
    perchè se ci fosse un comando come watcher che ti sa dire quali file sono selezionati, blocco la partenza delle finestre del programma tranne una, dall'unica finestra che si apre risalgo al file associato a quella finestra, poi ricavo la cartella comune e così controllo quali file sono selezionati e li importo.
    purtroppo non ho trovato nessun comand simile

    per ora sono riuscito a far avviare una sola volta il programma in caso di apertura di più file giocando con l'ora d'avvio dei processi. ho impostato che se tra l'uno e l'altro è sotto 0.1 sec (tanto da simulare la contemporaneità) le finestre si chiudano tranne una. l'effetto per ora è promettente, non so se funzionerà in cui il programma si appesantisca e diventi lento o se seleziono troppi file.

    comunque ora sono bloccato sull'ottenere gli altri percorsi, sto cercando di capire se possano servirmi startup e startupnextistance, ma non li capisco troppo bene.
    c'è un altro modo per inviare la linea di comando da un processo all'altro ?

    spero in qualche svolta

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    11
    ho provato a inserire la condizione del ritardo tra un'istanza e l'altra in startup creando un programma ad istanza singola che può avviare più form uguali. in questo modo sono riuscito ad ottenere i vari percorsi, purtroppo però se seleziono tanti file o a volte anche quando sono pochi non sempre avvia solo un form.
    l'opzione di rilevare il ritardo tra un istanza e l'altra quindi risulta da scartare.

    guardando meglio, ho scoperto che il visualizzatore di immagini di windows, qualsiasi numero di volte aperto, avvia solo il processo dllhost.exe con descrizione COM surrogate.
    dovrebbe far parte di windows quindi non so se si possa emulare con un codice. non c'è magari un modo per interagire con dllhost.exe?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.