Das ist mal mein Testcode
wenn fremdes programm gestartet ist, dann 8000 ms wenn nicht gestartet dann 60ms
GetProcAddress liefert in beiden Fällen die selbe Adresse zurück
Wenn ich das fremde Programm schließe, dann funktionieren die Aufrufe sofort wieder schnell
Ein Starten im Adminmode, oder mit Kompatiblitäts .... bringt auch nichts.
Delphi-Quellcode:
procedure TForm8.Button1Click(Sender: TObject);
var
c : cardinal;
i : integer;
begin
c := GetTickCount;
// CreateWindowEx
for i:=0 to 100 do begin
with TTimer.Create(nil) do
Free;
end;
Memo1.Lines.Add(IntToStr(GetTickCount-c));
end;
procedure TForm8.Button2Click(Sender: TObject);
var
LModule : HMODULE;
temp : Pointer;
begin
LModule := GetModuleHandle(User32);
if LModule <> 0 then
begin
temp := GetProcAddress(LModule, 'CreateWindowExA');
Memo1.Lines.Add('CreateWindowEx : '+IntToHex(integer(temp), 8));
end;
end;