Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Tekstin lähettäminen prosesseihin

calstap [11.02.2010 15:02:29]

#

Eli nyt olisi tarkoitus lähettää komentoja pelin erilliseen console-ikkunaan.
Tähän mennessä olen kyllä saanut lähetettyä tekstiä muistioon, mutta en tiedä consolen textinputin nimeä joten sinne lähettäminen ei onnistu.

Olisiko jotain vinkkejä kuinka saisin textinputin nimen selville tai jotain muita keinoja lähettää tekstiä sinne?

Tässä koodi jolla teksti lähtee notepadiin jossa siis muokattavan alueen nimi on "edit":
http://pastebin.com/f4fa34d0b

Kyseessä siis vb2008

neau33 [12.02.2010 03:45:08]

#

Moikka calstap!

Jos haluat lähetellä windows-sovelluksesta komentoja windowsin komentokehoteikkunaan niin jutska hoituu esim. vaikkapa seuraavasti...

Sub Button1Click(sender As Object, e As EventArgs)

   Dim progid As Object = GetProcessId("cmd")

   If progid Is Nothing Then
     Shell("cmd", AppWinStyle.NormalFocus)
   Else
     AppActivate(progid)
   End If

   Dim cmdstr As String = _
   "@echo Morjens" + Environment.NewLine
   SendKeys.Send(cmdstr)

End Sub

Function GetProcessId(ByVal AppName As String) As Object

  For Each proc As Process In Process.GetProcesses()
      With proc
         If .ProcessName.ToLower _
         = AppName.ToLower Then
            Return .Id
            Exit Function
         End If
      End With
   Next

   Return Nothing

End Function

neau33 [15.02.2010 10:01:51]

#

Moikka taas calstap!

Mikäli sattuisi tökkimään niin tässä vielä vaihtoehto SendKeys-viritelmille...

Sub Button1Click(sender As Object, e As EventArgs)

   Static cnt As Long: cnt += 1

   Dim cmdstr As String = _
   "@echo Morjens (" + CStr(cnt) + _
   ". kerta)>C:\testi.txt"

   Dim Enc As New ASCIIEncoding
   Dim chars As Char() = _
   Enc.GetChars(Enc.GetBytes(cmdstr))

   Dim sinfo As New ProcessStartInfo

   With sinfo
      .CreateNoWindow = False
      .UseShellExecute = False
      .FileName = "cmd.exe"
      .WindowStyle = ProcessWindowStyle.Normal
      .RedirectStandardOutput = True
      .RedirectStandardInput = True
   End With

   Dim proc As New Process

   With proc
      .StartInfo = sinfo
      .Start
      .StandardInput.AutoFlush = True
      .StandardInput.WriteLine(chars)
      .WaitForExit
   End With

End Sub

Vastaus

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

Tietoa sivustosta