SaveDialog na wierzchu

0

Witam,

mam programik działający w trayu, czasem (podczas odpowiedneigo zdarzenia w sytemie) wywołuje savedialog, niestety savedialog pojawia się poniżej pod aktywnymi oknami, tak że go nie widać, widoczny jest dopiero po zminimalizowaniu wszystkich okienek. Jak wyświetlić savedialog na wierzchu?

Próbowałem w onshow dać:

  SetWindowPos(TSaveTextFileDialog(sender).Handle, HWND_TOPMOST , 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE) ;
 SetWindowPos(self.Handle, HWND_TOPMOST , 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE) 

Lecz niestety ten sposób nie działa.

0

windows ogolnie przeszkadza jesli chcesz swoj program nagle pokazac na wierzchu i jeszcze dac mu focus.
mialem podobny problem. uporalem sie z tym na xp ale ta metoda na 7 nie dziala, nie wiem jak z vista...:

procedure ForceForegroundWindow(hwnd: THandle);
  // (W) 2001 Daniel Rolf
  // http://www.finecode.de
  // [email protected]
var
  hlp: TForm;
begin
  hlp := TForm.Create(nil);
  try
    hlp.BorderStyle := bsNone;
    hlp.SetBounds(0, 0, 1, 1);
    hlp.FormStyle := fsStayOnTop;
    hlp.Show;
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    SetForegroundWindow(hwnd);
  finally
    hlp.Free;
  end;
end;
0

Witam,

poniższa funkcja działa na win7:

Function ForceForegroundWindow(hWnd: THandle): Boolean;
 Var
  hCurWnd: THandle;
Begin
 Result:=False;
 If Not IsWindow(hWnd) then Exit;
 hCurWnd:=GetForegroundWindow;
 If hCurWnd=hWnd then
   Begin
     Result:=True;
     Exit;
   End;
 If (GetWindowLong( hWnd, GWL_STYLE ) and WS_MINIMIZE)<>0 then ShowWindow(hWnd, SW_SHOWNOACTIVATE);
 AttachThreadInput(GetWindowThreadProcessId(hCurWnd,nil), GetCurrentThreadId, True);
 SetForegroundWindow(hWnd);
 AttachThreadInput(GetWindowThreadProcessId(hCurWnd,nil), GetCurrentThreadId, False);
 Result:=GetForegroundWindow=hWnd;
end;


//wywołanie:
 SetWindowPos(self.Handle, HWND_TOPMOST , 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE) ; 
 ForceForegroundWindow(self.Handle);

 

1 użytkowników online, w tym zalogowanych: 0, gości: 1