26/03/10 15:41
LittleHacker
Postato originariamente da Piowere:
Salve, sto lavorando a un browser per internet, e vorrei inserire la funzione "browser predefinito". come faccio
Salve, sto lavorando a un browser per internet, e vorrei inserire la funzione "browser predefinito". come faccio
Ecco come:
Come si fa ad impostare un programma predefinito per una certa estensione?
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 Visual Basic
Imports Microsoft.Win32
'...
Private Sub RegisterProgram()
Dim RegKey As RegistryKey = Registry.ClassesRoot.OpenSubKey(".New"
Dim WParam As RegistryKeyPermissionCheck = RegistryKeyPermissionCheck.ReadWriteSubTree
If RegKey IsNot Nothing Then
Exit Sub
End If
RegKey = Registry.ClassesRoot.CreateSubKey(".New", WParam)
RegKey.SetValue("", "MyProgramNew"
RegKey = Registry.ClassesRoot.CreateSubKey("MyProgramNew", WParam)
RegKey.SetValue("", "File New"
RegKey = Registry.ClassesRoot.OpenSubKey("MyProgramNew", True)
RegKey = RegKey.CreateSubKey("shell\open\command", WParam)
RegKey.SetValue("", String.Format("""{0}"" ""%1""", Application.ExecutablePath))
End Sub
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 linea di comando:
Codice sorgente - presumibilmente Delphi
if My.Application.CommandLineArgs.Count > 0 then
'Ci sono parametri: il primo è il percorso del file da aprire
Dim Path as string = My.Application.CommandLineArgs(0)
end if
Riferimenti:
- Parametri da riga di comando
totem.altervista.org/appunti/…
- Modifica del registro di sistema
totem.altervista.org/guida/versione2/…
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 Visual Basic
Imports Microsoft.Win32
'...
Private Sub RegisterProgram()
Dim RegKey As RegistryKey = Registry.ClassesRoot.OpenSubKey(".New"
Dim WParam As RegistryKeyPermissionCheck = RegistryKeyPermissionCheck.ReadWriteSubTree
If RegKey IsNot Nothing Then
Exit Sub
End If
RegKey = Registry.ClassesRoot.CreateSubKey(".New", WParam)
RegKey.SetValue("", "MyProgramNew"
RegKey = Registry.ClassesRoot.CreateSubKey("MyProgramNew", WParam)
RegKey.SetValue("", "File New"
RegKey = Registry.ClassesRoot.OpenSubKey("MyProgramNew", True)
RegKey = RegKey.CreateSubKey("shell\open\command", WParam)
RegKey.SetValue("", String.Format("""{0}"" ""%1""", Application.ExecutablePath))
End Sub
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 linea di comando:
Codice sorgente - presumibilmente Delphi
if My.Application.CommandLineArgs.Count > 0 then
'Ci sono parametri: il primo è il percorso del file da aprire
Dim Path as string = My.Application.CommandLineArgs(0)
end if
Riferimenti:
- Parametri da riga di comando
totem.altervista.org/appunti/…
- Modifica del registro di sistema
totem.altervista.org/guida/versione2/…
aaa
27/03/10 9:05
Piowere
Grazie, ma dimmi come farlo per .htm
cmq, mi serviva anche la mascherina che dice: "questo non e' il tuo browser predefinito"
Grazie
cmq, mi serviva anche la mascherina che dice: "questo non e' il tuo browser predefinito"
Grazie
aaa