Eli olen aloittelija Visual Basic koodauksessa. Kysynpä seuraavia:
1) Miten saan luettua esim Enterin näpäytyksen yms. muun napin painalluksen? Ja lisäävän 1 den esim johonkin Label:iin. Tarkoituksena olisi tehdä Enterin näpytyspeli
2) Miten voin soittaa musiikkia jostakin .mp3, .vmw stä?
3) Miten voin tehdä KeyGeneraattorin esim: Nimi Snow Serial: 167. Tarkoitus olisi tulla omaan ohjelmaan.
4) Miten voin Logata käyttäjän ulos? Kyseessä olisi tehdä pilailuohjelma.
5) Miten voin esim. kun nappia on painettu, ohjelma lähettää esim. Enter näppäimen painalluksen
6) Miten voin tehdä oman kysymysboxin jossa ovat vaihtoehdot Yes,No ja Oma teksti ja jos mahdollista, niin joku 3sta Windowsin kuvakkeesta.
7) Miten määrittelen tiedoston, joka on samassa kansiossa kuin ohjelmani, muttei esim C:\Program files\jne, ettei tulisi virheitä. Esim omalla koneellani ne olisivat C:\peli\image.bmp ja kaverilla joka on juuri purkanut Rarin jossa on ohjelma ja kuva (C:\ladattupeli\image.bmp), ja ohjelma osaa ladata sen samasta kansiosta kuin itse on.
Minulla on Microsoftin Visual Studio 6
Anteeksi sekavuuteni :)
Kannattaisi aloittaa varmaan ohjelmointiputkan visualbasic oppaalla:
https://www.ohjelmointiputka.net/oppaat/opas.
Tässä vastauksia joihinkin kysymyksiin...
1) Käyttäjän näppäilyjä voi käsitellä KeyDown-aliohjelmassa, jossa KeyCode ilmoittaa, mitä näppäintä on painettu. Paitsi formilla myös useimmilla kontrolleilla on oma KeyDown-aliohjelmansa, esim. jos painetaan näppäintä tekstikentässä, painallus käynnistää tekstikentän KeyDown-aliohjelman. Mutta asettamalla formin KeyPreview-ominaisuuden arvoksi True kaikki näppäilyt ohjautuvat kätevästi formin KeyDown-aliohjelmalle, jossa niitä voi käsitellä keskitetysti.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
Label1 = Label1 + 1
End If
End Sub
Private Sub Form_Load()
KeyPreview = True
Label1 = 0
End Sub2) Yksi ratkaisu on WinAPIn funktio mciSendString, jonka käytöstä on koodivinkki.
3) Keksi jokin matemaattinen kaava, jolla numerosarja saadaan merkkijonosta. Seuraava ohjelma muodostaa koodin laskemalla yhteen kirjainten ASCII-koodit neljänteen potenssiin korotettuina ja ottamalla jakojäännöksen 10000:lla. Tuloksena on merkkijonosta riippuva koodi väliltä 0 - 9999.
Private Sub Form_Load()
Dim nimi As String
Dim koodi As Long
Dim i As Integer
nimi = InputBox("Kirjoita nimesi:")
For i = 1 To Len(nimi)
koodi = koodi + Asc(Mid(nimi, i, 1)) ^ 4
koodi = koodi Mod 10000
Next
MsgBox "Koodi: " & koodi
End Sub5) Tarkoitatko, että ohjelman pitäisi antaa sellainen vaikutelma, että käyttäjä painaa jotain näppäintä? Tähän tarkoitukseen on olemassa komento SendKeys, jonka käytöstä on koodivinkki.
6) Kuvakkeita on itse asiassa neljä erilaista:
Private Sub Form_Load()
Dim tulos As Integer
tulos = MsgBox("Pidätkö kuvakkeesta?", vbYesNo + vbCritical)
tulos = MsgBox("Pidätkö kuvakkeesta?", vbYesNo + vbQuestion)
tulos = MsgBox("Pidätkö kuvakkeesta?", vbYesNo + vbExclamation)
tulos = MsgBox("Pidätkö kuvakkeesta?", vbYesNo + vbInformation)
End SubOhjelman toiminta voi myös vaihtua käyttäjän vastauksen mukaan:
Private Sub Form_Load()
Dim tulos As Integer
tulos = MsgBox("Pidätkö kuvakkeesta?", vbYesNo + vbCritical)
If tulos = vbYes Then
MsgBox "Sepä hyvä!"
ElseIf tulos = vbNo Then
MsgBox "Ikävä juttu!"
End If
End Sub7) Saat selville ohjelman oman hakemiston muuttujan App.Path kautta:
Private Sub Form_Load()
MsgBox "Ohjelma on hakemistossa " + App.Path
End SubKiitoksia :) Mutta tuossa 1) kohdassa, jos pidän Enteriä pohjassa, niin se lisää automaattisesti. Pitäisi olla, että 1 lisäys per painallus.:)
Snowblind kirjoitti:
Mutta tuossa 1) kohdassa, jos pidän Enteriä pohjassa, niin se lisää automaattisesti. Pitäisi olla, että 1 lisäys per painallus.:)
Laita se laskenta KeyDownin sijasta KeyUpiin.
KeyDown-aliohjelman kaveri on KeyUp-aliohjelma, johon tullaan silloin, kun käyttäjä lopettaa näppäimen painamisen. Yksinkertaisin muutos on siirtää laskurin lisäys tähän aliohjelmaan, jolloin luku suurentuu aina, kun käyttäjä päästää irti Enter-napista. Mutta tässä voi olla ongelmana, että laskuri päivittyy väärässä kohdassa, nimittäin vasta kun näppäily on jo ohi. Siksi tässä on vähän monimutkaisempi apumuuttujaa käyttävä ohjelma, jossa Enterin pitäminen pohjassa kasvattaa laskuria vain yhdellä, mutta muutos tulee kuitenkin näkyviin saman tien. Jujuna on säilyttää muuttujassa SaaPainaa tietoa, onko Enter nostettu välillä ylös, ja jos ei ole, uutta "painallusta" ei hyväksytä.
Dim SaaPainaa As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If SaaPainaa And KeyCode = vbKeyReturn Then
Label1 = Label1 + 1
SaaPainaa = False
End If
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
SaaPainaa = True
End If
End Sub
Private Sub Form_Load()
KeyPreview = True
SaaPainaa = True
Label1 = 0
End SubMoikka Snowblind!
tässä on vastaus, pienessä paketissa, aika moneen kysymykisistäsi...
pienenä vinkkinä: kun testaat & tutkit, käytä mahdollisimman paljon hyödyksesi copy/pastea + putkan Hakua - Google'a jne. (eli siis luet) niin asiat alkavat avautua...
'paina jotain näppäintä
Private Sub Form_Paint()
Dim str1 As String, str2 As String
Dim i As Integer, j As Integer
str1 = "536E6F772053657269616C3A20313637"
ReDim taulu(1 To Len(str1))
Me.BorderStyle = 1
Me.Width = 2000
Me.Height = 1000
Me.AutoRedraw = True
Me.FontSize = 20
Me.FontBold = True
Me.BackColor = &H80000007
Me.ForeColor = &H8000000E
xmsg& = MsgBox("Tahdotko varmasti suorittaa tämän ohjelman?", _
vbYesNo, "Kyselyloota")
If xmsg& = 7 Then End
tiedosto = "C:\Documents and Settings\All Users\Tiedostot\Omat musiikkitiedostot\Musiikkinäytteet\Beethovenin yhdeksäs (Scherzo).wma"
tiedosto = Chr(34) & tiedosto & Chr(34)
Shell "C:\Program Files\Windows Media Player\wmplayer.exe" & " " & tiedosto, vbHide
For i = 0 To 255
For j = 1 To Len(str1) Step 2
If Asc(Chr(CLng("&H" & Mid(str1, j, 2)))) = i Then
taulu(j) = Chr(i)
End If
Next j
Print String(Me.FontSize / 4 + 2, Chr(32)) & Chr(i)
Dim xdelay As Single
xdelay = 0.25 + Timer
Do While Timer < xdelay: DoEvents: Loop
Cls
Next i
For i = LBound(taulu) To UBound(taulu)
str2 = str2 & taulu(i)
Next
Shell "notepad", vbNormalFocus
App.Title = "Nimetön - Muistio"
AppActivate App.Title
SendKeys str2, True
End
End Sub(Mod. edit. Muotoilukeinojen käyttöohjeissa lukee: "käytä säästeliäästi". Olisitko niin ystävällinen? Mukavoittaisi viestiesi lukemista.)
Tämä aihe onkin jo auttanut minua todella paljon. Kiitos teille! :)
Vielä yksi kysymys, Miten saan midi tiedoston soimaan & looppaamaan? Taustamusiikkia.
Olisiko tästä jotain apua?
Aihe on jo aika vanha, joten et voi enää vastata siihen.