Miten saan tehtyä tiedostosidoksen mahdollisimman helposti?
Käyttäjän napsauttaessa resurssienhallinnassa tiedostoa, avautuisi se ohjelmaani.
Toki käyttäjä voi tehdä tämän manuaalisestikin, mutta haluaisin kuitenkin toteuttaa koodilla.
http://www.codeproject.com/KB/vb/
Ei edes tuossa mukana tullut esimerkki toiminut.
Moikka Petja!
tässä hieman enemmän kuin ehkä osasit toivoakaan...
Imppaa täältä NetFileAssociation.zip, pura sisältö johonkin kansioon, avaa komentokehote, siirry samaiseen kansioon, kirjoita: gacutil /i NetFileAssociation.dll, painele enter-näpykkää ja lisää referenssi projektiin...
'esimerkki (väännetty SharpDevelop 4.0:lla) Imports System Imports NetFileAssociation 'COM-Referenssi (pikakuvake): 'Windows Script Host Object Model (wshom.ocx) Imports IWshRuntimeLibrary Public Partial Class MainForm Public Sub New() Me.InitializeComponent() End Sub Sub MainForm_Load(sender As Object, e As EventArgs) Dim extension As String = ".oma" 'esim Dim fainfo As FileAssociationInfo = _ New FileAssociationInfo(extension) Dim fullPath As String = _ Process.GetCurrentProcess.MainModule.FileName Dim progName As String = _ Process.GetCurrentProcess.ProcessName If Not fainfo.Exists Then fainfo.Create(progName & ".exe") fainfo.ContentType = "application/omatiedosto" fainfo.OpenWithList = new string() _ {"notepad.exe", "wordpad.exe"} 'esim. End If Dim painfo As ProgramAssociationInfo = _ New ProgramAssociationInfo(fainfo.ProgID) If Not painfo.Exists Then painfo.Create(progName & " - tiedosto", _ New ProgramVerb("Open",fullPath & " %1")) painfo.DefaultIcon = new ProgramIcon( _ System.Reflection.Assembly. _ GetExecutingAssembly.Location() & ", 0") End If '* Luo pikakuvakkeen työpöydälle... Dim lnkTargetPath As String = _ Environment.GetFolderPath( _ Environment.SpecialFolder.Desktop) Dim appName As String = _ System.Reflection.Assembly. _ GetExecutingAssembly.GetName().Name Dim lnkPath As String = lnkTargetPath + "\" + _ appName + ".lnk" If Dir(lnkPath) = "" Then Dim MyWsh As New WshShell Dim shortCut As IWshRuntimeLibrary.IWshShortcut shortCut = CType(MyWsh.CreateShortcut( _ lnkPath), IWshRuntimeLibrary.IWshShortcut) With shortCut .TargetPath = _ System.Reflection.Assembly.GetExecutingAssembly.Location() .WindowStyle = 1 .Description = "Käynnistä " + appName .WorkingDirectory = lnkTargetPath .IconLocation = System.Reflection.Assembly. _ GetExecutingAssembly.Location() & ", 0" .Arguments = userID & ", " & passWord .Save() End With shortCut = Nothing: MyWsh = Nothing End If End Sub End Class
PS. tutki NetFileAssociation.dll'n luokkia ClassBrowserilla...
Heippa taas!
halutessaan täältä voi impata ehkä paremmin demoavan esimerkkiohjelman...
Heippa taas!
halutessaan täältä voi impata lähes vastaavan esimerkin VB6:lle (ei kommentoitu)...
Aihe on jo aika vanha, joten et voi enää vastata siihen.