Strg + C Gleichzeitig drücken

  • VB.NET

Es gibt 62 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemUnknow.

    Nun brauch ich nur noch den Ausschnitt aus Spy++
    wo "Name: Nummer:..." drinnesteht, nur von dieser Zeile alles ;)

    Und da ich jetzt hier so großzügig C&P gegeben habe, möchte ich gerne, dass du mir erklärst, was der bisherige Code eigentlich überhaupt macht, falls es dir nicht möglich sein sollte fragen, bis du es wirklich verstanden hast ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---


    Erklärung geb ich dir wenn ich Zeit habe, heute nichtmehr, wenn das ok ist, ich brauch dafür sicher eine Zeit :)
    :saint:
    Zitat
    BTW: STRG und C gleichzeitig zu drücken kannst du eh nicht realisieren.

    geht schon...darum gehts ums gedrückt halten du Held...

    @vandi13: mach aus Is überall "="(habs halt ausm Kopf geschrieben)


    1. Jo bist cool :thumbup:
    2. Geht es nicht... Den Grund sag ich dir nicht, sollte jeder der hier unterwegs ist kennen...
    3. Wenn du es schaffst, dann bist du für mich ein Talent, Gott etc.
    Da wo die MsgBox kommt, muss dann nur noch das hin:

    VB.NET-Quellcode

    1. Dim handle As IntPtr = FindWindowEx(dialog3,IntPtr.Zero,"Edit","")
    2. MsgBox(handle)


    Wenn die MsgBox nicht
    67460

    ausgibt, dann noch diese Zeile davor einfügen:

    VB.NET-Quellcode

    1. handle = FindWindowEx(dialog3,handle,"Edit","")


    Das ganze musst du dann noch mehrmals testen, wenn du die Applikation schließt und nochmal öffnest, ob dann auch noch alles passt...



    1. Jo bist cool :thumbup:
    2. Geht es nicht... Den Grund sag ich dir nicht, sollte jeder der hier unterwegs ist kennen...
    3. Wenn du es schaffst, dann bist du für mich ein Talent, Gott etc.

    1. Hast einmal in deinem Leben recht
    2. Geht es - Wie geschrieben - beide gleichzeitig Gedrückt HALTEN - Ansonsten sag ich dir, dass du auch keine zwei Dinge gleichzeitig machen kannst und dein PC auch nicht, da nicht wirklich alles gleichzeitig passiert blabla...
    3. Ich bin Chuck Norris, reicht das?
    4.
    Deine Beiträge helfen hier keinem^^





    Edit:
    @vandi13:
    Wir sind dem Ziel sehr sehr nahe ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Mit der Zeile kommt 67460 rauss ja :)


    Eine Frage nebenbei, ist die Handle id auf jedem Computer gleich?
    :saint:

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

    Eine Frage nebenbei, ist die Handle id auf jedem Computer gleich?

    Nein ist sie nicht, deshalb verwenden wir diesen Code um das auf jedem Computer herauszufinden...
    dieses Handle ändert sich auch mit jedem Start des Programms und somit auch jedem Start des PCs, bzw. jedem neu öffnen des Fensters(sofern es nicht nur versteckt wird)...

    Nun musst du nurnoch das GetText anwenden mit diesem handle ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    also so?

    VB.NET-Quellcode

    1. Dim parentWindow As IntPtr = FindWindow("#32770","Mobile Partner")
    2. If parentWindow = IntPtr.Zero Then
    3. MsgBox("ParentWindow nicht gefunden...")
    4. Else 'Ab hier wirds kompliziert
    5. Dim dialog1 As IntPtr = GetSubDialog(parentWindow, IntPtr.Zero)
    6. Dim dialog2 As IntPtr = GetSubDialog(dialog1, IntPtr.Zero)
    7. Dim dialog3 As IntPtr = GetSubDialog(dialog2, IntPtr.Zero)
    8. Dim handle As IntPtr = FindWindowEx(dialog3, IntPtr.Zero, "Edit", "")
    9. handle = FindWindowEx(dialog3, handle, "Edit", "")
    10. MsgBox(handle)
    11. Dim sb As New System.Text.StringBuilder()
    12. SendMessage(handle, CUInt(WndMsg.WM_GETTEXT), 100, sb)
    13. MsgBox("Text: " & sb.ToString()) End If



    Dann gibt er "67460" aus und dann steht "vshost.exe funktioniert nicht mehr"
    :saint:
    hmm, dann wäre es möglich, dass es an der Länge des Textes liegt, also lesen wir zuerst die Länge des Textes aus:

    VB.NET-Quellcode

    1. Dim len As Integer = SendMessage(handle,CUInt(WndMsg.WM_GETTEXTLENGTH),IntPtr.Zero,IntPtr.Zero).ToInt32()
    2. If len <= 0 Then
    3. MsgBox("Text leer")
    4. Return
    5. End If
    6. Dim sb As New System.Text.StringBuilder(Nothing,len+1)
    7. 'Hier noch den Text auslesen->SendMessage...


    anstatt 100 übergibst du len an SendMessage, dann nochmal gucken was passiert ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

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

    Da kommen dann 2 Fehler

    Numero1 in Zeile

    VB.NET-Quellcode

    1. Dim len As Integer = SendMessage(handle, CUInt(WndMsg.WM_GETTEXTLENGTH), 0, 0)


    Der Wert vom Typ "Integer" kann nicht in "System.Text.StringBuilder" konvertiert werden

    Numero2 in Zeile

    VB.NET-Quellcode

    1. Dim sb As New System.Text.StringBuilder(Nothing, len + 1)



    Fehler bei der Überladungsauflösung, da keine zugreifbare "New" für diese Argumente am spezifischsten ist
    :saint:
    Dim len As Integer = SendMessage(handle, CUInt(WndMsg.WM_GETTEXTLENGTH), 0, 0)

    Die Zeile hab ich nochmal korrigiert(siehe oben)...

    Wenn dann noch ein Fehler kommt, dann brauchst du noch die SendMessage Definition, die du am Anfang hattest(also [VB 2010] Strg + C Gleichzeitig drücken)
    aber Zusätzlich zu der, die du aktuell hast...


    New System.Text.StringBuilder(Nothing, len + 1)

    ->

    VB.NET-Quellcode

    1. New System.Text.StringBuilder(len + 1)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Dann steht da




    Fehler bei der Überladungsauflösung, da keine zugreifbare "SendMessage" mit diesen Argumenten aufgerufen werden kann:
    "Private Shared Function SendMessage(hWnd As System.IntPtr, Msg As UInteger, wParam As System.IntPtr, lParam As System.IntPtr) As System.IntPtr": "Option Strict On" lässt keine impliziten Konvertierungen von Integer in System.IntPtr zu.
    "Private Shared Function SendMessage(hWnd As System.IntPtr, Msg As UInteger, wParam As Integer, lParam As System.Text.StringBuilder) As System.IntPtr": Der Wert vom Typ "System.IntPtr" kann nicht in "System.Text.StringBuilder" konvertiert werden.
    :saint:
    Ich glaube du hast was übersehen:
    Dim len As Integer = SendMessage(handle, CUInt(WndMsg.WM_GETTEXTLENGTH), 0, 0)



    Die Zeile hab ich nochmal korrigiert(siehe oben)...

    [VB 2010] Strg + C Gleichzeitig drücken
    Die Zeile hat sich geändert, die musst du auch übernehmen ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Habe ich übernommen.

    Bei dem Code

    VB.NET-Quellcode

    1. SendMessage(handle, CUInt(WndMsg.WM_GETTEXTLENGTH), CInt(IntPtr.Zero), IntPtr.Zero)


    Kommt der Fehler wie gerade beschrieben
    :saint:
    SendMessage(handle, CUInt(WndMsg.WM_GETTEXTLENGTH), CInt(IntPtr.Zero), IntPtr.Zero)

    So hab ich das aber nicht geschrieben :P
    Das CInt steht bei mir nirgends, mach das also einfach noch weg ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Das hat aber dein liebes "IDE" drausgemacht

    Sonst kommt halt der Fehler

    Option Strict On lässt keine impliziten Konvertierungen von System.IntPtr in Integer zu.
    :saint:
    1

    VB.NET-Quellcode

    1. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    2. Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As System.Text.StringBuilder) As IntPtr
    3. End Function


    2

    VB.NET-Quellcode

    1. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    2. Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
    3. End Function
    :saint: