我想为目标程序新建个类似于记事本的替换对话框的窗口,就是一直在记事本窗口的上一层,并且就算替换对话框开着也不影响记事本的其它操作,
我自己想了个办法是用DLL注入,注入执行下面的代码后(下面的代码是DLL中的)Application.CreateForm(TForm1, Form1);
  form1.Show;
  form1.ParentWindow := hw;在SPY++中也能看到目标程序多了个子窗口,可实际上看不到窗口在哪,该怎么办呀?

解决方案 »

  1.   

    你做个窗体想干什么?
    如果想传递消息,吧消息号码注册为1024一下,然后群发否则你在vista下完蛋
    vista对插入后的句柄不允许接受消息
      

  2.   

    library Project1;uses
      SysUtils,
      Classes,
      Windows,
      Unit1 in 'Unit1.pas' {Form1};{$R *.res}
    var
      lp: Cardinal;procedure CreateForm();
    begin
      Form1 := TForm1.Create(nil);
      Form1.ShowModal;
    end;begin
      CreateThread(nil, 0, @CreateForm, nil, 0, lp);
    end.
      

  3.   

    Form1.Show;不行吗?showmodal是不是生成窗口后必须关掉窗口才能在目标程序中操作了?
      

  4.   

    为目标程序注入DLL后,执行DLL中的如下代码,为目标程序生成一个窗口,可是生成的窗口如何让它只保持在目标程序的上方,而不是所有程序的上方/..??