Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];

Вниз

Запуск Оперы   Найти похожие ветки 

 
Seldon   (2003-07-20 21:33) [0]

Здрасьте!
Мне надо запускать оперу. Я делаю так:
ShellExecute(0,"open",PAnsiChar(OperaPath),PAnsiChar(""file://"+HTMLFileName+"""),nil,sw_Show);
Это работает, но если в HTMLFileName есть русские символы, Opera говорит, мол файл не найден, а в строке адреса примерно такое:
file://localhost/c:/Documents and Settings/Seldon/Iie aieoiaiou/$Preview1.html
Насколько я понимаю, Opera принимает имя файла в Unicode, а я даю ей в ANSI. Как перекодировать ANSI в Unicode я знаю, но ShellExecute не хочет брать ни PWChar, ни WideString. Как мне быть?


 
Spawn   (2003-07-20 21:42) [1]

Не знаю поможет ли, но может использовать Unicode-версию ShellExecute?

function ShellExecuteW; external shell32 name "ShellExecuteW";


 
Marser   (2003-07-20 22:16) [2]

winexec


 
Seldon   (2003-07-21 01:15) [3]

>ShellExecuteW
Делаю так: ShellExecuteW(0,"open",Str2Wide(OperaPath),Str2Wide(""file://"+HTMLFileName+"""),nil,sw_Show);
Где Str2Wide:
function Str2Wide(Str:String):PWideChar;
var
R:WideString;
begin
SetLength(R,Length(Str));
MultiByteToWideChar(0,0,PAnsiChar(@Str[1]),-1,PWideChar(@R[1]),Length(Str));
Result:=PWideChar(R);
end;
Не работает! Та же байда.
Ещё заметил, что если в момент вызова опера уже запущена, то всё пучком. Можно, конечно, запускать оперу, ждать немного и запускать файл. Но это криво как-то.


 
VMcL   (2003-07-21 09:40) [4]

ShellExecuteW(0, "open", PWideChar(WideString(OperaPath)), PWideChar(WideString(""file://" + HTMLFileName + """)), nil, sw_Show);


 
VMcL   (2003-07-21 09:51) [5]

Не прогнал. Так не пойдёт. Нужно русские буквы передавать в том виде (не помню, как называется), как все браузеры передают:
%xx%yy

Причем, в UTF-8. Например, буква "Г" -> %D0%93


 
VMcL   (2003-07-21 09:58) [6]

Вот функция перекодирования:

function ForOpera(S: AnsiString): AnsiString;
var
U: UTF8String;
I: Integer;
begin
U := AnsiToUtf8(S);

Result := "";
for I := 1 to Length(U) do
begin
Result := Result + "%" + Format("%.2X", [Byte(U[I])])
end;
end;


 
Ivolg   (2003-07-21 11:30) [7]

вот тебе код который открывает любой файл нужно просто указать постле точки какой это файл например Test.mp3,test.txt,opera.exe и т.д.Код: ShellExecute(0,
"open",
"C:\Opera.exe",
nil,
nil,
SW_SHOWNORMAL);

end;

uses:ShellApi,


Обязателбно в столбик как показано. Удачи!


 
VMcL   (2003-07-21 13:27) [8]

>Ivolg © (21.07.03 11:30)

Посты читал?


 
Ivolg   (2003-07-21 13:49) [9]

У меня всё это работает! VMcL может у тебя не работает?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-10281
Beginner3000
2003-07-16 00:42
2003.08.04
Вопросы по строкам


14-10422
ruslan_as
2003-07-17 17:55
2003.08.04
Как уравнять значения DBLookupComboBox1 и DBLookupComboBox2


14-10411
tovSuhov
2003-07-17 13:36
2003.08.04
Вопрос немного не из той степи...


14-10354
Andryk
2003-07-18 17:51
2003.08.04
Ура наконец-то нашли способ боротся со спамом :о))


4-10521
-=IGA=-
2003-06-03 08:29
2003.08.04
Использование SetTimer и KillTimer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский