Oppure

Loading
26/03/10 14:09
Piowere
Salve, sto lavorando a un browser per internet, e vorrei inserire la funzione "browser predefinito". come faccio:-?
aaa
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:-?


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/…

:k:
aaa
27/03/10 9:05
Piowere
Grazie, ma dimmi come farlo per .htm8-|
cmq, mi serviva anche la mascherina che dice: "questo non e' il tuo browser predefinito"
Grazie:pat:
aaa