Portierung eines C++ Codes nach VB

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

    Portierung eines C++ Codes nach VB

    Hallo , ich kam vor kurzen auf die Idee ein kleines Rapid Fire Script zu erstellen , welches z.B. bei Shootern eine hohe Feuerrate mit halbautomatischen Waffen ermöglicht.

    Ich hab nach langer Recherche ein C++ Beispiel gefunden , welches in einer DLL vorhanden ist und dann per Injector der jeweiligen EXE hinzugefügt wird.

    Ich wollte es in einer Form machen , da diese eine GUI besitzt und ich mich mit VB besser auskenne.

    Also der ursprüngliche C++ Code sieht so aus:

    Spoiler anzeigen

    Quellcode

    1. if(GetAsyncKeyState(VK_RBUTTON))
    2. ... AutoFireTMR als Integer , und AutoStageFire2 als Boolean , also das JA/NEIN ob es aktiviert ist.
    3. {
    4. if(hack[AUTO_FIRE].on)
    5. {
    6. AutoFireStage2 = true;
    7. }
    8. }
    9. else AutoFireStage2 = false;
    10. if(AutoFireStage2)
    11. {
    12. mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    13. if(clock() - AutoFireTMR > 40)
    14. {
    15. mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    16. mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    17. AutoFireTMR = clock();
    18. }
    19. }


    Meine bisherige VB "Übersetzung":

    Spoiler anzeigen

    VB.NET-Quellcode

    1. 'actistatus ist auch ein Boolean der per Hotkey zwischen True und False wechselt , sprich die Aktivierung des Scripts.
    2. If GetAsyncKeyState(2) Then
    3. If actistatus = True Then
    4. AUTOFIRESTAGE2 = True
    5. Else
    6. AUTOFIRESTAGE2 = False
    7. End If
    8. End If
    9. If AUTOFIRESTAGE2 = True Then
    10. mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    11. If clock - autofiretmr > 40 Then
    12. mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    13. mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    14. autofiretmr = clock()
    15. End If
    16. End If



    mein Problem ist jetzt das "clock()"
    Laut meinen Infos ist das eine Funktion von

    Quellcode

    1. #include <ctime> //for the clock


    Gibt es in VB was ähnliches das ich verwenden kann?
    Also meiner Vermutung nach gibt die Funktion die Sekunden Zeit in Millisekunden zurück?
    ich kenn mich halt in C++ "noch" nicht so aus...
    cplusplus.com/reference/clibrary/ctime/clock/
    Das macht die Funktion. Wie oben schon gesagt kann man dies natürlich auch in VB erreichen. Ist im Grunde ja nix anderes als ne Art Uhr die seit dem Programmstart mitläuft.
    Siehe System.Diagnostics.StopWatch oder Datetime.Now


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Sicherer ist es, wenn Du den C++-Code zunächst nach C# übersetzt, da da die Syntax viel ähnlicher ist.
    Den C#-Code kannst Du verwenden oder Dir per Automat nach VB.NET übersetzen lassen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hier hilft die Process Klasse unter System.Diagnostics aus.

    Gibt die Zeit vom Prozesstart zurück:
    msdn.microsoft.com/de-de/libra…cs.process.starttime.aspx

    So kommst du an die Process Instanz von deinem derzeitigen Program:
    msdn.microsoft.com/de-de/libra…ss.getcurrentprocess.aspx


    Das mit DataTime.Now & etwas Mathe kombiniert kommst du ans gewünschte Ergebnis das clock(); zurückgibt.
    @SystemUnknow Danke ,aber Timer funzte nicht , habe ich so probiert das ein Timer mit einer Millisekunde Intverall eine Zahl imme um 1 erhöht , nur der war langsam und hatte das Intervall gar nicht ? Oo

    @Pinki , zuerst mal Danke!

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub btn_gettime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_gettime.Click
    2. Dim prozess() As Process = Process.GetProcessesByName("Simulate Mouse Click")
    3. Dim ProcStarted As DateTime
    4. ProcStarted = prozess(0).StartTime '.ToLocalTime
    5. lbl_tssu.Text = ProcStarted.ToString
    6. End Sub


    Also das funktioniert , nur das Problem ist jetzt das ich es in Millisekunden brauch , wie der ursprüngliche C++ Code war.... Haste da eine Idee?

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