Miten saisin lähetettyä ohjelmaani valitun tekstin?
clipboard.gettext
tuo taitaa edellyttää että teksti on kopioitu.
Käyhän tuokin jos osaat vielä kertoa miten saan kopioitua valitun teksti automaattisesti clipboardille.
eli muuten toimisi mutta
ClipBoard.SetText 'mutta mitenkäs kopioit tuonne vaikka notepadista valitun tekstin?
Niinpä, huomasin Laaksonen koodivinkissä, että Copy-Paste toimii ainoastaan ohjelman sisällä, eikä muiden ohjelmien välillä. Tuonhan saisi tehtyä pelkällä merkkijonollakin.
lainaus:
Tuonhan saisi tehtyä pelkällä merkkijonollakin.
Mitä tarkoitat?
Niin siis, että ohjelman sisäisen Copy-Pastetuksen saa vain kopioimalla merkkijonomuuttujaan. Sikäli tuosta ClipBoard.SetTextistä ei näy olevan hyöytyä, koska se ei toimi useiden ohjelmien välillä.
tuomas kirjoitti:
mutta mitenkäs kopioit tuonne vaikka
notepadista valitun tekstin?
[/koodivb]
Erm... SendKeys(^C)? :)
Siis mikä ei toimi. Jos sulla on Notepad ja VB-sovellus, jossa on tekstiruutu, toimii Clipboard molempiin suuntiin. Voit maalata osan tekstistä, painaa Ctrl-C, siirtyä toiseen sovellukseen, mahdollisesti aktivoida tekstiruutu ja Ctrl-V palauttaa tekstin. varmasti toimii myös SetText ja GetText. On vain muistettava tyhjentää ClipBoard ennen SetTextiä.
Siis haen sitä kun käyttäjä valitsee tekstiä jostain (vaikka siitä notepadistä) niin tekstii kopioidaan automaattisesti ilman että kukaan painelee crtl + c tai ctrl + v
Joo noo voihan sitä painallusta matkia...
eli esim timerin alle 1000ms välein...
Const VK_C = 67 Const VK_CONTROL = &H11 Const KEYEVENTF_KEYUP = &H2 Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Sub Timer1_Timer() keybd_event VK_CONTROL, 0, 0, 0 ' paina ctrl keybd_event VK_C, 0, 0, 0 ' paina c keybd_event VK_C, 0, KEYEVENTF_KEYUP, 0 ' vapauta c keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0 ' vapauta ctrl End Sub
Tekstin kopiointi Notepadista VB:hen ei onnistu ilman Ctrl+C painamista. Kun kerran se teksti on sieltä maalattava ei ole kovin suuri lisä painaa noita nappeja.
Laita timer (1000ms) & textbox formiin ja maalaa teksti mistä vain..
Const VK_C = 67 Const VK_CONTROL = &H11 Const KEYEVENTF_KEYUP = &H2 Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Sub Timer1_Timer() keybd_event VK_CONTROL, 0, 0, 0 ' paina ctrl keybd_event VK_C, 0, 0, 0 ' paina c keybd_event VK_C, 0, KEYEVENTF_KEYUP, 0 ' vapauta c keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0 ' vapauta ctrl DoEvents Text1.Text = "" Text1.Text = Clipboard.GetText ' Ota teksti textboxiin End Sub
Kiitos paljon!
Kyllä se on hyvä että jotkut osaavat..
Aihe on jo aika vanha, joten et voi enää vastata siihen.