My.Computer.Clipboard.GetText() - In eine Textdatei auf dem Desktop ausgeben ?

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von TVX.

    My.Computer.Clipboard.GetText() - In eine Textdatei auf dem Desktop ausgeben ?

    Hallo :)

    Folgendes ist mein begehren und zwar möchte ich den Inhalt aus - My.Computer.Clipboard.GetText() -
    in eine vorher mit der Maus angeklickte Zeile einer Textdatei ausgeben !

    Nur leider Gottes komm ich nicht drauf wie.
    Es kann ja nur ne Winzigkeit sein ,aber die fällt mir nicht ein :cursing:

    Oder anders erklärt :
    Text aus Zwischenablage in txt Datei kopieren ! ?


    LG Andre ..

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TVX“ ()

    @TVX:
    in eine vorher mit der Maus angeklickte Zeile einer Textdatei ausgeben

    Wo befindet sich die "Textdatei"? Meintest Du eine TextBox? Woher bekommst Du die Position, die geklickt wurde?

    PS: Das Framework enthält bereits die Clipboard-Klasse: Clipboard.GetText() anstelle von My.Computer.Clipboard.GetText()
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Hatte es so versucht , das geht auch aber aus mir unerklärlichen gründen spielt danach die Tastatur verückt !!!
    hab das stück das den Fehler verursacht mal zum testen in ne extra Mappe gekloppt


    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Runtime.InteropServices
    3. Public Class Form1
    4. Dim Pfad As String = "C:\Windows\T-Daten"
    5. Dim Aktuelles_Datum As Date = Date.Now.Date
    6. Dim Ablaufdatum As String = DateAdd(DateInterval.Day, 1, Date.Now.Date)
    7. <DllImport("user32.dll", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Unicode, EntryPoint:="keybd_event", ExactSpelling:=True, SetLastError:=True)> _
    8. Public Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
    9. End Sub
    10. Dim Merker As Integer = 0
    11. ' tasten deklaration für copy aus zwischenablage
    12. Private Const VK_CONTROL = &H11 'strg taste
    13. Private Const VK_V = &H56 'taste V
    14. Private Const Key_NONE As integer= &H0 'taste loslassen
    15. 't taste drücken - loslassen
    16. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    17. keybd_event(VK_CONTROL, 0, 0, 0)
    18. keybd_event(VK_V, 0, 0, 0) 'v taste
    19. keybd_event(Key_NONE, 0, 0, 0) 'key up
    20. End Sub
    21. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    22. If Merker = 0 Then
    23. Me.Button1.Text = "AN"
    24. Me.Button1.BackColor = Color.Red
    25. Timer1.Interval = 1000 'timer interval in sec
    26. Timer1.Start() 'timer start
    27. ElseIf Merker = 1 Then
    28. Me.Button1.Text = "AUS"
    29. Me.Button1.BackColor = Color.Lime
    30. Timer1.Stop() 'timer stop
    31. End If
    32. Merker += 1
    33. If Merker = 2 Then Merker = 0
    34. End Sub
    35. End Class


    EDIT:
    DER LÄSST DIE STRG TASTE NICHT MEHR LOS X(

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „TVX“ ()

    Mir stellt sich grundsätzlich die Frage, warum Du nicht per SendKeys.SendWait("{Ctrl+V}") sendest. (Der String stimmt so möglicherweise nicht ganz. Guck mal in MSDN nach der SendKeys.Send-Funktion.)

    Und den Merker kannst Du ja eigentlich als Boolean definieren. Wenn Du den Button klickst invertierst Du den Zustand (Merker = Not Merker) und reagierst dann auf den neuen Zustand.

    Das nächste, was mich interessiert: Der Verwendungszweck ist eeetwas fragwürdig. Ich hoffe mal, das wird kein Spammer o.ä.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Send keys kann ich - wollte ich aber nicht ^^

    Hab den Fehler gefunden ;)

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Runtime.InteropServices
    3. Public Class Form1
    4. Dim Pfad As String = "xxxxxxxxxxx"
    5. Dim Aktuelles_Datum As Date = Date.Now.Date
    6. Dim Ablaufdatum As String = DateAdd(DateInterval.Day, 1, Date.Now.Date)
    7. <DllImport("user32.dll", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Unicode, EntryPoint:="keybd_event", ExactSpelling:=True, SetLastError:=True)> _
    8. Public Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
    9. End Sub
    10. 'on / off deklaration
    11. Dim Merker As Integer = 0
    12. ' tasten deklaration
    13. Private Const VK_T = &H54 ' taste t
    14. Private Const VK_RETURN = &HD 'enter taste
    15. Private Const VK_ESCAPE = &H1B 'escape taste
    16. Private Const VK_BACK = &H8 'backspace taste
    17. ' tasten deklaration für copy aus zwischenablage
    18. Private Const VK_CONTROL = &H11 'strg taste
    19. Private Const VK_V = &H56 'taste V
    20. ' Private Const Key_NONE As Integer = &H0 'taste loslassen
    21. Private Const KEYEVENTF_KEYUP = &H2 'taste loslassen
    22. 't taste drücken - loslassen
    23. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    24. keybd_event(VK_T, 0, 0, 0) 'Key down t
    25. keybd_event(VK_T, 0, KEYEVENTF_KEYUP, 0) 'key up
    26. If CheckBox3.Checked = True Then
    27. keybd_event(VK_BACK, 0, 0, 0) 'Key down enter
    28. keybd_event(VK_BACK, 0, KEYEVENTF_KEYUP, 0) 'key up
    29. End If
    30. 'text aus zwischenablage kopieren !!!
    31. keybd_event(VK_CONTROL, 0, 0, 0)
    32. keybd_event(VK_V, 0, 0, 0) 'v taste
    33. keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0) 'key up
    34. keybd_event(VK_V, 0, KEYEVENTF_KEYUP, 0) 'key up
    35. 'entertaste taste drücken - loslassen wenn checkbox1 = checked
    36. If CheckBox1.Checked = True Then 'auto enter
    37. keybd_event(VK_RETURN, 0, 0, 0) 'Key down enter
    38. keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0) 'key up
    39. End If
    40. 'escape taste drücken um chat zu schließen wenn checkbox2 = checked
    41. If CheckBox2.Checked = True Then
    42. keybd_event(VK_ESCAPE, 0, 0, 0) 'Key down t
    43. keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0) 'key up
    44. End If
    45. End Sub
    46. 'timer an - aus
    47. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    48. If Merker = 0 Then
    49. 'Prüfen ob text aus zwichenablage und textbox gleich sind - wen nicht neu laden
    50. If Not My.Computer.Clipboard.GetText = TextBox1.Text Then
    51. My.Computer.Clipboard.Clear()
    52. My.Computer.Clipboard.SetText(TextBox1.Text)
    53. End If
    54. Me.Button1.Text = "AN"
    55. Me.Button1.BackColor = Color.Red
    56. Timer1.Interval = CInt(ComboBox1.Text & "000") 'timer interval in sec
    57. Timer1.Start() 'timer start
    58. ElseIf Merker = 1 Then
    59. Me.Button1.Text = "AUS"
    60. Me.Button1.BackColor = Color.Lime
    61. Timer1.Stop() 'timer stop
    62. End If
    63. Merker += 1
    64. If Merker = 2 Then Merker = 0
    65. End Sub
    66. 'einstellungen speichern & laden - anfang
    67. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    68. If My.Computer.FileSystem.FileExists(Pfad) Then
    69. Dim lines As String = System.IO.File.ReadAllText(Pfad)
    70. If Aktuelles_Datum > CDate(lines) Then
    71. End
    72. End If
    73. Else
    74. Try
    75. My.Computer.FileSystem.WriteAllText(Pfad, Ablaufdatum, True)
    76. Catch ex As Exception
    77. MsgBox("Es ist ein Fehler aufgetreten ,das Tool wird beendet !")
    78. End
    79. End Try
    80. End If
    81. ComboBox1.Text = My.Settings.combobox1 'timer interval load
    82. If ComboBox1.Text = "" Then 'wenn combobox leer = 5 sec
    83. ComboBox1.Text = "5"
    84. End If
    85. TextBox1.Text = My.Settings.textbox1 'letzten text load
    86. If TextBox1.Text = "" Then 'wenn textbox leer ....text
    87. TextBox1.Text = "Test Text - Bitte an txt Datei testen"
    88. End If
    89. CheckBox1.Checked = My.Settings.checkbox1 'load-on-off
    90. CheckBox2.Checked = My.Settings.checkbox2 'load-on-off
    91. CheckBox3.Checked = My.Settings.checkbox3 'load-on-off
    92. End Sub
    93. Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    94. My.Settings.combobox1 = ComboBox1.Text 'timer interval save
    95. My.Settings.checkbox1 = CheckBox1.Checked 'save-on-off
    96. My.Settings.checkbox2 = CheckBox2.Checked 'save-on-off
    97. My.Settings.checkbox3 = CheckBox3.Checked 'save-on-off
    98. My.Settings.textbox1 = TextBox1.Text 'letzten text save
    99. End Sub
    100. 'einstellungen speichern & laden - ende
    101. End Class


    Das Problem an sendkeys ist hat es viel zu senden blokiert es Tastatur und Maus
    Das Problem an sendkeys ist hat es viel zu senden blokiert es Tastatur und Maus.

    Dass es die Tastatur blockiert ist ziemlich klar. Es bringt ja nichts, dazwischen drin noch was einzutippen.
    Aber dass es die Maus blockiert wäre mir noch nie aufgefallen.
    Bei meinem KeySender für Minecraft sende ich jedes Zeichen separat im Abstand von 50ms. Funktioniert ohne Probleme.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Hab's gerade getestet. Sendet man mit SendKeys.SendWait("^v") die Strg+V-Kombination, hängt sich nichts auf. Und da ist die Länge des Textes in der Zwischenablage auch egal.

    Und auch, wenn ich einen ziemlich langen Text mit SendKeys.SendWait sende, dauert das nur lange, bis der Text drin vollständig gesendet ist. Aber die Maus läuft problemlos weiter.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils