thiago costa

thiago costa

  • NA
  • 319
  • 0

Trying to change value of textbox.txt from a static method.

Jun 13 2020 2:17 AM
  1. //Hello there guys.      
  2. //This is my static method. It is a low level hotkey hook.       
  3. //I need to be able to send outputs to TB_output. What's the best way to achieve this?    
  4.       
  5.  private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)      
  6.         {      
  7.             if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)      
  8.             {      
  9.                 int vkCode = Marshal.ReadInt32(lParam);      
  10.                     
  11.                 switch (vkCode)      
  12.                 {      
  13.                     case 87:  // this works. breakpoint hits.    
  14.       
  15.                         // I want to be able to change the value of my TB_output      
  16.                        // textbox from here. What's the best way?      
  17.       
  18.                         TB_output.Text = vkCode.ToString();   // obviously this doesn't work :'(    
  19.                               
  20.                         break;      
  21.                 }      
  22.             }      
  23. }  
Thank you guys !
Here is the entire code in case it helps...
So what I am making is a BOT for mortal kombat, it will do auto combos!
I will perform the combo manually, and the software will detect the distance in milli seconds from each keystroke I make.
Then, it will output c++ code for me so I can go back to c++ to write my code generated by realtime game input.
The first thing I tried: Use keydown / keyup event. It works BUT, if the program is not in FOCUS, it will not register the hotkeys.
The other method I tried, would register global hotkeys, but then, what ever key is registered as a global hotkey no longer works anywhere else but this program..
This other method I am trying here seems to work. It will capture my hotkeys, and the keys in question are still usable in any other window.
Problem is I ended up with this static method for the low level hook, and now I cant output my data to my textbox :'(.
Here is the probably irrelevant entire code:
**Note I am no longer using the KeyEventArgs.
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Threading.Tasks;  
  9. using System.Windows.Forms;  
  10. using System.IO;  
  11. using System.Timers;  
  12. using System.Runtime.InteropServices;  
  13. using System.Collections;  
  14. using System.Diagnostics;  
  15. namespace Xetal_mk11_ComboGenerator {  
  16.  public partial class Form1: Form {  
  17.   public Form1() {  
  18.    InitializeComponent();  
  19.    System.Timers.Timer aTimer = new System.Timers.Timer();  
  20.    aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);  
  21.    aTimer.Interval = 1;  
  22.    aTimer.Enabled = true;  
  23.    this.KeyPreview = true;  
  24.    _hookID = SetHook(_proc);  
  25.    // Application.Run();    
  26.    //UnhookWindowsHookEx(_hookID);    
  27.   }  
  28.   private  
  29.   const int WH_KEYBOARD_LL = 13;  
  30.   private  
  31.   const int WM_KEYDOWN = 0x0100;  
  32.   private  
  33.   const int WM_KEYUP = 0x0101;  
  34.   private static LowLevelKeyboardProc _proc = HookCallback;  
  35.   private static IntPtr _hookID = IntPtr.Zero;  
  36.   private static IntPtr SetHook(LowLevelKeyboardProc proc) {  
  37.    using(Process curProcess = Process.GetCurrentProcess())  
  38.    using(ProcessModule curModule = curProcess.MainModule) {  
  39.     return SetWindowsHookEx(WH_KEYBOARD_LL, proc,  
  40.      GetModuleHandle(curModule.ModuleName), 0);  
  41.    }  
  42.   }  
  43.   
  44.   private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);  
  45.   [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]  
  46.   private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);  
  47.   
  48.   [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]  
  49.   [  
  50.    return :MarshalAs(UnmanagedType.Bool)  
  51.   ]  
  52.   private static extern bool UnhookWindowsHookEx(IntPtr hhk);  
  53.   
  54.   [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]  
  55.   private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);  
  56.   
  57.   [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]  
  58.   private static extern IntPtr GetModuleHandle(string lpModuleName);  
  59.   static string _code;  
  60.   private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) {  
  61.    if (nCode >= 0 && wParam == (IntPtr) WM_KEYDOWN) {  
  62.     int vkCode = Marshal.ReadInt32(lParam);  
  63.     //Console.WriteLine((Keys)vkCode);    
  64.     //MessageBox.Show(vkCode.ToString());    
  65.     switch (vkCode) {  
  66.      case 87:  
  67.       // _keypress();    
  68.       break;  
  69.     }  
  70.    }  
  71.    if (nCode >= 0 && wParam == (IntPtr) WM_KEYUP) {  
  72.     int vkCode = Marshal.ReadInt32(lParam);  
  73.     //Console.WriteLine((Keys)vkCode);    
  74.     MessageBox.Show(vkCode.ToString());  
  75.     switch (vkCode) {  
  76.      case 87:  
  77.       // MessageBox.Show("You Release W");    
  78.       // _keyrelease();    
  79.       break;  
  80.     }  
  81.    }  
  82.    return CallNextHookEx(_hookID, nCode, wParam, lParam);  
  83.   }  
  84.   public static void _keypress() {  
  85.    // _code = "";    
  86.   
  87.   }  
  88.   public static void _keyrelease() {  
  89.    // MessageBox.Show("Fuck You too");    
  90.   }  
  91.   string w = "0x57"// 87    
  92.   string s = "0x53"// 83    
  93.   string a = "0x41"// 65    
  94.   string d = "0x44"// 68    
  95.   string timer;  
  96.   string quadrado = "VK_INSERT"// front punch //45    
  97.   string triangulo = "VK_HOME"// back punch  //36    
  98.   string r2 = "VK_PRIOR"// block       //33    
  99.   string x = "VK_DELETE"// front kick  //46    
  100.   string bolinha = "VK_END"// back kick   //35    
  101.   string r1 = "VK_NEXT"// interact    //34    
  102.   string l1 = "VK_SPACE"// throw       //32    
  103.   string l2 = "VK_UP"// stance flip //38    
  104.   int i = 1;  
  105.   private void OnTimedEvent(object source, ElapsedEventArgs e) {  
  106.    i++;  
  107.    try {  
  108.     this.EndInvoke(this.BeginInvoke(new MethodInvoker(delegate() {  
  109.      TB_sleep.Text = i.ToString();  
  110.     })));  
  111.    } catch {  
  112.    }  
  113.   }  
  114.   private void Form1_Load(object sender, EventArgs e) {  
  115.   }  
  116.   private void BTN_up_Click(object sender, EventArgs e) {  
  117.   }  
  118.   //    
  119.   // Press keys    
  120.   //    
  121.   private void Form1_KeyDown(object sender, KeyEventArgs e) {  
  122.    //Form1_KeyDown(sender, null);    
  123.    timer = i.ToString();  
  124.    //directionals    
  125.    if (e.KeyCode == Keys.W) {  
  126.     TB_output.Text += "keybd_event(" + w + ", 0, 0, 0);\r\n" + "Sleep(" + timer + ");\r\n";  
  127.     i = 0;  
  128.   
  129.    }  
  130.    if (e.KeyCode == Keys.S) {  
  131.     TB_output.Text += "keybd_event(" + s + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  132.     i = 0;  
  133.    }  
  134.    if (e.KeyCode == Keys.A) {  
  135.     TB_output.Text += "keybd_event(" + a + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  136.     i = 0;  
  137.    }  
  138.    if (e.KeyCode == Keys.D) {  
  139.     TB_output.Text += "keybd_event(" + d + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  140.     i = 0;  
  141.    }  
  142.   
  143.    //3 top    
  144.    if (e.KeyCode == Keys.Insert) {  
  145.     TB_output.Text += "keybd_event(" + quadrado + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  146.     i = 0;  
  147.    }  
  148.    if (e.KeyCode == Keys.Home) {  
  149.     TB_output.Text += "keybd_event(" + triangulo + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  150.     i = 0;  
  151.    }  
  152.    if (e.KeyCode == Keys.PageUp) {  
  153.     TB_output.Text += "keybd_event(" + r2 + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  154.     i = 0;  
  155.    }  
  156.   
  157.    //3 bot    
  158.    if (e.KeyCode == Keys.Delete) {  
  159.     TB_output.Text += "keybd_event(" + x + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  160.     i = 0;  
  161.    }  
  162.    if (e.KeyCode == Keys.End) {  
  163.     TB_output.Text += "keybd_event(" + bolinha + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  164.     i = 0;  
  165.    }  
  166.    if (e.KeyCode == Keys.PageDown) {  
  167.     TB_output.Text += "keybd_event(" + r1 + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  168.     i = 0;  
  169.    }  
  170.   
  171.    //throw and stance    
  172.    if (e.KeyCode == Keys.Space) {  
  173.     TB_output.Text += "keybd_event(" + l1 + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  174.     i = 0;  
  175.    }  
  176.    if (e.KeyCode == Keys.Up) {  
  177.     TB_output.Text += "keybd_event(" + l2 + ", 0, 0, 0);\r\n" + "Sleep(15);\r\n";  
  178.     i = 0;  
  179.    }  
  180.   
  181.    // sleep    
  182.    if (e.KeyCode == Keys.Enter) {  
  183.     TB_output.Text += "Sleep(15);\r\n";  
  184.    }  
  185.   
  186.    if (e.KeyCode == Keys.OemPeriod) {  
  187.     TB_output.Text = "";;  
  188.    }  
  189.   
  190.    if (e.KeyCode == Keys.F10) {  
  191.     Clipboard.Clear(); //Clear if any old value is there in Clipboard            
  192.     Clipboard.SetText(TB_output.Text);  
  193.    }  
  194.   }  
  195.   //    
  196.   //Release Keys    
  197.   //    
  198.   private void Form1_KeyUp(object sender, KeyEventArgs e) {  
  199.    //directionals    
  200.    if (e.KeyCode == Keys.W) {  
  201.     TB_output.Text += "keybd_event(" + w + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  202.    }  
  203.    if (e.KeyCode == Keys.S) {  
  204.     TB_output.Text += "keybd_event(" + s + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  205.    }  
  206.    if (e.KeyCode == Keys.A) {  
  207.     TB_output.Text += "keybd_event(" + a + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  208.    }  
  209.    if (e.KeyCode == Keys.D) {  
  210.     TB_output.Text += "keybd_event(" + d + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  211.    }  
  212.   
  213.    //3 top    
  214.    if (e.KeyCode == Keys.Insert) {  
  215.     TB_output.Text += "keybd_event(" + quadrado + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  216.    }  
  217.    if (e.KeyCode == Keys.Home) {  
  218.     TB_output.Text += "keybd_event(" + triangulo + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  219.    }  
  220.    if (e.KeyCode == Keys.PageUp) {  
  221.     TB_output.Text += "keybd_event(" + r2 + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  222.    }  
  223.   
  224.    //3 bot    
  225.    if (e.KeyCode == Keys.Delete) {  
  226.     TB_output.Text += "keybd_event(" + x + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  227.    }  
  228.    if (e.KeyCode == Keys.End) {  
  229.     TB_output.Text += "keybd_event(" + bolinha + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  230.    }  
  231.    if (e.KeyCode == Keys.PageDown) {  
  232.     TB_output.Text += "keybd_event(" + r1 + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  233.    }  
  234.    //throw and stance    
  235.    if (e.KeyCode == Keys.Space) {  
  236.     TB_output.Text += "keybd_event(" + l1 + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  237.    }  
  238.    if (e.KeyCode == Keys.Up) {  
  239.     TB_output.Text += "keybd_event(" + l2 + ", 0, KEYEVENTF_KEYUP, 0);\r\n";  
  240.    }  
  241.   }  
  242.   private void BTN_clear_Click(object sender, EventArgs e) {  
  243.    TB_output.Text = "";  
  244.   }  
  245.  }  
  246. }  

Answers (2)