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. -.-
Hmm, avaatko hieman mitä tarkoittaa "funktio, jossa on ikkuna."
Juhko tarkoittaa varmaan Windowssin "avaa tiedosto" dialogia.
CoolBasicille on cbSDK kirjasto http://jouluserver.com/~aave/cbsdk/, jossa on noi valmiina.
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
Kiitos Nea ja -tossu-. Kokeilen varmaan kumpaakin.
Edit: -tossu-:n antama linkki ei toimi. Onko se myös jossakin muualla?
Morjens taas Juhko!
Ai, kiitos. En huomannut ensimmäisen viestin otsikossa ollutta typoa. -.-
Aihe on jo aika vanha, joten et voi enää vastata siihen.