Открыть длинный URL из программы

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Открыть длинный URL из программы

Сообщение Vadimus » 29.10.2012 20:24:49

Задача:
Открыть длинный URL из программы (win32)
Проблема:
Длинные URL обрезаются в браузере (Опера, Хром и т.д.) примерно по границе 255 байтов. Короткие открываются без проблем.
Пробовал:
Код: Выделить всё
ShellExecute(0, PChar('open'), PChar('explorer'), PChar(s), nil, 0);


Код: Выделить всё
    HProc:=TProcess.Create(nil);
    HProc.Executable:='explorer';
    HProc.Parameters.Text:=s;
    HProc.Execute;
    HProc.Free;


Предполагаю, что в Windows есть ограничение на длину параметра для запуска приложения. Я в ступоре. Что делать?
Vadimus
новенький
 
Сообщения: 19
Зарегистрирован: 11.02.2011 16:56:16

Re: Открыть длинный URL из программы

Сообщение B4rr4cuda » 29.10.2012 23:01:36

варианты:
- программно найти окошко ввода урла и вставить текст туда + имитировать нажатие ентера.
-программно создать ярлык и передать его в качестве параметра браузеру..
в общем извращаться надо..
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Открыть длинный URL из программы

Сообщение Vapaamies » 30.10.2012 00:01:10

Vadimus писал(а):Длинные URL обрезаются в браузере (Опера, Хром и т.д.) примерно по границе 255 байтов. Короткие открываются без проблем.

Мне кажется, что проблема на вашей стороне. В частности, могут использоваться ShortString -- string с явно заданным размером, либо если отключен {$H+}. В Windows проблемы могут наступать при ~1024 символах, но не ранее.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: Открыть длинный URL из программы

Сообщение Vadimus » 30.10.2012 10:06:51

B4rr4cuda писал(а):- программно найти окошко ввода урла и вставить текст туда + имитировать нажатие ентера.-программно создать ярлык и передать его в качестве параметра браузеру..в общем извращаться надо..


Геморрой... :(

Vapaamies писал(а):Мне кажется, что проблема на вашей стороне. В частности, могут использоваться ShortString -- string с явно заданным размером, либо если отключен {$H+}. В Windows проблемы могут наступать при ~1024 символах, но не ранее.


Из программы в ShellExecute и TProcess передаются нормальные строки - проверено (например писал в файл, любой длины строки пишутся ОК).
Vadimus
новенький
 
Сообщения: 19
Зарегистрирован: 11.02.2011 16:56:16

Re: Открыть длинный URL из программы

Сообщение PapaNT » 30.10.2012 10:20:28

У винды ограничения на длину параметра командной строки... Разрешено лишь 255 символов. В лоб задачу не решить.
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Открыть длинный URL из программы

Сообщение Vadimus » 30.10.2012 10:50:23

PapaNT писал(а):У винды ограничения на длину параметра командной строки... Разрешено лишь 255 символов. В лоб задачу не решить.


Видимо...

В общем, пока сделал через .url файлы, всё работает:

Код: Выделить всё
WriteURLFile(URL, 'tmp.url');
ShellExecute(0, 'open', 'explorer', 'tmp.url', nil, SW_SHOWNORMAL);


Код: Выделить всё
  procedure WriteURLFile(URL, FN :string);
  var
    f :TextFile;
    i :integer;
  begin
    AssignFile(f, FN);
    Rewrite(f);
    writeln(f, '[InternetShortcut]');
    writeln(f,  'URL='+URL);
    CloseFile(f);
  end;
Vadimus
новенький
 
Сообщения: 19
Зарегистрирован: 11.02.2011 16:56:16


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 211

Рейтинг@Mail.ru