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