Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2018, 10:30   #1
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию Развернуть Google Chrome и сделать его активным.

Добрый день всем. Есть у меня такой вопросик, а именно как развернуть
и активировать свернутое окно хрома именно. У меня есть функция которая проверяет запущен ли процесс хрома. Вот она:

Код:
function processExists(exeFileName: string): Boolean;
var 
    ContinueLoop: BOOL;
    FSnapshotHandle: THandle; 
    FProcessEntry32: TProcessEntry32; 
begin 
    FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
    FProcessEntry32.dwSize := SizeOf(FProcessEntry32); 
    ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); 
    Result := False; 
    while Integer(ContinueLoop) <> 0 do 
    begin 
      if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = 
        UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = 
        UpperCase(ExeFileName))) then 
      begin 
        Result := True; 
      end; 
      ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); 
    end; 
    CloseHandle(FSnapshotHandle); 
end;
Соответственно делаю так
Код:
if not processExists('chrome.exe') then
begin
MessageDlg('Не запущен Chrome',mtError,[mbOK], 0);
Но если он все же запущен и свернут в панель задач, то мне надо его развернуть.

Нашел на просторах такой код для разворачивания Excel, но он ищет окно по содержимому тексту в названии окна:
Код:
procedure TForm1.Button1Click(Sender: TObject);

var h:hwnd;p:pchar;mk:Cardinal;
begin
 h:=GetWindow(GetForegroundWindow,GW_HWNDFIRST);
 getmem(p,2000);
 GetWindowText(h,p,mk);
 while (pos('Excel',p)=0)and(h<>0) do begin
  h:=GetWindow(h,GW_HWNDNEXT);
  GetWindowText(h,p,mk);
 end;
 Label1.caption:=inttostr(h)+' '+p;
 If (h <> 0 )then BringWindowToTop(h);
 ShowWindow(h,SW_SHOWMAXIMIZED);
end;
А вот как бы связать и сделать например чтоб искалось окно не по содержимому в названии окна (ведь я незнаю какая страничка например открыта сейчас в браузере) а по названию процесса, тоесть: Нашло процесс chrome.exe, и сделало с ним все тоже самое что и с Excel примером. Если можна, поподробнее, я еще только учусь. Заранее спасибо огромное.
atihiy2010 вне форума Ответить с цитированием
Старый 04.04.2018, 10:51   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Нахрена всё это делать через процессы, когда есть готовые оконные функции для этого?
FindWindow(), IsIconic(), SetWindowPos(), ShowWindow(), SetForegroundWindow() и т.д.

К тому же, хром плодит отдельные процессы для каждой своей вкладки.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.04.2018, 10:52   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зачем? https://www.gunsmoker.ru/2008/10/x-y-z.html

Если для автоматизации каких-то действий на сайте, то возьмите Selenium (и ЯП где он доступен). Ну или просто HTTP запросы отправлять если сайт не сильно сложный.
Цитата:
Сообщение от atihiy2010 Посмотреть сообщение
а по названию процесса
У хрома не 1 процесс.

Task Manager 2018-04-04 10.48.59.png

И даже если он "закрыт" не факт, что не будет процессов.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.04.2018, 10:58   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Более того у хрома есть процесс для ГПУ и он никак активным окном не станет.
p51x вне форума Ответить с цитированием
Старый 04.04.2018, 11:18   #5
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию

а нельзя симитировать тупо нажатие мышки на окно хрома в панели задач. оно ж сразу и станет активным. Это первое.
Во-вторых, обьясняю для чего мне это все. Я сделал програмку которая типа сохраняет ссылки со скриншотом сайта. Так вот у меня все готово, кроме того ньюанса, что если например нажата кнопка на клавиатуре и хром таки запущен,но не развернут, то развернуть его а тогда делать все то что мне нужно.

Последний раз редактировалось atihiy2010; 04.04.2018 в 11:21.
atihiy2010 вне форума Ответить с цитированием
Старый 04.04.2018, 11:26   #6
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Нахрена всё это делать через процессы, когда есть готовые оконные функции для этого?
FindWindow(), IsIconic(), SetWindowPos(), ShowWindow(), SetForegroundWindow() и т.д.

К тому же, хром плодит отдельные процессы для каждой своей вкладки.
можно пример использования этих функций? желательно именно с хромом.
а вот по поводу кучи процессов я еще не думал, так же не думал по поводу того что делать если запущено несколько окон с хромом. Ну тут же задам вопрос, может проще будет хотябы проверить или активно сейчас хоть какое-то окно с хромом, и если да то супер если нет то Exit. Как-то так. Это бы меня спасло тоже
atihiy2010 вне форума Ответить с цитированием
Старый 04.04.2018, 11:29   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от atihiy2010 Посмотреть сообщение
Я сделал програмку которая типа сохраняет ссылки со скриншотом сайта. Так вот у меня все готово, кроме того ньюанса, что если например нажата кнопка на клавиатуре и хром таки запущен,но не развернут, то развернуть его а тогда делать все то что мне нужно.
Так вам ж все равно сайт открыть надо? Вот при открытии (ShellExecute и т.п.) он и развернется.

Ну и да, с Selenium это делается за 5 минут. Или хотя бы PhantomJs. Ну или хоть CEF (TChromium) возьмите в своем дельфи.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 04.04.2018 в 11:39.
Alex11223 вне форума Ответить с цитированием
Старый 04.04.2018, 11:51   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от atihiy2010 Посмотреть сообщение
можно пример использования этих функций? желательно именно с хромом.
И чо мне теперь, хром себе поставить? Оно мне надо?
А примеров с оконными функциями в интернетах - овер9000 штук. Вот, например, это.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.04.2018, 11:53   #9
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию

Что такое Selenium, PhantomJs, CEF ??? можно пример как это сделать? есть форма, на ней кнопка. Нажал на кнопку и хром развернулся. Можно так?
Понимаю что напрягаю, но говорю же я не эксперт. А сама прога почти готова, доделаю - дам потестить))) Но никак немогу избавиться так сказать от такого исключения. Я бы хоть просто выдавал сообщение что хром не активен и все. А как это отловить незнаю.
atihiy2010 вне форума Ответить с цитированием
Старый 04.04.2018, 11:55   #10
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
И чо мне теперь, хром себе поставить? Оно мне надо?
А примеров с оконными функциями в интернетах - овер9000 штук. Вот, например, это.
Я понимаю, можно с любым другим приложением, чтоб я по аналогии сделал,но чтоб работало.
atihiy2010 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как из C# сделать, чтобы в Google Chrome.. worldbest C# (си шарп) 1 13.08.2013 15:44
Как сделать, чтобы Google Chrome корретно отображал text-shadow? pbko HTML и CSS 1 12.12.2011 17:51
Google Chrome Syltan Операционные системы общие вопросы 1 16.04.2010 08:18
Получить дескриптор окна другого приложения и сделать его активным Delphi 7 AndersX Помощь студентам 4 18.10.2009 09:32
Google Chrome HellMercenariess Софт 1 06.10.2009 15:53