Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB.NET] Tiedostosidos

Petja [08.03.2011 19:16:51]

#

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.

Hennkka [08.03.2011 20:39:57]

#

http://www.codeproject.com/KB/vb/VBFileAssociation.aspx löytyi ainakin heti googlaamalla.

Petja [10.03.2011 16:14:41]

#

Ei edes tuossa mukana tullut esimerkki toiminut.

neau33 [13.03.2011 15:22:45]

#

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...

neau33 [15.03.2011 18:18:35]

#

Heippa taas!

halutessaan täältä voi impata ehkä paremmin demoavan esimerkkiohjelman...

neau33 [18.03.2011 12:58:36]

#

Heippa taas!

halutessaan täältä voi impata lähes vastaavan esimerkin VB6:lle (ei kommentoitu)...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta