![]() |
Minimize einer anderen Application blocken
So, ich hab jetzt schon seit fast zwei Tagen vergeblich gesucht und wohl einfach nicht die richtigen Schlagworte gefunden - könnte natürlich evtl. auch sein, daß das Thema hier bisher noch nicht bearbeitet wurde...
Ausgangssituation: Eine selbstgeschriebene Delphi-Applikation soll das automatische Minimize eines anderen Programms (Diablo II) unterdrücken. Für alle, die es nicht kennen: Diablo II im Fenstermodus [ -w ] gestartet minimiert sich sofort, wenn es nicht mehr den Fokus besitzt und verschwindet damit in die Taskleiste. Dieses Verhalten möchte ich aus meinem Programm heraus unterbinden, handle, ProcessID oder ähnliches von D2 zu bekommen ist kein Problem, aber das Minimieren zu verhindern habe ich bisher nicht hinbekommen. eigene Lage: Windows 2000 Delphi 2005 - Architekt (was aber wohl denke ich mal egal sein dürfte) Feindlage: Diablo II (auf DirectX basierend <- vielleicht gibt das ja nochmal einen Hinweis) Auftrag: Schalten Sie das automatische Minimize ab. Unterstützung: Hoffentlich aus dem Forum - auch wenn dies mein 1st Post ist. Melde mich ab |
Re: Minimize einer anderen Application blocken
Zitat:
|
Re: Minimize einer anderen Application blocken
Auch wenn ich es gerne so hätte, aber ich glaube, daß dem Problemchen nicht so einfach beizukommen ist...
Zitat:
![]() Also habe ich auch mit meinem Code
Code:
wenig Chancen.
function EditD2Window (hD2Win, uMsg, wParam, lParam: DWORD): DWORD; stdcall;
var messagefound : boolean; begin messagefound := false; CASE uMsg of WM_KILLFOCUS: begin messagefound := true; end; end; if messagefound = false then Result := CallWindowProc(@OldWinProc,hD2Win,uMsg,wParam,lParam) else result := 0; end; ... begin ... OldWinProc := SetWindowLong (GeneralD2Handle, GWL_WNDPROC, Integer (@EditD2Window)); end; oder mache ich da grundsätzlich etwas falsch?!? |
Re: Minimize einer anderen Application blocken
Zitat:
![]() Edit: Oder versuche mit SetWindowsHookEx die Windows Message abzufangen. |
Re: Minimize einer anderen Application blocken
Hallo,
erstmal nochmals Danke für Deine Antwort, ich versuche es zunächst mit dem SetWindowsHookEx. Beim Stöbern in diesem Forum habe ich da auch einen Beitrag von Dir gefunden... ![]() daraus habe ich dann folgendes gemacht:
Code:
wobei GeneralD2Handle definitiv das richtige Handle und ProcId die richtige ProzessId zu meinem D2-Fenster ist.function EditD2Window (Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; var Msg: PMsg; begin if Code = HC_ACTION then begin Msg := PMsg(lParam); if Msg^.message = WM_KILLFOCUS then begin Msg^.message := WM_COMMAND; Msg.wParam := WM_NULL; Msg.lParam := 0; Result := 1; Exit; end; end; Result := CallNextHookEx(MsgHook, Code, wParam, lParam); end; begin ... ProcId := GetWindowThreadProcessId (GeneralD2Handle, ProcId); MsgHook := SetWindowsHookEx (WH_GETMESSAGE, @EditD2Window, 0, ProcId); ... end; Funktionieren will das Ganze aber dennoch nicht - irgendwelche Verbesserungsvorschläge? |
Re: Minimize einer anderen Application blocken
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz