Hallo Julius,
Ich habe den Code nach deinen Vorgaben verändert, aber leider bekomme ich immer noch 2 Fehlermeldungen beide in der selben Zeile.
E2003 Undefinierter Bezeichner: 'NewWndProc'
E2010 Inkompatible Typen: 'Pointer' und 'Integer'
er kennt nicht NewWndProc egal ob mit oder ohne @ ich habe auch probiert mit Cardinal( @ NewWndProc)
irgendwie scheint hier noch was zu fehlen
Delphi-Quellcode:
const DTM_Raise=WM_User+83;
type
TForm2 = class(TForm)
end;
var
Form2: TForm2;
OldwndProc:Pointer;
progmanhandle:Thandle;
implementation
procedure TForm2.FormCreate(Sender: TObject);
begin
progmanhandle:=findwindow('Progman','Program Manager');
OldwndProc:=Setwindowlong(progmanhandle,GWL_WNDPROC,@NewWndProc);
end;
function NewWndProc(hWnd:HWND;uMsg:Uint;wparam:WParam;lParam:LPARAM):Lresult;
begin
if (uMsg=DTM_RAISE) then begin
// sleep(3000);
end else CallwindowProc(Oldwndproc,hwnd,umsg,wparam,lparam);
end;
Hallo Oliver,
es ist auf jeden Fall sehr nützlich zu wissen durch welche Vorgaben man dieses Verhalten des Fensters erreichen kann, nur das Fenster steht dann ständig im Vordergrund, das ist für den Einsatzbereich für den du das Programm geschrieben hast OK. Für mein Programm kann ich das leider nicht gebrauchen. Ich habe gesehen, dass du im Menu den Punkt Immer im Vordergrund hast, deshalb war ich der Meinung dass man das Topmost ein und ausschalten kann, doch beim durchtesten konnte ich das Fenster nicht in den Hintergrund bekommen. Vielleicht können wir mit dem Ansatz von Oliver und der Erkenntnis, dass das Fenster in den Vordergrund gebracht werden muss, das Verhalten des Fensters so manipulieren, dass es nicht ständig OnTop ist. Das könnte ich mir auch im deinem Programm vorstellen.
Hallo Jurai,
dein Ansatz das Problem zu lösen ist weit überzogen, da wir niemanden in seine rechten beschränken wollen sondern nur das Verhalten eines Fensters ändern.
Gruss Dieter