procedure npcok;
begin
log('1');
  asm
  push 1  mov eax,$00484f90
  call eax
  end;
  log('2');end;
以上函数 用BUTTON就行 但放在线程下就不用了 ,不知道什么问题
以下为线程
procedure TMyThread.Execute;
var
  i: Integer;
begin
  FreeOnTerminate := True; //Ïß³ÌÖ´ÐÐÍê³Éºó×Ô¶¯ÊÍ·Å
    // rw(Form1.edt2.Text);
npcok;    
end;
procedure TForm1.btn8Click(Sender: TObject);
var  MyThread: TMyThread;
begin
     MyThread := TMyThread.Create(True);//´´½¨Ï̠߳ MyThread := TMyThread.Create(False);Ϊֱ½ÓÖ´ÐР²»ÐèÒªµÈ´ý
  MyThread.Resume;  //µ÷ÓÃÏß³Ì
end;

解决方案 »

  1.   

    log('1');
    我是输出到MEMO
    乱码是注释 不管在BUTTON下 LOG1 LOG(2) 都没问题 都正常输出了 但放在线程下 就只执行到log(1),没有执行log(2之前的代码)
      

  2.   

    与LOG不关 LOG函数下面是发送消息操作的
    procedure log(str: string);
    var
      str1:string;
    begin
      str1:=str;
      sendmessage(Form1.Handle,11113,0,Integer(@str1));
      //Form1.mmo1.Lines.Add(str)
    end;
      

  3.   

    是在DLL中 注入到其他游戏中的 应该是没改的 其他函数函数都没问题 就这个不执行
      

  4.   

    地址没错 用代码注入器 都可以 或直接在DLL中用BUTTON直接调用 都没问题 只是放在线程中就不行了
      

  5.   

    procedure TMyThread.Execute;
    var
      i: Integer;
    begin
      FreeOnTerminate := True; //Ïß³ÌÖ´ÐÐÍê³Éºó×Ô¶¯ÊÍ·Å
      // rw(Form1.edt2.Text);
      Synchronize(npcok);   // 这句应该这样写!
    end;