Открыть браузер с адресом сайта
Модератор: Модераторы
- moskatov
- новенький
- Сообщения: 10
- Зарегистрирован: 30.10.2006 15:04:51
- Откуда: Россия
- Контактная информация:
Открыть браузер с адресом сайта
Здравствуйте.
Хочу перейти с Borland C++ на Lazarus. Есть вопрос.
Хочу при щелчке на компоненте label или button открыть браузер с адресом сайта. На Borland C++ это выглядит так:
ShellExecute(Handle,"open","http://www.lazarus.freepascal.org",NULL,NULL,SW_RESTORE);
На Borland Delphi тоже знаю как сделать. А вот на Лазаре – не знаю. SW_RESTORE в Lazarus, кажется, нет. Подскажите, пожалуйста, новичку.
Хочу перейти с Borland C++ на Lazarus. Есть вопрос.
Хочу при щелчке на компоненте label или button открыть браузер с адресом сайта. На Borland C++ это выглядит так:
ShellExecute(Handle,"open","http://www.lazarus.freepascal.org",NULL,NULL,SW_RESTORE);
На Borland Delphi тоже знаю как сделать. А вот на Лазаре – не знаю. SW_RESTORE в Lazarus, кажется, нет. Подскажите, пожалуйста, новичку.
В Params - имя html-файла
{$IFdef MSWindows}
{Case Win32Platform of
VER_PLATFORM_WIN32s: _HlpPrefixForBrowsers:=''; //System is Win32s.
VER_PLATFORM_WIN32_WINDOWS: _HlpPrefixForBrowsers:=''; //System is Windows 95.
VER_PLATFORM_WIN32_NT: _HlpPrefixForBrowsers:='file://'; //System is Windows NT.
end;//Case}
Case Win32Platform of
0: HlpPrefix:='';//System is Win32s.
1: HlpPrefix:='';//System is Windows 95.
2: HlpPrefix:='file://';//System is Windows NT.
end;//Case}
Params:=HlpPrefix+Params;
CommandLine:='explorer '+Params;
{$ENDIF MSWindows}
{$IFdef Linux}
Params:='file://'+Params;
CommandLine:='htmlview '+Params;
{$ENDIF Linux}
HProc:=TProcess.Create(nil);
HProc.CommandLine:=CommandLine;
HProc.Execute;
HProc.Free;
{$IFdef MSWindows}
{Case Win32Platform of
VER_PLATFORM_WIN32s: _HlpPrefixForBrowsers:=''; //System is Win32s.
VER_PLATFORM_WIN32_WINDOWS: _HlpPrefixForBrowsers:=''; //System is Windows 95.
VER_PLATFORM_WIN32_NT: _HlpPrefixForBrowsers:='file://'; //System is Windows NT.
end;//Case}
Case Win32Platform of
0: HlpPrefix:='';//System is Win32s.
1: HlpPrefix:='';//System is Windows 95.
2: HlpPrefix:='file://';//System is Windows NT.
end;//Case}
Params:=HlpPrefix+Params;
CommandLine:='explorer '+Params;
{$ENDIF MSWindows}
{$IFdef Linux}
Params:='file://'+Params;
CommandLine:='htmlview '+Params;
{$ENDIF Linux}
HProc:=TProcess.Create(nil);
HProc.CommandLine:=CommandLine;
HProc.Execute;
HProc.Free;
- moskatov
- новенький
- Сообщения: 10
- Зарегистрирован: 30.10.2006 15:04:51
- Откуда: Россия
- Контактная информация:
Здравствуйте.
Пишу под Win XP. Лазарь даёт ошибку (и в 98 и в XP SP2). Сообщает, что не знает идентификаторы HlpPrefix, Params, CommandLine, HProc. На верное что-то надо в uses добавить.
Для адреса в Web на Delphi было бы достаточно написать одну строчку:
ShellExecute(0, nil,'http://www.lazarus.freepascal.org',nil,nil,1);
А в Lazarus, как вижу, строк значительно больше.
Пишу под Win XP. Лазарь даёт ошибку (и в 98 и в XP SP2). Сообщает, что не знает идентификаторы HlpPrefix, Params, CommandLine, HProc. На верное что-то надо в uses добавить.
Для адреса в Web на Delphi было бы достаточно написать одну строчку:
ShellExecute(0, nil,'http://www.lazarus.freepascal.org',nil,nil,1);
А в Lazarus, как вижу, строк значительно больше.
moskatov писал(а):Здравствуйте.
Пишу под Win XP. Лазарь даёт ошибку (и в 98 и в XP SP2). Сообщает, что не знает идентификаторы HlpPrefix, Params, CommandLine, HProc. На верное что-то надо в uses добавить.
Для адреса в Web на Delphi было бы достаточно написать одну строчку:
ShellExecute(0, nil,'http://www.lazarus.freepascal.org',nil,nil,1);
А в Lazarus, как вижу, строк значительно больше.
Во-первых, я тебе бросил пример, работающий для обоих операционок для открытия файла в броузере. Сделано через TProcess так как в Линуксе ShellExecute работать не захотел.
Конкретно в твоей ситуации по-идее достаточно:
ShellExecute(0,PChar('open'),PChar('explorer'),PChar('http://www.lazarus.freepascal.org'),nil,5);
Открой хелп по делфи, почитай, какие параметры там должны быть. Нет делфи - посмотри исходники Лазаря (нажми контрол и кликни мышкой на ShellExecute). Разбирайся, учись.
ShellExecute(0,PChar('open'),PChar('explorer'),PChar(Params),nil,5);
Учи язык сначала.
Все что там не определено у тебя, это переменные
должны быть обьявлены в секции VAR
TProcess обьявлен в какомто юните который надо в uses добавить
смотри TProcces и F1
Все что там не определено у тебя, это переменные
должны быть обьявлены в секции VAR
Код: Выделить всё
var
HlpPrefix, Params, CommandLine:string;
HProc:TProcess;
TProcess обьявлен в какомто юните который надо в uses добавить
смотри TProcces и F1
- moskatov
- новенький
- Сообщения: 10
- Зарегистрирован: 30.10.2006 15:04:51
- Откуда: Россия
- Контактная информация:
Здравствуйте.
Учу потихоньку. Спасибо за совет.
ShellExecute и в Windows XP работать не хочет. Вписал:
ShellExecute(0,PChar('open'),PChar('explorer'),PChar('http://www.lazarus.freepascal.org'),nil,5);
Не компилирует, ошибка. Нажал Ctrl и кликнул на ShellExecute. Результатом было сообщение:
unit1.pas(40,1) Error: не найден идентификатор: ShellExecute
Пытался заменить ShellExecute на TProcess. Положил на форму компонент TProcess с вкладки System.
TProcess(0,PChar('open'),PChar('explorer'),PChar('http://www.lazarus.freepascal.org'),nil,5);
Результат: останавливается после цифры "0" и собщает "Unit1.pas(47,11) Fatal: Syntax error, ")" expected but "," found".
Написал, как указал tria, под Windows - всё работает и под XP и под 98:
{$IFdef MSWindows}
{Case Win32Platform of
VER_PLATFORM_WIN32s: _HlpPrefixForBrowsers:='http://'; //System is Win32s.
VER_PLATFORM_WIN32_WINDOWS: _HlpPrefixForBrowsers:='http://'; //System is Windows 95.
VER_PLATFORM_WIN32_NT: _HlpPrefixForBrowsers:='http://'; //System is Windows NT.
end;//Case}
Case Win32Platform of
0: HlpPrefix:='http://';//System is Win32s.
1: HlpPrefix:='http://';//System is Windows 95.
2: HlpPrefix:='http://';//System is Windows NT.
end;//Case}
Params:=HlpPrefix+'www.lazarus.freepascal.org';
CommandLine:='explorer '+Params;
{$ENDIF MSWindows}
HProc:=TProcess.Create(nil);
HProc.CommandLine:=CommandLine;
HProc.Execute;
HProc.Free;
Большое спасибо. Win 95 у меня нет.
SergKam писал(а):Учи язык сначала.
Учу потихоньку. Спасибо за совет.
ShellExecute и в Windows XP работать не хочет. Вписал:
ShellExecute(0,PChar('open'),PChar('explorer'),PChar('http://www.lazarus.freepascal.org'),nil,5);
Не компилирует, ошибка. Нажал Ctrl и кликнул на ShellExecute. Результатом было сообщение:
unit1.pas(40,1) Error: не найден идентификатор: ShellExecute
Пытался заменить ShellExecute на TProcess. Положил на форму компонент TProcess с вкладки System.
TProcess(0,PChar('open'),PChar('explorer'),PChar('http://www.lazarus.freepascal.org'),nil,5);
Результат: останавливается после цифры "0" и собщает "Unit1.pas(47,11) Fatal: Syntax error, ")" expected but "," found".
Написал, как указал tria, под Windows - всё работает и под XP и под 98:
{$IFdef MSWindows}
{Case Win32Platform of
VER_PLATFORM_WIN32s: _HlpPrefixForBrowsers:='http://'; //System is Win32s.
VER_PLATFORM_WIN32_WINDOWS: _HlpPrefixForBrowsers:='http://'; //System is Windows 95.
VER_PLATFORM_WIN32_NT: _HlpPrefixForBrowsers:='http://'; //System is Windows NT.
end;//Case}
Case Win32Platform of
0: HlpPrefix:='http://';//System is Win32s.
1: HlpPrefix:='http://';//System is Windows 95.
2: HlpPrefix:='http://';//System is Windows NT.
end;//Case}
Params:=HlpPrefix+'www.lazarus.freepascal.org';
CommandLine:='explorer '+Params;
{$ENDIF MSWindows}
HProc:=TProcess.Create(nil);
HProc.CommandLine:=CommandLine;
HProc.Execute;
HProc.Free;
Большое спасибо. Win 95 у меня нет.
Один из возможных алгоритмов поиска нужного юнита.
Задача: найти, в каком юните определена нужная нам функция (ShellExecute)
Решение:
1.Делаем поиск в файлах (из меню лазаря) в директории самого Лазаря. Текст для поиска - имя функции.
2.Находим места, где функция встречается.
3.Среди них выбираем то, где функция определена.
4. Этот юнит подключаем к нашей проге.
В твоем конкретном случае этот юнит - ShellApi. Добавь его в Юзез и будет тебе счастье.
п.с.
Только без обид. Твои вопросы "не выстраданные". Не похоже, чтобы ты бился над решением этих вопросов по нескольку часов.
На форуме люди дают направление для поиска, что назвается "куда копать" - и уже им за это спасибо, а не выкладывают готовое решение на блюдечке.
Задача: найти, в каком юните определена нужная нам функция (ShellExecute)
Решение:
1.Делаем поиск в файлах (из меню лазаря) в директории самого Лазаря. Текст для поиска - имя функции.
2.Находим места, где функция встречается.
3.Среди них выбираем то, где функция определена.
4. Этот юнит подключаем к нашей проге.
В твоем конкретном случае этот юнит - ShellApi. Добавь его в Юзез и будет тебе счастье.
п.с.
Только без обид. Твои вопросы "не выстраданные". Не похоже, чтобы ты бился над решением этих вопросов по нескольку часов.
На форуме люди дают направление для поиска, что назвается "куда копать" - и уже им за это спасибо, а не выкладывают готовое решение на блюдечке.
- moskatov
- новенький
- Сообщения: 10
- Зарегистрирован: 30.10.2006 15:04:51
- Откуда: Россия
- Контактная информация:
Здравствуйте!
С ShellApi всё работает. Спасибо.
Перед тем как задавать вопросы я скачал все темы форумов freepascal.ru. Скачал и всё прочитал. Что понял – это другой вопрос. Через Яндекс искал все доступные исходные тексты программ, написанных на Lazarus (например, ColorSnatch 1.0.5). Изучал их код. Пытался писать тестовую программку, чтобы разобраться как делать. На это ушло около недели. И только потом задал вопросы.
Знаю, вопросы глупые. Извиняюсь за беспокойство.
С ShellApi всё работает. Спасибо.
Перед тем как задавать вопросы я скачал все темы форумов freepascal.ru. Скачал и всё прочитал. Что понял – это другой вопрос. Через Яндекс искал все доступные исходные тексты программ, написанных на Lazarus (например, ColorSnatch 1.0.5). Изучал их код. Пытался писать тестовую программку, чтобы разобраться как делать. На это ушло около недели. И только потом задал вопросы.
Знаю, вопросы глупые. Извиняюсь за беспокойство.
moskatov писал(а):Здравствуйте!
С ShellApi всё работает. Спасибо.
Перед тем как задавать вопросы я скачал все темы форумов freepascal.ru. Скачал и всё прочитал. Что понял – это другой вопрос. Через Яндекс искал все доступные исходные тексты программ, написанных на Lazarus (например, ColorSnatch 1.0.5). Изучал их код. Пытался писать тестовую программку, чтобы разобраться как делать. На это ушло около недели. И только потом задал вопросы.
Знаю, вопросы глупые. Извиняюсь за беспокойство.
Понятно.
Я бы посоветовал купить книги по Паскалю или Делфи и начать с их изучения.
Что Делфи, что Лазарус для тебя будет еще долго одинаково. Поэтому наверное лучше скачать Турбо Делфи и поработать в нем. Для новичка в ней работать легче. Хелп лучше, отладчик гораздо удобнее.
