Что нового

[Окна, Диалоги] Как закрыть окно Chrome, чтобы он корректно открывал преыдущую сессию

evgen_vasgen

Новичок
Сообщения
19
Репутация
0
Добрый день. В далеком 2009г. по вот этому адресу http://autoit-script.ru/index.php/topic,138.0.html велось обсуждение вопроса на тему как отловить окно Google Chrome.
Действительно, указанный ниже скрипт (здесь представлена только часть основного скрипта) в моей доработке, закрывает окно, но есть одно но.

Код:
If WinExists('[CLASS:Chrome_WidgetWin_1]') Then
$List = WinList('[CLASS:Chrome_WidgetWin_1]')
For $i = 1 To $List[0][0]
    If BitAND(WinGetState($List[$i][1]), 2) Then
	 $iWinPid_c = WinGetProcess ($List[$i][1]); определяем PID окна
	 $schromePath = _WinAPI_GetProcessFileName($iWinPid_c); определяем путь к исполняемому файлу
	 ProcessClose ($iWinPid_c); убиваем процесс 
	ProcessWaitClose($iWinPid_c)
	Run($sStart&" "&$schromePath); Даем команду на запуск хрома в песочницу
    EndIf
Next
EndIf



При открытии нового окна, но уже в программе Sandboxie (впрочем не только в программе, но и при простом перезапуске с использованием этого участка скрипта) хром не не открывает вкладки открытые в прошлый раз. Я так понимаю, что хрому не нравиться корявое завершение работы пользователем и он возвращается к некому своем дефолтному виду. Даже если попробовать дважды запустить хром, то он в первом окне восстановит все предидущие вкладки, а при запуске еще одного хрома (при условии, что один хром уже запущен) он просто вернет обычную главную страницу.
Весь вопрос в том, что мне хотся найти способ правильного перезапуска хрома, но уже в песочнице и с подхватом предыдущего сеанса работы. Подмогет кто-нить?
 

sngr

AutoIT Гуру
Сообщения
985
Репутация
392
Вместо ProcessClose нужно использовать WinClose.
 
Автор
E

evgen_vasgen

Новичок
Сообщения
19
Репутация
0
WinClose пробовал изначально, он вообще окно хрома не закрывает.
 

sngr

AutoIT Гуру
Сообщения
985
Репутация
392
WinClose - это аналог нажатия на крестик в правом верхнем углу. Если хром по нажатию на крестик просто сворачивается, посмотри в настройках - возможно это можно поменять. Также у оперы возможно повесить на гор клавишу выход, полистай настройки может есть такое и у хрома.
 
Автор
E

evgen_vasgen

Новичок
Сообщения
19
Репутация
0
sngr
Беда в том, что при нажатии на крестик хром у меня выключается без проблем. И без дополнительных вопросов. А WinClose не отрабатывает как положено. Может там с окнами какая-нить хитрость заложена? Всё серое вещество этот хром мне вынес наружу.
 

sngr

AutoIT Гуру
Сообщения
985
Репутация
392
Приведи сюда то что кажет awinfo в окне хрома.
 
Автор
E

evgen_vasgen

Новичок
Сообщения
19
Репутация
0
Кажет вот чего:
Код:
>>>> Window <<<<
Title:	Яндекс - Google Chrome
Class:	Chrome_WidgetWin_1
Position:	9, 5
Size:	1050, 840
Style:	0x16CF0000
ExStyle:	0x00000100
Handle:	0x000805C4

>>>> Control <<<<
Class:	
Instance:	
ClassnameNN:	
Name:	
Advanced (Class):	
ID:	
Text:	
Position:	
Size:	
ControlClick Coords:	
Style:	
ExStyle:	
Handle:	

>>>> Mouse <<<<
Position:	930, 16
Cursor ID:	0
Color:	0xA5BFE4

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
Яндекс
www.ya.ru


>>>> Hidden Text <<<<
 

sngr

AutoIT Гуру
Сообщения
985
Репутация
392
Код:
WinClose('[REGEXPCLASS:Chrome_WidgetWin.*]','')
ControlSend('[REGEXPCLASS:Chrome_WidgetWin.*]','','','!{f4}')

Пробуй то али это.
 
Автор
E

evgen_vasgen

Новичок
Сообщения
19
Репутация
0
Оба работают. Только первый быстрее свое дело отрабатывает.
Подскажите как можно упростить ту часть скрипта которую я привел вначале с учетом кода:
Код:
WinClose('[REGEXPCLASS:Chrome_WidgetWin.*]','')
 

sngr

AutoIT Гуру
Сообщения
985
Репутация
392
А что именно должен делать скрипт?


Добавлено: [time]1349699365[/time]
Код:
If WinExists('[REGEXPCLASS:Chrome_WidgetWin.*]') Then
	While 1
	WinClose('[REGEXPCLASS:Chrome_WidgetWin.*]','')
sleep(200)
	If @error Then ExitLoop
WEnd
EndIf
 
Автор
E

evgen_vasgen

Новичок
Сообщения
19
Репутация
0
Спасибо. Вроде у самого получилось оптимизировать.
Тема закрыта
 
Верх