Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Programma predefinito
Forum - C# / VB.NET - Programma predefinito

Avatar
Piso94 (Normal User)
Rookie


Messaggi: 53
Iscritto: 08/07/2008

Segnala al moderatore
Postato alle 18:34
Martedì, 09/12/2008
Salve a tutti vi vorrei chiedere:

Io ho creato un programma e vorrei che quando l'utente clicca sopra un file creato con quell programma lo apra con quel programma e non con altri ad esempio il file txt lo apre con il Blocco Note come predefinito e non con internet explorer capito?

Grazie 1000:k::k::k::k:

PM Quote
Avatar
Tonino70 (Normal User)
Rookie


Messaggi: 21
Iscritto: 29/08/2008

Segnala al moderatore
Postato alle 18:42
Martedì, 09/12/2008
se non mi sbaglio,

sul file in questione e relativa estensione, clicca col mouse tasto dx e fai apri con,
scegli programma predefinito, seleziona il tuo prg e metti la spunta su usa sempre il prg...

e dovresti aver fatto.

ciao

PM Quote
Avatar
I)eathBringer (Normal User)
Pro


Messaggi: 127
Iscritto: 11/08/2008

Segnala al moderatore
Postato alle 19:06
Martedì, 09/12/2008
Credo che il suo problema sia quella di visualizzare il file aperto all'interno del programma, infatti anch'io ho lo stesso problema con un programma di modifica delle immagini e, anche se lo imposto come predefinito, quando clicko sull'immagine da aprire mi apre il programma ma non mi carica nessuna immagine nella picturebox perchè, giustamente, non sa cosa ci deve fare con quell'immagine.
Quindi se qualcuno sa risolvere il problema gliene sarei grato anch'io:D

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:02
Mercoledì, 10/12/2008
Sarà la centesima volta che lo chiedono, e l'ennesima volta che rispondo. Il bello è che ogni volta la discussione ha un titolo diverso e la funzione "Cerca" non dà nessun risultato soddisfacente. Per questo motivo, a partire da oggi, allestirò un topic in testa a questa sezione con le domande più frequenti e relative risposte, per non continuare a risposndere alle stesse.

Per associare un programma predefinito a un'estensione particolae di file bisogna modificare il registro di sistema. Il luogo dove vengono depositate tutte le informazioni sulle estensioni è la chiave globale HKEY_CLASSES_ROOT. In essa sono presenti moltissime sottochiavi con il nome dell'estensione.
Quindi, per prima cosa si deve creare in questa chiave globale una sottochiave col nome dell'estensione (es.: ".new"). All'intero di quest'ultima, si deve modificare il valore (Predefinito) con un nome sintetico che descriva l'applicazione usata e il tipo di file (es.: "MyProgramNew").
Dopodiché, sempre all'interno di HKEY_CLASSES_ROOT, si crea un'altra sottochiave di primo livello, usando lo stesso nome inserito come valore predefinito in precedenza (es.: "MyProgramNew"). All'interno di questa chiave, il valore (Predefinito) può essere modificato a piacere a indica la descrizione che apparirà nell'explorer (es.: "File NEW"). Per creare un collegamento con l'applicazione predefinita, si devono creare le sottochiavi shell\open\command: all'interno dell'ultima (command), il valore (Predefinito) deve essere il percorso dell'applicazione predefinita per l'apertura, seguita da "%1" o "%l" (es.: "C:\Programmi\MyProgram\MyProgram.exe" "%1").
Per quanto riguarda il codice:
Codice sorgente - presumibilmente VB.NET

  1. Imports Microsoft.Win32
  2.  
  3. '...
  4.  
  5. Private Sub RegisterProgram()
  6.     Dim RegKey As RegistryKey = Registry.ClassesRoot.OpenSubKey(".new")
  7.     Dim WParam As RegistryKeyPermissionCheck = RegistryKeyPermissionCheck.ReadWriteSubTree
  8.  
  9.     If RegKey IsNot Nothing Then
  10.         Exit Sub
  11.     End If
  12.  
  13.     RegKey = Registry.ClassesRoot.CreateSubKey(".new", WParam)
  14.     RegKey.SetValue("", "MyProgramNew")
  15.     RegKey = Registry.ClassesRoot.CreateSubKey("MyProgramNew", WParam)
  16.     RegKey.SetValue("", "File NEW")
  17.     RegKey = Registry.ClassesRoot.OpenSubKey("MyProgramNew", True)
  18.     RegKey = RegKey.CreateSubKey("shell\open\command", WParam)
  19.     RegKey.SetValue("", String.Format("""{0}"" ""%1""", Application.ExecutablePath))
  20. End Sub



Il Totem ha allegato un file: pred.JPG (43017 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
Piso94 (Normal User)
Rookie


Messaggi: 53
Iscritto: 08/07/2008

Segnala al moderatore
Postato alle 17:14
Mercoledì, 10/12/2008
Ok grazie mille :k::k:

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:55
Mercoledì, 10/12/2008
Ah, nella foga mi sono dimenticato la parte più importante. Ovviamente se non dite al programma cosa fare, lui se ne fa un baffo del percorso che riceve in input. Bisogna controllare i parametri da line di comando:
Codice sorgente - presumibilmente Delphi

  1. If My.Application.CommandLineArgs.Count > 0 Then
  2.   'Ci sono parametri: il primo è il percorso del file da aprire
  3.  Dim Path As String = My.Application.CommandLineArgs(0)
  4. End If


PM Quote