Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Makro-ohjelma Ultima Onlineen

Cc [05.08.2006 21:46:43]

#

Olen tekemässä pientä ja yksinkertaista macro-ohjelmaa Ultima Online MMORGP peliin, ohjelmani toimii muuten loistavasti, mutta pelissä on kokoajan chat enabloituna, eli siis jos jotain kirjoittaa niin se menee siihen chattiin ja itse pelissä olen laittannut macroni toimimaan F12 napista oma tapani on tälläinen:

Private Sub Aloita_Click()
    Timer1.Interval = Aika.Text
    Timer1.Enabled = True
End Sub

Private Sub Lopeta_Click()
    Timer1.Interval = 0
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    SendKeys vbKey + Nappaimet.Text, True
End Sub

Itse formilla on Combobox nimellä Nappaimet, joka sisältää F1 - F12 arvot.

Kun yritän ajaa ohjelman se toimii moitteetta, mutta se kirjoittaa esim. F12 chattiin, eikä ns. matki näppäimistöä esim. F12 painamisella, mikä tähän olisi sopiva ratkaisu?

Antti Laaksonen [06.08.2006 11:16:48]

#

Koodissa on kaksi virhettä:
1. Muuttujan tai vakion nimeä ei voi muodostaa osissa.
2. SendKeys-komento ei kelpuuta VB:n näppäinkoodeja.

Nyt "vbKey + Nappaimet.Text" tarkoittaa kahden muuttujan tai vakion yhdistystä. Koska tunnusta vbKey ei ole määritelty, sen arvo on tyhjä. Näin ohjelmalle lähetetään vain kirjaimet "F", "1" ja "2", jotka tulostuvat sellaisenaan.

Ongelman ratkaisu on käyttää oikeita SendKeys-merkintöjä. Esim. F12-näppäimen merkintä on "{F12}". Jos ohjelma lähettää pelkästään F-näppäimiä, pieni muutos koodiin riittää:

SendKeys "{" & Nappaimet.Text & "}", True

Tässä tulee lainattuna MSDN:stä kaikki SendKeys-komennon erikoismerkinnät:

BACKSPACE             {BACKSPACE}, {BS}, or {BKSP}
BREAK                 {BREAK}
CAPS LOCK             {CAPSLOCK}
DEL or DELETE         {DELETE} or {DEL}
DOWN ARROW            {DOWN}
END                   {END}
ENTER                 {ENTER}or ~
ESC                   {ESC}
HELP                  {HELP}
HOME                  {HOME}
INS or INSERT         {INSERT} or {INS}
LEFT ARROW            {LEFT}
NUM LOCK              {NUMLOCK}
PAGE DOWN             {PGDN}
PAGE UP               {PGUP}
PRINT SCREEN          {PRTSC}
RIGHT ARROW           {RIGHT}
SCROLL LOCK           {SCROLLLOCK}
TAB                   {TAB}
UP ARROW              {UP}
F1                    {F1}
F2                    {F2}
F3                    {F3}
F4                    {F4}
F5                    {F5}
F6                    {F6}
F7                    {F7}
F8                    {F8}
F9                    {F9}
F10                   {F10}
F11                   {F11}
F12                   {F12}
F13                   {F13}
F14                   {F14}
F15                   {F15}
F16                   {F16}

Lisäksi yhdistelmissä käytetään:

SHIFT                 +
CTRL                  ^
ALT                   %

Esim. Alt + F4 lähetetään näin:

SendKeys "%{F4}"

Muut merkit lähetetään tavallisesti:

SendKeys "OP"

PS. Kirjoita ohjelman alkuun "Option Explicit", niin tällainenkin virhe paljastuu.

Cc [06.08.2006 12:21:00]

#

Kiitos sinulle Antti Laaksonen sain ohjelmani toimimaan niinkuin pitääkin.

Vastaus

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

Tietoa sivustosta