[vb.net] sendkeys

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 21-09 18:37

Saven

Administrator

Topicstarter
Hallo,
Ik heb een klein probleem waar niet zo veel over te vertellen valt.

Ik gebruik sendkeys in mijn programma'tje, alleen kun je daar geen ' en ) gebruiken, want dan crasht de app. Ik weet dat er voor VB6 een soort zelfgemaakte escape() functie was door iemand waardoor je wel ' en ) kon gebruiken.
Echter heb ik deze code niet meer, en ik kan hem ook nergens op google vinden.

Ik heb nu deze code:

Visual Basic .NET:
1
2
3
        For i = 1 To boxTotal.Value
            Windows.Forms.SendKeys.Send(txtText.Text & "{enter}")
        Next i


Kan iemand mij helpen dat ik wél alle tekens kan sturen?
Alvast bedankt :)

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Wat is er niet duidelijk aan de documentatie?
http://msdn.microsoft.com/en-us/library/8c6yea83(VS.85).aspx

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 21-09 18:37

Saven

Administrator

Topicstarter
Hoe ik kan zorgen dat hij ook dingen als:
code:
1
lol :')


pakt, wat hij nu niet doet. daar kan ik in de documentatie niks over vinden

en dat als ik {TAB} stuur, hij gewoon dat als tekst pakt ipv commando

[ Voor 20% gewijzigd door Saven op 27-03-2009 15:10 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Saven schreef op vrijdag 27 maart 2009 @ 15:09:
Hoe ik kan zorgen dat hij ook dingen als:
code:
1
lol :')


pakt, wat hij nu niet doet. daar kan ik in de documentatie niks over vinden

en dat als ik {TAB} stuur, hij gewoon dat als tekst pakt ipv commando
Volgens de documentatie
The plus sign (+), caret (^), percent sign (%), tilde (~), and parentheses () have special meanings to SendKeys. To specify one of these characters, enclose it within braces ({}). For example, to specify the plus sign, use "{+}". To specify brace characters, use "{{}" and "{}}". Brackets ([ ]) have no special meaning to SendKeys, but you must enclose them in braces. In other applications, brackets do have a special meaning that might be significant when dynamic data exchange (DDE) occurs.
Dus je moet je haakje escapen
C#:
1
Windows.Forms.SendKeys.Send( "lol :{'}){enter}")

zou dus moeten werken

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 21-09 18:37

Saven

Administrator

Topicstarter
Woy schreef op vrijdag 27 maart 2009 @ 15:16:
[...]

Volgens de documentatie

[...]

Dus je moet je haakje escapen
C#:
1
Windows.Forms.SendKeys.Send( "lol :{'}){enter}")

zou dus moeten werken
Nope:
SendKeys-tekenreeks lol :{'}){enter} is niet geldig.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
C#:
1
SendKeys.Send("lol :'{)}{ENTER}{TAB}blaat");

resultaat
code:
1
2
lol :')
    blaat

Je moet de juiste tekens escapen en op je casing letten.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Woy's webpagina is van wscript.

http://msdn.microsoft.com....forms.sendkeys.send.aspx

Jij gebruikt deze. Misschien dat daar iets handig opstaat bij de notes.

[ Voor 4% gewijzigd door Snake op 27-03-2009 15:24 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Snake schreef op vrijdag 27 maart 2009 @ 15:22:
Woy's webpagina is van wscript.

http://msdn.microsoft.com....forms.sendkeys.send.aspx

Jij gebruikt deze. Misschien dat daar iets handig opstaat bij de notes qua security ofzo.
Het gaat gewoon over dezelfde API call, en heeft dus ook het zelfde gedrag. Hij moet gewoon de juiste tekens escapen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 21-09 18:37

Saven

Administrator

Topicstarter
Ben even wat gaan experimenteren:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
    Private Function SendKeysEscape(ByVal Expression As String) As String

        For i = 1 To Len(Expression)
            SendKeysEscape = SendKeysEscape & "{" & Mid$(Expression, i, 1) & "}"
        Next i

    End Function

Windows.Forms.SendKeys.Send(SendKeysEscape(txtText.Text) & "{enter}")


Ik kan nu {tab} als tekst sturen, maar de single-quote ' pakt hij niet, dan krijg ik die foutmelding :X

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je moet ook niet alles escapen, maar alleen de special characters

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 13-09 21:30
Heb je wel gelezen?
Visual Basic .NET:
1
Windows.Forms.SendKeys.Send("{" & txtText.Text & "}" & "{enter}")

Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 21-09 18:37

Saven

Administrator

Topicstarter
Mastermind schreef op vrijdag 27 maart 2009 @ 15:32:
Heb je wel gelezen?
Visual Basic .NET:
1
Windows.Forms.SendKeys.Send("{" & txtText.Text & "}" & "{enter}")
Ja :P

Trefwoord :') is niet geldig.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Mastermind schreef op vrijdag 27 maart 2009 @ 15:32:
Heb je wel gelezen?
Visual Basic .NET:
1
Windows.Forms.SendKeys.Send("{" & txtText.Text & "}" & "{enter}")
Ik weet niet wat jij gelezen hebt, maar ik kan nergens lezen waar er naar die oplossing gehint word. En bovendien zal het ook niet werken, behalve als je toevallig in txtText.Text één special character heb staan ( of iets als ENTER/TAB/etc... )

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 13-09 21:30
Oh je wilt een heel stuk tekst sendkeyen. Waar wil je dat voor gebruiken?
* Mastermind had zelf niet goed gelezen (rent weg)

[ Voor 29% gewijzigd door Mastermind op 27-03-2009 15:36 ]


Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 21-09 18:37

Saven

Administrator

Topicstarter
Wat ik heb met
Visual Basic .NET:
1
Windows.Forms.SendKeys.Send(SendKeysEscape(txtText.Text) & "{enter}")


werkt half.

ik kan :') sturen, en ik kan {tab} sturen, allemaal los van elkaar.
alsi k echter:
:') {tab}

stuur, dan crasht ie weer

Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 21-09 18:37

Saven

Administrator

Topicstarter
Mastermind schreef op vrijdag 27 maart 2009 @ 15:35:
Oh je wilt een heel stuk tekst sendkeyen. Waar wil je dat voor gebruiken?
* Mastermind had zelf niet goed gelezen (rent weg)
zodat ik tekst kan sturen naar bijv. een msn venster :P

Acties:
  • 0 Henk 'm!

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 13-09 21:30
Misschien met String.Replace?
Visual Basic .NET:
1
2
Dim text As String =  txtText.Text.Replace("'", "{'}").Replace(")", "{)}")
SendKeys.Send(text & "{ENTER}")


Vies :P

[ Voor 3% gewijzigd door Mastermind op 27-03-2009 15:50 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Als je gewoon de code die ik hier post: Woy in "\[vb.net] sendkeys"
uitvoert, dan werkt dat gewoon. Je moet dus alleen nog een stuk code schrijven die de JUISTE characters escaped

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1