Форум: "Прочее";
Текущий архив: 2010.11.21;
Скачать: [xml.tar.bz2];
ВнизКак запустить lnk сети программно? Найти похожие ветки
← →
Кто б сомневался © (2010-08-07 00:09) [0]Здравствуйте, подскажите ньюанс.
Вроде все просто, но одновременно сложно.
Есть ярлык lnk при нажатии на который включается интернет. Но если его запускать программно через ShellExecute вываливается ошибка (неподдерживаемый тип файла). Как его запустить программно?
← →
Rouse_ © (2010-08-07 00:20) [1]Вытащить из ярлыка путь к исполняемому файлу и запустить его?
← →
Кто б сомневался © (2010-08-07 00:29) [2]
> Вытащить из ярлыка путь к исполняемому файлу и запустить
> его?
Это ярлык для запуска интернета. Там GUID.
Вытаскивать пути по GUID работает, но только если GUID указывает на файл. Здесь же он не указывает на файл.
← →
Кто б сомневался © (2010-08-07 01:29) [3]Возможно кто то знает как включить выбранное соединение программно?
К примеру одно из выбранных в апплете Network Connections.
← →
antonn © (2010-08-07 01:53) [4]
> Возможно кто то знает как включить выбранное соединение
> программно?
> К примеру одно из выбранных в апплете Network Connections.
>
мож так? http://forum.vingrad.ru/topic-72772.html
← →
Дмитрий С © (2010-08-07 02:55) [5]ShellExecute должен запускать любой ярлык, разве нет?
← →
Кто б сомневался © (2010-08-07 03:29) [6]
> Дмитрий С © (07.08.10 02:55) [5]
Нет.
Rouse_ © (07.08.10 00:20) [1]
Можно ли сделать при помощи WNet функций подобную вещь - запустить соединение? Я нашел на сайте ваш пример с этим api . Можно ли собрать список подключений? Т.е. те ярлыки что лежат в Network Connections
← →
Кто б сомневался © (2010-08-07 03:33) [7]
> Т.е. те ярлыки что лежат в Network Connections
Название подключений можно собрать и с реестра. Но вот как их запустить..
> antonn © (07.08.10 01:53) [4]
Он платный этот компонент. И плюс тяжелый - там куча левого. Не нужен весь тот огромнейший фукнционал который он дает.
← →
Димка На (2010-08-07 04:21) [8]Завтра проверю, имхо, должен запустить любой.
← →
grisme © (2010-08-07 08:33) [9]rasdial же.
← →
antonn © (2010-08-07 13:57) [10]
> Он платный этот компонент. И плюс тяжелый - там куча левого.
> Не нужен весь тот огромнейший фукнционал который он дает.
>
там и про интерфейс говорится, не только про компонент
> grisme © (07.08.10 08:33) [9]
>
> rasdial же.
а если в "сетевых" только "подключение по локальной сети"?
← →
grisme © (2010-08-07 15:09) [11]
> antonn © (07.08.10 13:57) [10]
>
> а если в "сетевых" только "подключение по локальной сети"?
>
[телепатор] думаю, rasdial тут вполне так подойдёт. [/телепатор]
ибо такие "подключения по локальной сети", при однократном включении, поднимаются автоматически (по дефолту, конечно же). ^^
← →
Кто б сомневался © (2010-08-07 19:14) [12]Вобщем с Ras я разбирался, он чет не хотел работать, скорее всего из за того, что написан для ранних Delphi - там Ansi я реплэйсом заменим все на Ansi все равно не работает. Разбиратся я особо не хотел, т.к. модуль там большой.
Вобщем взял я INetConnection. Простой и рабочий. Все включает выключает, и как раз отображается текущие сетевые подключения из Network Connections.
Вот пример
procedure TForm2.GetConnectionList(Strings : TStrings);
var
pEnum: IEnumVariant;
vNetCon: OleVARIANT;
dwRetrieved: Cardinal;
pUser: NETCONLib_TLB.PUserType1;
NetCon : INetConnection;
begin
Strings.Clear;
pEnum := ( NetSharingManager.EnumEveryConnection._NewEnum as
IEnumVariant);
while (pEnum.Next(1, vNetCon, dwRetrieved) = S_OK) do
begin
(IUnknown(vNetCon) as INetConnection).GetProperties(pUser);
NetCon := (IUnknown(vNetCon) as INetConnection);
//if (pUser.Status in [NCS_DISCONNECTED, NCS_CONNECTING])
// and (pUser.MediaType in [NCM_LAN,NCM_SHAREDACCESSHOST_LAN,NCM_ISDN] ) then
begin
Strings.Add(pUser.pszwName );
//IdList.Add(GuidToString(pUser.guidId));
end;
end;
end;
Модуль NETCONLib_TLB - генерится как Type Library
← →
Кто б сомневался © (2010-08-07 19:16) [13]Еще не забудьте activeX добавить.
> Модуль NETCONLib_TLB
NETCONLib_TLB.pas
← →
Дмитрий С © (2010-08-08 22:56) [14]Я хз как ты делал. Вот этот простой код работает:
ShellExecute(
Handle,
nil,
"d:\test.lnk",
nil,
nil,
SW_NORMAL
)
d:\test.lnk - ярлык на подключение.
Это работает даже в 7ке (только требует подтверждения).
← →
Кто б сомневался © (2010-08-09 17:15) [15]
> Дмитрий С © (08.08.10 22:56) [14]
Поверь как я только не делал.
Запустил твой пример, скопипастил. Отключил инет. Не работает. Возвращает ту же ошибку.
← →
Кто б сомневался © (2010-08-09 17:17) [16]Кстати, возможно это связано с битностью. Т.к. у меня x64 XP. Если запускать ее в тотал коммандере - то он закрывается. Если в Explorer то все ок. думаю в Win 7 x64 будет также.
← →
Кто б сомневался © (2010-08-09 17:18) [17]Если запускать через Выполнить - выбрасывает Windows cannot open this file
← →
Кто б сомневался © (2010-08-09 17:20) [18]Короче универсальное решение уже найдено - INetConnection, и оно точно будет работать на всех ОС > w2k. Плюс очень простое.
← →
Anatoly Podgoretsky © (2010-08-09 19:22) [19]> Кто б сомневался (09.08.2010 17:18:17) [17]
Так тут не до программирования.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.11.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.004 c