예제 #1
0
        /// <summary>
        /// 初始化Textractor
        /// </summary>
        /// <returns>成功返回真,失败返回假</returns>
        public bool Init(bool x86 = true)
        {
            string DllPath    = "";
            string ModulePath = "";

            Console.WriteLine("Init()");
            if (x86 == true)
            {
                //复制x86的dll
                ModulePath = Environment.CurrentDirectory + "\\lib\\TextHook\\x86\\texthost.dll";
                DllPath    = Environment.CurrentDirectory + "\\lib\\TextHook\\x86\\texthook.dll";
            }
            else
            {
                //复制x64的dll
                ModulePath = Environment.CurrentDirectory + "\\lib\\TextHook\\x64\\texthost.dll";
                DllPath    = Environment.CurrentDirectory + "\\lib\\TextHook\\x64\\texthook.dll";
            }
            Console.WriteLine(ModulePath);

            if (File.Exists(DllPath) && File.Exists(ModulePath))//判断要复制的文件是否存在
            {
                try {
                    File.Copy(DllPath, Environment.CurrentDirectory + "\\texthook.dll", true);
                    File.Copy(ModulePath, Environment.CurrentDirectory + "\\texthost.dll", true);
                }
                catch (System.IO.IOException) {
                    throw new Exception("无法复制texthook.dll或texthost.dll,请重启游戏和翻译器后再试!");
                }
            }
            else
            {
                return(false);
            }

            createthread = CreateThreadHandle;
            output       = OutputHandle;
            removethread = RemoveThreadHandle;
            callback     = CallBackHandle;
            Console.WriteLine("TextHostInit()");

            TextHostLib.TextHostInit(callback, callback, createthread, removethread, output);
            return(true);
        }
예제 #2
0
 /// <summary>
 /// 添加剪切板监视线程
 /// </summary>
 /// <param name="winHandle"></param>
 public void AddClipBoardThread(IntPtr winHandle)
 {
     TextHostLib.AddClipboardThread(winHandle);
 }
예제 #3
0
 /// <summary>
 /// 根据Hook入口地址卸载一个Hook
 /// </summary>
 /// <param name="pid"></param>
 public void DetachProcessByHookAddress(int pid, string HookAddress)
 {
     TextHostLib.RemoveHook((uint)pid, long.Parse(HookAddress));
 }
예제 #4
0
 /// <summary>
 /// 给定特殊码注入
 /// </summary>
 /// <param name="pid"></param>
 public void AttachProcessByHookCode(int pid, string HookCode)
 {
     TextHostLib.InsertHook((uint)pid, HookCode);
 }
예제 #5
0
 /// <summary>
 /// 结束注入进程
 /// </summary>
 /// <param name="pid"></param>
 public void DetachProcess(int pid)
 {
     TextHostLib.DetachProcess((uint)pid);
 }
예제 #6
0
 /// <summary>
 /// 注入进程
 /// </summary>
 /// <param name="pid"></param>
 public void AttachProcess(int pid)
 {
     TextHostLib.InjectProcess((uint)pid);
 }