Kann mir das jemand in AHK übersetzen?
Beiträge von dewey
-
-
Alles anzeigen
undkannst du oben über
setzen und das Zweite
kannst du EntfernenJo hab ich genau so jetzt gemacht:
http://pastebin.com/u9SPKwrG(Program.cs)
(Form1.cs)
AAber es funktioniert leider immer noch nicht.
Also es kommen keine extra Fehlermeldungen und es passiert einfach nichts wenn man F1 drückt. -
Alles anzeigen
Soo. nun kommt er xD
In die Program.cs über Main kommt:
Dann in den Main private fügst du folgendes ein:
CodeProgram._hookID = KeyMonitor.Start(); Application.Run(new Form1());//Anpassen KeyMonitor.UnhookWindowsHookEx(Program._hookID);KeyMonitor.cs:
C#
Alles anzeigenusing System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows.Forms; namespace SampAntiCheat { internal class KeyMonitor { private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); private const int WH_KEYBOARD_LL = 13; private const int WM_KEYDOWN = 256; private static KeyMonitor.LowLevelKeyboardProc _proc = new KeyMonitor.LowLevelKeyboardProc(KeyMonitor.HookCallback); private static IntPtr _hookID = IntPtr.Zero; public static IntPtr Start() { KeyMonitor._hookID = KeyMonitor.SetHook(KeyMonitor._proc); return KeyMonitor._hookID; } private static IntPtr SetHook(KeyMonitor.LowLevelKeyboardProc proc) { IntPtr result; using (Process currentProcess = Process.GetCurrentProcess()) { using (ProcessModule mainModule = currentProcess.MainModule) { result = KeyMonitor.SetWindowsHookEx(13, proc, KeyMonitor.GetModuleHandle(mainModule.ModuleName), 0u); } } return result; } private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && wParam == (IntPtr)256) { int num = Marshal.ReadInt32(lParam); string text = ((Keys)num).ToString(); if (text.Equals("F1")) { //Was soll Passieren, wenn du F1 drückst? MessageBox.Show("Du hast F1 gedrückt."); } } return KeyMonitor.CallNextHookEx(KeyMonitor._hookID, nCode, wParam, lParam); } [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr SetWindowsHookEx(int idHook, KeyMonitor.LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool UnhookWindowsHookEx(IntPtr hhk); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam); [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr GetModuleHandle(string lpModuleName); } }Ich werde leider nicht ganz schlau aus dem 2. Code:
CodeProgram._hookID = KeyMonitor.Start(); Application.Run(new Form1());//Anpassen KeyMonitor.UnhookWindowsHookEx(Program._hookID);Wo soll ich den genau hinpacken?
-
Ich weiß nur noch nicht wie ich RetF8 und RetF10 verwenden soll.
http://pastebin.com/vyntVTinWenn ich jetzt F1 drücke, sollte eigentlich eine MessageBox kommen, tut sie aber leider nicht..
Außerdem kommt noch ein Fehler, der aber mehr oder weniger egal ist, da sich die Form trotzdem startet:
http://fs2.directupload.net/images/150824/tm5bsusb.png -
Du hast in dem Code auch einen Fehler drin
am ende deiner long deklaration steht vor dem Semikolon ein Komma, das muss da weg.
Deine Abfragen sind auch irgendwie falsch - da kommt das sicherlich nicht hin.
"Irgendwie falsch", "da kommt das sicherlich nicht hin." hilft mir leider nicht

Das Komma habe ich entfernt und die Klasse eingefügt.
Trotzdem kommen noch 11 Fehler.
http://fs2.directupload.net/images/150824/qmgtq43g.pngSo sieht das komplette Script aus:
http://pastebin.com/JpUwV0FU -
Alles anzeigen
Da gibt es mehrere Möglichkeiten, hier mal einen guten Artikel dazu:
Soll die Abfrage global sein (also auch wenn das Programm nicht geöffnet ist) oder nur in der entsprechenden Form?
In der Form:
Dazu gibt es Events (KeyPress, KeyDown, etc.).Innerhalb dieser kannst du bspw. folgendes machen (Beispiel aus einem meiner Codes):
PHPprivate void tbPassword_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { btLogin.PerformClick(); } }
Manchmal musst du auch glaube ich mit KeyChar arbeiten. Einfach mal ausprobieren.Für globale Abfragen kannst du die Funktion GetAsyncKeyState() verwenden.
http://www.administrator.de/wi…arp-verwenden-151540.htmlGetAsyncKeyState() + den Link habe ich auch schon gesehen und ausprobiert, hat aber überhaupt nicht funktioniert.
Bis auf die DLL Imports hat rein gar nichts funktioniert.
http://fs1.directupload.net/images/150824/x65xa5t7.pngDie Funktion im Quellcode funktioniert im Gegensatz zu dem Link einwandfrei.
Wäre halt nur gut, wenn die Tastenabfrage global wäre. -
Hallo,
ich bin gerade in C# dabei einen mini-Keybinder zu erstellen und komme mit der Abfrage, ob eine Taste gedrückt worden ist noch nicht ganz zurecht.
In C++ ist das ja relativ einfach mit der KeyPressed - Funktion, aber in C# scheitere ich gnaden los.
Es mag zwar viele Tutorials auf YouTube dazu geben, aber diese sind meistens an ein Button, der Windows Form, gebunden.
Vielleicht könnte mir jemand einfach ein simples Beispiel zur Tasten-Abfrage zeigen.
MfG -
-
Fällt dir nicht auf, dass alle Time to Projekte zu der Time to - Reihe gehören?
Und weshalb ich als Scripter überall aktiv bin.... Einfach.... Weil ich es kann?
Spaß bei Seite, einfach weil ich dafür ausgelegt bin. Das was Management betrifft, übernimmt N0SKILL, da er in diesen Fällen weitaus besser dran ist als ich.Unser Forum ist geschlossen, das ganz bewusst. Wir öffnen es, sobald wir es für richtig halten.
Abgesehen davon wird erst einmal Time to Crime stabilisiert
Bin nämlich auf der Suche nach einem Projekt, mit einem (aktiven) guten Scripter.
Man/n hört, dass du in dem SAMP Business, ein sehr guter Scripter bist.
Ein aktives Projekt, mit einem vernünftigen, aktiven und kompetenten Scripter, wäre eine Supporter Bewerbung Wert.MfG
-
Azure
Wie kommt es, dass man dich bei so vielen Projektvorstellungen, als leitenden Scripter sieht?
Führst du die Projekte nur bis zum Server Start, oder verlässt du die Projekte, weil sich diese nicht rentieren?
Wirst du in diesem Projekt auch weiter nach dem Server Start tätig sein?EDIT: Warum hat euer Forum eine Umleitung, auf ein anderes Projekt?
MfG
-
Hallo,
viele werden die normale AddChatMessage Funktion kennen, die einfach nur eine Nachricht in den Chat schreibt, die man nur lokal sieht.
Leider kann man mit der normalen Funktion den Timestamp nicht färben.
Dafür bräuchte ich dann eine zweite Funktion.Hat jemand ein eine solche Funktion?