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


Автор: ShowMessage 10.9.2008, 15:37
При запуске firefox из своей программы неработает параметр стиля окна....

Код

ShellExecute(0, 'open', 'firefox.exe', nil, nil, SW_SHOW);
ShellExecute(0, 'open', 'firefox.exe', nil, nil, SW_HIDE);


почемуто всегда запускает в видимом режиме, ктонибудь может обьяснить в чём проблема?
с IE работает как и должно.....

Код

ShellExecute(0, 'open', 'iexplore.exe', nil, nil, SW_HIDE);

Автор: Virtuals 10.9.2008, 16:16
ShowMessage, а зачем запускать в невидимом?
а почему hide не работает, спроси у разработчиков.
ЗЫ на их месте я бы тоже так-же поступил, /проверял атрибуты своего окна и выставлял SW_SHOW/ smile 

Автор: SneG0K 10.9.2008, 16:26
ShowMessage, наверно фаерфокс так и поступает, как сказал Virtuals.

Но если надо все же сделать скрытым, то попробуй через FindWindow() найти окно фаера, а потом через SendMessage() отослать ему сообщение, чтоб он скрылся с глаз долой!

Автор: BaD_SeCt0R 10.9.2008, 16:41
Цитата(ShowMessage @  10.9.2008,  15:37 Найти цитируемый пост)
ShellExecute(0, 'open', 'firefox.exe', nil, nil, SW_SHOW);ShellExecute(0, 'open', 'firefox.exe', nil, nil, SW_HIDE);

а зачем сначала SW_SHOW, если его надо скрыть?

Добавлено через 35 секунд
Цитата(Virtuals @  10.9.2008,  16:16 Найти цитируемый пост)
ShowMessage, а зачем запускать в невидимом?

Тож очень интересно... smile

Автор: SneG0K 10.9.2008, 16:54
Цитата(BaD_SeCt0R @  10.9.2008,  15:41 Найти цитируемый пост)

а зачем сначала SW_SHOW, если его надо скрыть?

без разницы... Всеравно лисица любит вываливать все на показ  smile 

Автор: THandle 10.9.2008, 17:47
Код

var
  pi: TProcessInformation;
  si: TStartupInfo;
  h: THandle;
begin
  ZeroMemory(@si, SizeOf(si));
  si.cb := SizeOf(si);
  if CreateProcess('L:\Program Files\Mozilla Firefox\firefox.exe', nil, nil, nil, false, 0, nil, nil, si, pi) then
    begin
      WaitForInputIdle(pi.hProcess, INFINITE);
      h := FindWindow('MozillaUIWindowClass', nil);
      if h <> 0 then
        ShowWindow(h, SW_HIDE);
      CloseHandle(pi.hProcess);
      CloseHandle(pi.hThread);
    end;
end;

Автор: ShowMessage 10.9.2008, 19:26
Цитата(THandle @ 10.9.2008,  17:47)
Код

var
  pi: TProcessInformation;
  si: TStartupInfo;
  h: THandle;
begin
  ZeroMemory(@si, SizeOf(si));
  si.cb := SizeOf(si);
  if CreateProcess('L:\Program Files\Mozilla Firefox\firefox.exe', nil, nil, nil, false, 0, nil, nil, si, pi) then
    begin
      WaitForInputIdle(pi.hProcess, INFINITE);
      h := FindWindow('MozillaUIWindowClass', nil);
      if h <> 0 then
        ShowWindow(h, SW_HIDE);
      CloseHandle(pi.hProcess);
      CloseHandle(pi.hThread);
    end;
end;

Всё равно неполучается......... похоже что неработает это с Firefox =(

Автор: SneG0K 10.9.2008, 21:30
ShowMessage открою тебе тайну. Если тебе THandle дал код и он не работает, значит он и не должен работать. Значит с фаером это не прокатит

Автор: THandle 11.9.2008, 13:36
Цитата(ShowMessage @  10.9.2008,  20:26 Найти цитируемый пост)
Всё равно неполучается......... похоже что неработает это с Firefox =(


Да. Извиняюсь. Проверял только с уже запущенным одним файрфоксом... находил и прятал новопоявившийся... Забавно smile Это возможно сделать, ShowWindow прячет окошко.

Автор: Virtuals 11.9.2008, 16:23
еще раз вопрос к автору... зачем? прятать лису.
и я скажу как! //если нужно

ЗЫ докажите что вы не какаписатель и покажу куда можно и лису спрятать, имхо сомневаюсь.....

Автор: Virtuals 11.9.2008, 17:16
ЗЫ
посмотрев вот это
http://forum.vingrad.ru/act-Search/CODE/getalluser/mid-27357.html
интуитивно не вижу каких либо добрых намерений....

имхо не стоит помогать smile 

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