Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [VB2008 Express] Avaa-ikkuna DLL-tiedostoon

Juhko [12.08.2009 21:02:21]

#

Elikkä pitäisi tehdä semmoinen yksinkertainen DLL-tiedosto, jossa on funktio, jossa on Windowsin Avaa-ikkuna (pitäisi tehdä myös toinen DLL, jossa on Tallenna-ikkuna) ja valittu tiedosto tulisi palautusarvona. Funktiota kutsuttaisiin sitten CoolBASIC:ista.

Minulla ei ole aavistustakaan, miten tämä tehdään, joten heittäkää linkki ohjeeseen tai jotain.

t: Tyhmä

EDIT: Jos tuo on kauhean monimutkaista, niin voin tehdä sen myös C++:lla (kääntäjänä mingw), mutta siihenkin tarvitsen ohjeita. -.-

Grez [12.08.2009 23:26:38]

#

Hmm, avaatko hieman mitä tarkoittaa "funktio, jossa on ikkuna."

-tossu- [12.08.2009 23:41:45]

#

Juhko tarkoittaa varmaan Windowssin "avaa tiedosto" dialogia.
CoolBasicille on cbSDK kirjasto http://jouluserver.com/~aave/cbsdk/, jossa on noi valmiina.

neau33 [13.08.2009 02:13:25]

#

Morjen Juhko!

here's the whole shit VB.NET-versiona...
elikäs luo VB:llä uusi ClasLibrary-Projekti nimellä OpenFile...uudelleen nimeä Project Explorerissa NewClass.vb nimellä Dialog.vb tuplaklikkaa samaista kuvaketta & copy/pasteta alla oleva koodi kaiken sen päälle mitä on näkyvissä Dialog.vb'n koodi-ikkunassa...

Imports System.Windows.Forms
Imports System.Runtime.InteropServices
<ClassInterface(ClassInterfaceType.AutoDual)> _
<ComVisible(True)> _
<ProgId("OpenFile.Dialog")> _
Public Class Dialog

   <ComVisible(True)> _
   Dim ofd As New OpenFileDialog

   <ComVisible(True)> _
   Public Function fullPath() As String

      ofd.Multiselect = False
      ofd.InitialDirectory = _
      Environment.GetFolderPath( _
      Environment.SpecialFolder.Desktop)
      ofd.Filter = _
      "Kaikki tiedostot (*.*)|*.*"
      ofd.DefaultExt = ".*"
      ofd.FilterIndex = 0
      ofd.FileName = ""

      ofd.DereferenceLinks = False
      ofd.RestoreDirectory = True

      If ofd.ShowDialog() = _
      System.Windows.Forms.DialogResult.OK Then
         fullPath = ofd.FileName
         Exit Function
      Else
         fullPath = ""
      End If

   End Function

End Class

klikkaa Project Explorerissa References-kuvaketta hiiren oikealla, valitse Add Reference, valitse GAC-välilehti, etsi listalta System.Windows.Forms, tuplaklikka nimeä ja painele OK:ta...valitse valikkoriviltä Project/Project Options...ruksaa valinta: Register for COM Interop...ruksaa Signing-välilehdeltä valinta: Sign the assembly, valitse laatikosta valinta: Create
ja klikkaa OK:ta...tarkista vielä Application-välilehdeltä, että Output type on ClassLibrary...tallenna koko projekti...Tuplaklikkaa Projekt Explorerissa AssemblyInfo.vb kuvaketta ja copy/pasteta alla oleva koodi kaiken AssemblyInfo.vb koodi-ikkunassa näkyvän päälle...

Imports System.Reflection
Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices
<assembly: AssemblyTitle("OpenFile")>
<assembly: AssemblyDescription("")>
<assembly: AssemblyConfiguration("")>
<assembly: AssemblyCompany("")>
<assembly: AssemblyProduct("OpenFile")>
<assembly: AssemblyCopyright("Copyright 2009")>
<assembly: AssemblyTrademark("")>
<assembly: AssemblyCulture("")>
<assembly: ComVisible(True)>
'vaihda GUID luomalla oma GUID GuidGen apu-ohjelmalla (Registry Format)
'kopioi leikepöydälle, leikepöydältä hipsujen väliin & poista aaltosulkeet
<assembly: Guid("0EEA3005-2EE1-4ce0-AA8B-D16665034715")>
<assembly: AssemblyVersion("1.0.0.0")>

Tallenna ja käännä projekti...avaa Resurssienhallinta, siirry projektisi ...\Bin\Debug hakemistoon & kopioi OpenFile.dll Windows\System32 -hakemistoon...avaa komentokehote-ikkuna
kirjoita: CD \Windows\System32 & painele Enter-nappia...
kirjoita: TlbExp OpenFile.dll /out: OpenFile.Tlb & painele...
kirjoita: gacgutil /i OpenFile.dll &...
kirjoita: ngen install OpenFile.dll &...
kirjoita: regasm OpenFile.dll &...
...and that's it
voit testata jutskan toimivuutta esim. Excelissä...
avaa Excel, valitse Työkalut/Makro/VisualBasic Editor...valitse Tools/References, ruksaa listalta OpenFile (jos ei löydy, klikkaa Browse-nappia ja valitse Windows\System32 hakemistosta OpenFile.Tlb, klikkaa Avaa-nappia & ruksaa listalta) & painele OK:ta
Lisä VBA-Projektiin UserFormi, formille nappi, tuplaklikkaa nappia ja copy/pasteta alla oleva koodi napin klick_tapahtuman koodiksi

Private Sub CommandButton1_Click()

   Dim OFD As New OpenFile.Dialog
   Dim filename As String

   On Error Resume Next
   filename = OFD.fullPath

   If Err <> 0 Then
      MsgBox Error$
      Err.Clear
      On Error Goto 0
   End If

   If filename <> "" Then
      MsgBox filename
   End If

End Sub

Juhko [14.08.2009 18:08:44]

#

Kiitos Nea ja -tossu-. Kokeilen varmaan kumpaakin.

Edit: -tossu-:n antama linkki ei toimi. Onko se myös jossakin muualla?

neau33 [14.08.2009 22:29:46]

#

Morjens taas Juhko!

CBSDK-kirjasto

Juhko [15.08.2009 12:06:18]

#

Ai, kiitos. En huomannut ensimmäisen viestin otsikossa ollutta typoa. -.-

Vastaus

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

Tietoa sivustosta