Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Visible:=False главного окна чужого приложения


Автор: MastaSlash 17.6.2006, 17:38
Подскажите какое сообщение нужно послать чужому приложению чтоб спрятать его главное окно ??? Если я правильно нашел, то WM_SHOWWINDOW.. если да то подскажите параметры 

Автор: skyboy 17.6.2006, 18:17
так там же в хелпе Microsoft SDK и параметры расписаны... 

Автор: DemoCode 17.6.2006, 18:26
Код

ShowWindow(Handle,SW_HIDE)


Где Handle - это хэндл окна которое надо спрятать, его можно получить с помощью FindWindow

Добавлено @ 18:28 
Если надо именно сообщением, то

Цитата

WM_SHOWWINDOW  
fShow = (BOOL) wParam;      // show/hide flag 
fnStatus = (int) lParam;         // status flag 

 

Автор: MastaSlash 17.6.2006, 21:29
Я пишу следующее 
Код

h1:=FindWindow('TForm1',nil);
SendMessage(h1,WM_SHOWWINDOW,0,0);

но почему-то неработает ??? 

Автор: Rrader 20.6.2006, 07:08
Код

ShowWindow(Wnd, SW_HIDE);

Цитата(MastaSlash @  18.6.2006,  04:29 Найти цитируемый пост)
но почему-то неработает ??? 

Из хелпа:
Цитата

The WM_SHOWWINDOW message is not sent under the following circumstances: 
·    When a top-level, overlapped window is created with the WS_MAXIMIZE or WS_MINIMIZE style. 
·    When the SW_SHOWNORMAL flag is specified in the call to the ShowWindow function. 

 

Автор: smartov 20.6.2006, 11:32
Код

{
  FindWindowByTitle returns the handle of a window that
  contains a certain "WindowTitle".

  Function is Case SENSITIVE.
}

function FindWindowByTitle(WindowTitle: string): Hwnd;
var
  NextHandle: Hwnd;
  NextTitle: array[0..260] of char;
begin
  // Get the first window
  NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
  while NextHandle > 0 do
  begin
    // retrieve its text
    GetWindowText(NextHandle, NextTitle, 255);
    if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
    begin
      Result := NextHandle;
      Exit;
    end
    else
      // Get the next window
      NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
  end;
  Result := 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  target : HWND;
begin
 target := FindWindowByTitle('Notepad');
 ShowWindow(target, SW_SHOW);
end;
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)