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 Sub
2) 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 Sub
5) 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 Sub
Ohjelman 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 Sub
7) Saat selville ohjelman oman hakemiston muuttujan App.Path kautta:
Private Sub Form_Load() MsgBox "Ohjelma on hakemistossa " + App.Path End Sub
Kiitoksia :) 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 Sub
Moikka 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.