Вверх ↑
Этот топик читают: Гость
Ответов: 2059
Рейтинг: 131
#16: 2017-11-25 15:56:32 ЛС | профиль | цитата
Про ShellExecute.
hwnd
- Хендл родительского окна. Определяет родительское окно. Это окно получает любые окна сообщений, которые генерирует приложение. Например, приложение может сообщать об ошибке при помощи окна сообщений.

3042, Можно попробовать вместо '0' подставить Хендл открытого браузера.
Что-то тира этого http://www.cyberforum.ru/delphi-beginners/thread1932221.html
Конечно тут другие задачи, но понятно как быть со вкладками.
Но это я так, гадание на кофейной гуще.
К сожалению я проверить не могу, по причине того, что всё снёс кроме хрома.


--------------------------------------------------------------------------------------

В случае Sersey надо сделать хром по умолчанию и установить параметр -"открывать в новой вкладке".

P.S.
3042 писал(а):
а если указать так: ShellExecute(0, 'open', PChar(ToStringEvent(Param2)), PChar(ToStringEvent(Param1)), nil, SW_SHOWNORMAL);, то при каждом нажатии кнопки открывается новое окно, а не вкладка.


У меня открывается новая вкладка при таких параметрах функции:
ShellExecute(0, 'open', 'c:\Program Files (x86)\Google\Chrome\Application\chrome.exe', 'https://www.youtube.com/', nil, SW_SHOWNORMAL);

Редактировалось 10 раз(а), последний 2017-11-25 22:36:14
карма: 6

0
Ответов: 537
Рейтинг: 14
#17: 2017-11-25 17:33:02 ЛС | профиль | цитата
Подставить Hd тоже не работает, неужели в хайясме нельзя такое сделать.
Дилма
карма: 4

0
Ответов: 2059
Рейтинг: 131
#18: 2017-11-25 17:36:42 ЛС | профиль | цитата
Sersey писал(а):
Подставить Hd тоже не работает

А как ты его получил?
Набросай схемку.
Или посмотрел другой программой и подставил в IC?

Редактировалось 2 раз(а), последний 2017-11-25 17:42:29
карма: 6

0
Ответов: 1925
Рейтинг: 172
#19: 2017-11-26 11:25:14 ЛС | профиль | цитата
flint2,
Add(InlineCode,12576520,504,392)
{
WorkPoints=#1:a|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug, Windows, ShellApi;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: //:THI_Event;|0:|42: procedure a(var dt:TData; index:word);|0:|5: end;|0:|14:implementation|0:|24:procedure THiAsmClass.a;|5:begin|89: //ShellExecute(ToInteger(dt), PChar(Action), PChar(Fn), PChar(Params), Dir, _prop_Mode);|126: ShellExecute(ToInteger(dt), 'open', 'C:\Program Files\Internet Explorer\iexplore.exe', 'C:\books1.html', nil, SW_SHOWNORMAL);|17: //_hi_OnEvent();|4:end;|0:|4:end.|
}
Add(Button,15425360,315,280)
{
Left=10
Top=10
link(onClick,434025:doEnum,[])
}
Add(WinEnum,434025,399,280)
{
link(onFindWindow,4453174:In,[])
}
Add(WinTools,12788067,399,343)
{
Point(FileName)
link(Handle,4605163:Var2,[])
}
Add(If_else,15541528,406,392)
{
Op2=String(C:\Program Files\Internet Explorer\iexplore.exe)
link(onTrue,11767257:doData,[])
link(Op1,12788067:FileName,[])
}
Add(LineBreak,5383107,364,392)
{
link(Out,15541528:doCompare,[])
Primary=[4453174,77,-112]
}
Add(DoData,11767257,455,392)
{
link(onEventData,12576520:a,[])
link(Data,4605163:Var3,[(461,327)])
}
Add(GetDataEx,4605163,399,322)
{
link(Data,434025:Handle,[])
}

Бесполезно. Может, это IE только такой упрямый, но хрома у меня нет.

Редактировалось 1 раз(а), последний 2017-11-26 11:25:26
карма: 9
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#20: 2017-11-26 12:34:26 ЛС | профиль | цитата
А ничего, что у браузеров разные команды для запуска в новом окне. Для IE это -new, для Chrome это --new-window? Это к вопросу об открытии не в отдельной вкладке, а в отдельном окне.
карма: 22

0
Ответов: 2059
Рейтинг: 131
#21: 2017-11-26 13:50:20 ЛС | профиль | цитата
nesco писал(а):
А ничего, что у браузеров разные команды для запуска в новом окне.

Для хрома ничего.
Если вызывать без адреса, то откроется новое окно, если с адресом, то новая вкладка.
А вот для IE.. Его для начала надо на компьютере иметь.

Чего то года три назад прописал в реестре в сердцах, теперь что устанавливай, что не устанавливай, всё одно - как его и нет.

P.S.
Схемка не ловит "хром".
по заголовкам

Пуск
-
Form
Form
Конструктор [C:\Programer\HiAsm\Project63.sha]
Hiasm
Total Commander 8.01 - EKTOS A/S
Новая вкладка - Google Chrome
Program Manager
по пути к файлу

-
-
C:\Programer\HiAsm\Project63.exe
C:\Programer\HiAsm\Project63.exe
C:\Programer\HiAsm\HiAsm.exe
C:\Programer\HiAsm\HiAsm.exe
C:\Total Commander\TOTALCMD.EXE
- здесь должен быть хром
C:\Users\..\AppData\Roaming\uTorrent\updates\3.4.9_43388\utorrentie.exe

Редактировалось 2 раз(а), последний 2017-11-26 14:14:31
карма: 6

0
Ответов: 1925
Рейтинг: 172
#22: 2017-11-26 16:38:13 ЛС | профиль | цитата
Кстати, если использовать "открыть с помощью...", то открывается именно в новой вкладке, даже для браузера "не по умолчанию". Интересно, какая команда при этом вызывается?


Пробовал получить командную строку - тоже толку нет, никаких параметров в ie не передаётся при открытии файла.

Add(Button,15425360,301,532)
{
Left=10
Top=10
link(onClick,16152629:doEnum,[])
}
Add(EnumProcess,16152629,371,532)
{
Point(doGetCmdLine)
Point(onGetCmdLine)
link(onProcess,16152629:doGetCmdLine,[(415,538)(415,522)(358,522)(358,559)])
link(ID,16152629:CurrentID,[(377,520)(365,520)(365,576)(377,576)])
link(onGetCmdLine,578325:doAdd,[])
}
Add(ListBox,578325,462,539)
{
Top=42
Width=619
Height=230
Align=4
}
карма: 9
0
Ответов: 2059
Рейтинг: 131
#23: 2017-11-26 17:27:28 ЛС | профиль | цитата
В списке присутствует всё, что угодно кроме хрома.
Думал что-то в системе не работает...
Попробовал в СИ посмотреть процессы - всё есть. Если не забуду вернусь к этому вопросу, или если приспичит.
Для того, чтобы вопросом темы заниматься, нужно иметь два этих браузера, а сее не возможно.
Предлагаю направить усилия в более рациональное русло.
P.S.
В диспетчере задач Windows аж пять процессов Chrome.

Редактировалось 8 раз(а), последний 2017-11-26 18:18:33
карма: 6

0
Ответов: 16884
Рейтинг: 1239
#24: 2017-11-26 18:48:31 ЛС | профиль | цитата
flint2 писал(а):
В диспетчере задач Windows аж пять процессов Chrome.
У меня семь.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 2059
Рейтинг: 131
#25: 2017-11-26 21:04:07 ЛС | профиль | цитата
Tad, а скажи пожалуйста, у тебя по схеме выше, Chrome есть в списке?
карма: 6

0
Ответов: 1925
Рейтинг: 172
#26: 2017-11-27 09:49:59 ЛС | профиль | цитата
О! Кажется, нашёл решение! DDE-клиент нам поможет.

Add(Button,15425360,350,497)
{
Left=10
Top=10
Data=String("http://ya.ru",,-1,,,,,)
link(onClick,15648708:doEvent1,[])
}
Add(DDEClient,16652459,483,497)
{
ServiceName="IExplore"
TopicName="WWW_OpenURL"
ServerApp="C:\Program Files\Internet Explorer\IEXPLORE.EXE"
Point(doExecute)
}
Add(Hub,15648708,406,497)
{
link(onEvent1,16652459:doOpenLink,[])
link(onEvent2,16652459:doExecute,[(452,510)(452,531)])
}

Теперь открываются именно новые вкладки IE.
Вот как узнать, какие параметры нужны компоненту:

Там в ddeexec сама команда прописана, а Application&Topic - параметры компонента.

Для FF ddeexec вроде нету, но там можно указать параметры командной строки:
https://developer.mozilla.org/ru/docs/Mozilla/Command_Line_Options

Как у вас для Хрома, есть такое в ddeexec?
карма: 9
0
Ответов: 2059
Рейтинг: 131
#27: 2017-11-27 15:53:59 ЛС | профиль | цитата
3042 писал(а):
Как у вас для Хрома, есть такое в ddeexec?

Есть.

Но я опять чего-то не догоняю.
Правильно я понимаю, что вся задача состоит в том, чтобы открыть новые вкладки из командной строки в IE?

У меня давно нет IE, по этому делаю умозрительные выводы:
Раз есть ключ -new, который запускает новое окно IE в отдельном процессе, то по умолчанию IE должен добавлять новые вкладки, или он заменяет текущую?
Аналогично работает ключ --new-window в Chromium, а по умолчанию прибавляет вкладки.

Ключи IE

— iexplore.exe url, в этом случае будет просто открыт браузер с указанным адресом, пример iexplore.exe /
— iexplore.exe -extoff позволит запустить браузер без надстроек
— iexplore.exe -new этот ключ позволит запустить новое окно IE в отдельном процессе
— iexplore.exe -nohome с помощью этого ключа, запуск браузера будет без каких либо страниц, что интересно, запуск быстрее даже когда в качестве домашней странице указано about:blank
— iexplore.exe -nomerge этот ключ используется для запуска новой сессии, к примеру чтобы быть одновременно сразу в двух аккаунтах социальной сети
— iexplore.exe -k даст возможность запустить браузер на весь экран (kiosk mode)
— iexplore.exe -slf этот ключ используется, как я понял, для принудительного открытия домашней страницы
— iexplore.exe -embedding ключ позволит запустить объект браузера IE без визуального отображения страницы
— iexplore.exe -private запуск браузера в приватном режиме, довольно удобный ключ
Ключи Chromium, тут побольше будет.

https://olegon.ru/showthread.php?t=17073
[url]https://webcache.googleusercontent.com/search?q=cache:Q0vRfPTxLbsJ:https://peter.sh/experiments/chromium-command-line-switches/+&cd=1&hl=ru&ct=clnk&gl=ru[/url]
https://elims.org.ua/blog/sovety-po-ispolzovaniyu-google-chrome/

Следовательно:
Открыть сайт в новом окне Chromium.
ShellExecute(0, 'open', 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', '--new-window http://forum.hiasm.com/topic/66757/1',, nil, SW_SHOWNORMAL);

Открыть сайт в новой вкладке Chromium.
ShellExecute(0, 'open','C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', 'http://forum.hiasm.com/topic/66757/1',, nil, SW_SHOWNORMAL);

Открыть сайт в новом окне IE
.ShellExecute(0, 'open', 'c:\Program Files (x86)\Internet Explorer\iexplore.exe', '-new http://forum.hiasm.com/topic/66757/1',, nil, SW_SHOWNORMAL);

Открыть сайт в новой вкладке IE.
ShellExecute(0, 'open','C:\Program Files (x86)\Google\Chrome\Application\iexplore.exe', 'http://forum.hiasm.com/topic/66757/1',, nil, SW_SHOWNORMAL);

Открыть сайт в браузере по умолчанию.
ShellExecute(0, 'open','http://forum.hiasm.com/topic/66757/1',, nil, SW_SHOWNORMAL);
Аналогично с компонентом WinExec.

P.S.
Кстати, чтобы не лазить в реестр, можно установить Chrome по умолчанию в командной строке --make -default-browser.
Sersey, примерь.

Add(MainForm,2953706,21,105)
{
}
Add(Button,6857501,140,308)
{
Left=15
Top=50
Width=85
Caption="Browser"
link(onClick,9268460:doWork1,[(205,314)(205,342)])
}
Add(Edit,4732400,427,224)
{
Left=120
Top=85
Width=225
Text="http://www.povarenok.ru/recipes/show/128373/"
}
Add(InlineCode,9268460,238,336)
{
WorkPoints=#7:doWork1|7:doWork2|7:doWork3|7:doWork4|
EventPoints=#6:onTrue|0:|
DataPoints=#6:Param1|6:Param2|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,ShellAPI,Windows,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|8: |10: public|21: Param1: THI_Event;|22: Param2: THI_Event; |19: onTrue: THI_Event;|3: |50: Procedure doWork1(var _Data:TData; Index:Word); |49: Procedure doWork2(var _Data:TData; Index:Word);|49: Procedure doWork3(var _Data:TData; Index:Word);|49: Procedure doWork4(var _Data:TData; Index:Word);|5: end;|0:|2: |15: implementation|3: |30:Procedure THiAsmClass.doWork1;|0:|5:begin|0:|104:ShellExecute(0, 'open', PChar(ToStringEvent(Param2)), PChar(ToStringEvent(Param1)), nil, SW_SHOWNORMAL);|30: _hi_OnEvent(onTrue,'OK') ;|7: end;|31:Procedure THiAsmClass.doWork2; |5:begin|0:|80:ShellExecute(0, 'open', PChar(ToStringEvent(Param1)), nil, nil, SW_SHOWNORMAL); |30: _hi_OnEvent(onTrue,'OK') ;|7: end;|3: |32: Procedure THiAsmClass.doWork3; |5:begin|0:|122:ShellExecute(0, 'open', PChar(ToStringEvent(Param2)),PChar('--new-window ' + ToStringEvent(Param1)), nil, SW_SHOWNORMAL); |30: _hi_OnEvent(onTrue,'OK') ;|9: end; |32: Procedure THiAsmClass.doWork4; |5:begin|0:|114:ShellExecute(0, 'open', PChar(ToStringEvent(Param2)),PChar('-new ' + ToStringEvent(Param1)), nil, SW_SHOWNORMAL); |30: _hi_OnEvent(onTrue,'OK') ;|12: end; |0:|4:end.|
link(Param1,4732400:Text,[(244,303)(433,303)])
link(Param2,14267906:Text,[(251,300)(238,300)])
}
Add(Edit,14267906,232,231)
{
Left=120
Top=50
Width=225
Text="c:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
}
Add(Button,4272316,140,364)
{
Left=15
Top=90
Width=85
Caption="По умолчанию"
link(onClick,9268460:doWork2,[(190,370)(190,349)])
}
Add(Button,5819255,140,413)
{
Left=20
Top=125
Width=75
Caption="New chrome"
link(onClick,9268460:doWork3,[(205,419)(205,356)])
}
Add(Button,15280467,142,456)
{
Left=20
Top=155
Width=75
Caption="New IE"
link(onClick,9268460:doWork4,[(206,462)(206,363)])
}


Редактировалось 7 раз(а), последний 2017-11-27 17:06:12
карма: 6

0
Ответов: 1925
Рейтинг: 172
#28: 2017-11-27 21:56:36 ЛС | профиль | цитата
flint2 писал(а):
Правильно я понимаю, что вся задача состоит в том, чтобы открыть новые вкладки из командной строки в IE?

Да. Но не только для IE, а и для других браузеров тоже.

flint2 писал(а):
Раз есть ключ -new, который запускает новое окно IE в отдельном процессе, то по умолчанию IE должен добавлять новые вкладки, или он заменяет текущую?

Если IE браузер не по умолчанию, то ShellExecute(0, 'open','C:\Program Files (x86)\Google\Chrome\Application\iexplore.exe', 'http://forum.hiasm.com/topic/66757/1',, nil, SW_SHOWNORMAL); откывает новое окно. У меня так (WinXP SP3 IE8).

Хрома нету, так что не проверял.

А вообще, ТС уже куда-то пропал. Или нет?
карма: 9
0
Ответов: 2059
Рейтинг: 131
#29: 2017-11-27 22:34:39 ЛС | профиль | цитата
Если IE браузер не по умолчанию, то ShellExecute(0, 'open','C:\Program Files (x86)\Google\Chrome\Application\iexplore.exe', 'http://forum.hiasm.com/topic/66757/1',, nil, SW_SHOWNORMAL); открывает новое окно. У меня так (WinXP SP3 IE8).
Понимаю, что при уже открытом IE.
Просто так ключ "-new " не сделали бы, значит какие-то установки, галочка поставлена в IE, что без команды открывает новое окно.
3042 писал(а):
У меня так (WinXP...

Ты крутой! Я тоже хотел оставить...
Я за своими сыновьями и внуками донашиваю все железо и винты с ...
По этому даже десятка была, но винт переставил и на семёрке сейчас.
А недавно видеокарта перепала...
А вообще, ТС уже куда-то пропал. Или нет?

В процессе.
Я видел, что он смотрел нашу писанину.
С чего начали к тому-же и пришли. Нельзя же все браузеры построить в одну шеренгу.
Кто чего может, какой браузер, так и работает - ни больше, не меньше.
В общем всё разжованно и надо делать всё по месту жительства!
Всё было ясно в первых постах и схемах. Просто они в абстрактном виде, а амуницию подгонять надо по месту.

Редактировалось 15 раз(а), последний 2017-11-28 00:50:49
карма: 6

0
29
Сообщение
...
Прикрепленные файлы
(файлы не залиты)