Einzelnen Beitrag anzeigen

MartinA

Registriert seit: 27. Aug 2003
13 Beiträge
 
#4

Re: CreateWindow('Static'... aus injizierter DLL

  Alt 2. Nov 2007, 12:29
Hallo,

das injizieren scheint ja nicht das Problem zu sein.
Wenn Du das Control bzw. das Form in einen eigenen Thread legst sollte es permanent angezeigt werden.

etwas pseudocode

Delphi-Quellcode:
//zum Erzeugen:
wthreathandle := CreateThread(nil, 0, TFNThreadStartRoutine(@frmmsgThread), nil, 0, ThreadID);

//Zum zerstören:
PostThreadMessage(RTFCont.tid,WM_USER+$FFFF,0,0);

function frmmsgThread(): LongInt; stdcall;
var
  wmsg : tmsg;
  X,i : integer;
  twhwnd : thandle;
begin
try
  twhwnd := getcurrentwindo; // oder einfach übergeben
  RTFCont := tForm1.createparented(twhwnd);
  RTFCont.tid := getcurrentthreadid;
  setparent (RTFCont.Handle,twhwnd);
  RTFCont.show;
  while wMSG.message <> WM_USER+$FFFF do
    begin
      GetMessage(wMsg,0,0,0);
      TranslateMessage(wMsg);
      DispatchMessage(wMsg);
    end;
  RTFCont.free;
except
end;

end;
RTFCont ist ein Form auf dem des Control liegt, in dem Beispiel ein RTF-Control.

Im Prinzip kann man mit diesem, nicht wirklich sauberen, Konstrukt nahezu jedes Delphi-Control in jeder Windwos-Anwendung (Konsolen ausgenommen) platzieren.

Gruß
Martin

[edit=SirThornberry]Code-Tags durch Delphi-Tags ersetzt - Mfg, SirThornberry[/edit]
ALT +F4
  Mit Zitat antworten Zitat