Tämä viritys vaihtaa tietyn kontrollin tekstin toiseksi, kun siirrät hiiren sen päälle.
Kun sammutat ohjelman (paina ESC), tekstit palaavat normaaleiksi.
Esimerkki: Jos siirrät hiiren OK-napin päälle, sen tekstiksi tulee "Ookoo!".
Tee moduuli ja laita allaoleva koodi siihen. Formeja tai muuta vastaavaa ei tarvita.
'|----------------------------------------------------------------------| '| Tekstinvaihtaja | '| | '| Kirjoittanut Kimmo Kenttälä | '| | '| Tämä ohjelma vaihtaa kontrollin (esim. nappi) tekstin toiseksi | '| valmiiksi määriteltyjen ohjeiden mukaan ja palauttaa sammuessaan | '| vanhan tekstin takaisin. | '| | '| Joitain tässä ohjelmassa esiintyviä temppuja varten on haettu tietoa | '| Ohjelmointiputkan (www.ohjelmointiputka.net) koodivinkeistä. | '| | '|----------------------------------------------------------------------| 'Määritellään tarvittavat jutut Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function SendMessageString Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long Private Type POINTAPI x As Long y As Long End Type Private Const WM_GETTEXT = &HD Private Const WM_GETTEXTLENGTH = &HE Private Const WM_SETTEXT = &HC Private VaihdettujenMäärä As Integer 'Näitä tarvitaan tekstien palauttamiseen ennalleen Private VaihdettujenKahvat() As Long 'ohjelman sammuessa. Ei kommentteja muuttujanimien Private VaihdettujenTekstit() As String 'pituudesta, kiitos! Sub Main() Dim Sij As POINTAPI Dim Kahva As Long Dim Teksti As String Dim TxtPituus As Long App.TaskVisible = False 'Piilotetaan ohjelma If App.PrevInstance Then End 'Lopetetaan jos on jo käynnissä tmpvar = GetAsyncKeyState(vbKeyEscape) 'Jottei ohjelma reagoi vanhoihin painalluksiin Do tmpvar = GetCursorPos(Sij) 'Haetaan kursorin sijainti Kahva = WindowFromPoint(Sij.x, Sij.y) 'Haetaan kontrollin kahva TxtPituus = SendMessage(Kahva, WM_GETTEXTLENGTH, 0, 0) 'Haetaan tekstin pituus Teksti = String(TxtPituus, 0) SendMessageString Kahva, WM_GETTEXT, TxtPituus + 1, Teksti 'Haetaan kontrollin teksti Vaihda Kahva, Teksti, "OK", "Ookoo!" 'Vaihdellaan tekstejä Vaihda Kahva, Teksti, "Käynnistä", "PANIC!" aika = Timer 'Vähän viivettä Do DoEvents Loop Until Timer > aika + 0.1 Loop Until GetAsyncKeyState(vbKeyEscape) 'Poistutaan luupista kun painetaan ESC For i = 1 To VaihdettujenMäärä 'Palautetaan kontrollien tekstit ennalleen tmpvar = SendMessageString(VaihdettujenKahvat(i), WM_SETTEXT, 0, VaihdettujenTekstit(i)) Next i End Sub 'Tämä hoitaa tekstien vaihtamisen Private Sub Vaihda(hWnd As Long, ATxt As String, VTxt As String, KTxt As String) If ATxt = VTxt Then 'Onko sama teksti tmpvar = SendMessageString(hWnd, WM_SETTEXT, 0, KTxt) 'Korvataan teksti VaihdettujenMäärä = VaihdettujenMäärä + 1 'Lisätään laskurin arvoa yhdellä ReDim Preserve VaihdettujenKahvat(1 To VaihdettujenMäärä) 'Kasvatetaan taulukkojen ReDim Preserve VaihdettujenTekstit(1 To VaihdettujenMäärä) 'kokoa tarpeen mukaan VaihdettujenKahvat(VaihdettujenMäärä) = hWnd 'Laitetaan kontrollien kahvat VaihdettujenTekstit(VaihdettujenMäärä) = VTxt 'ja vanhat tekstit muistiin End If End Sub
Tuohan on loistava! :D Täytyy jalostaa tuota koodia ja asettaa koulun koneella ajastettu käynnistä napin tekstin vaihto. Sitten kaikki ihmettelee, miks käynnistä napissa lukee jotain tyyliin "TeiniX".
EDIT: Ei hitto tos on joku bugi. Nyt mulla jäi käynnistä napin tekstiks "Foobar". x(
TUPLA EDIT: Se ei lähe minnekkää se teksti :(
TRIPLA EDIT: Keksin keinon miten sen saa palautettua ennalleen. Poistaa tehtäväpalkin lukituksen ja raahaa sen sellaiseksi pieneksi. Sitten raahaa sen takaisin isoksi. Teksti päivittyy --> alkuperäinen teksti tulee takaisin.
Kumma juttu, kokeilin sitä kyllä ja toimi joka kerta kunnolla.
Kaikkien tekstien pitäisi palata ennalleen esciä painettaessa.
Joo... Taisin vaan unohtaa painaa esciä. Et arvaa kuinka paniikissa olin kun en saanu sitä palautettua ja siinä luki Foobar. No, ei lue enää. :D
No, vaikka se ei lähtisikään pois ESCillä niin kai sen saa tuota koodia hiukan muuttamalla vaihtumaan takaisin alkuperäiseksi?
Äh, ei näitä omia kommentteja voi vieläkään muokat, unohdin äskeisen kommenttini perästä hymiön :)
No sen sai tuolla kikalla takaisi... :P
Meitsi.. kyllä se vaihtuu takaisin itestään, ja toimii kai vaan xp.. en oo varma 2k:sta
KYllä se viimeistään bootissa vaihtuu takasin :)
Olis aika noloa jos ei sais sitä takasin ja siin lukis jotain TeiniX. :D
Hauska =D
H4x0r tai 31337 käynnistänapin tekstiksi ja koulun / kaverin koneelle.
Ongelma: Syö koneen tehoja =(
lainaus:
Ongelma: Syö koneen tehoja =(
Teksti pysyy vaikka ohjelman sammuttaisi, joten homman pitäisi hoitua poistamalla pätkä joka palauttaa tekstit.
No Work!
Juu eipä nää muistissa tapahtuvat muutokset ole pysyviä...
Ja pilkun-nussijoille: no OKEI on jos muutat Wordissa tekstiä ja autosave on päällä. OMG!
Aihe on jo aika vanha, joten et voi enää vastata siihen.