会社で利用するソフトでgoogleMapを利用したかった。
Lazarus用のソースってあんまりないんだよなあ・・・
このfunctionは「http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201107/11070012.txt」から引用。
shelExecはmr.Xrayさんのサイトを参考
ありがとうございました。
{-------- googleMapを引数付きで開く-------}
uses shellAPI;
const
DEF_GMapURL = 'http://maps.google.com/maps?q='; {gmap}
DEF_IEpath = 'C:\Program Files\Internet Explorer\iexplore.exe'; {IEのパス}
var
IEpath : String; // IEのパス
gmapURL : String; // googleMapへのパラメータ文字列
function UrlEncode(const AStr,AppendNoConvChars: String; Space2Plus: Boolean): String;
const
NoConversionChars = [
'A'..'Z','a'..'z',
'0'..'9',
'-','_','.','!','*','''','(',')']; // '@', '$',];
var
Sp, Rp: PChar;
NoConversion: set of Char;
i: Integer;
begin
NoConversion := NoConversionChars;
for i := 1 to Length(AppendNoConvChars) do
NoConversion := NoConversion + [AppendNoConvChars[i]];
SetLength(Result, Length(AStr) * 3);
Sp := PChar(AStr);
Rp := PChar(Result);
while Sp^ <> #0 do
begin
if Sp^ in NoConversion then
Rp^ := Sp^
else
if (Sp^ = ' ') and (Space2Plus) then
Rp^ := '+'
else
begin
FormatBuf(Rp^, 3, '%%%.2x', 6, [Ord(Sp^)]);
Inc(Rp,2);
end;
Inc(Rp);
Inc(Sp);
end;
SetLength(Result, Rp - PChar(Result));
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
var
LhInstance : Cardinal;
addrText : string;
LParams : string;
begin
//起動アプリのパス
//googleMap + 住所パラメータ
idlCnt := 0; // 無操作秒数クリア
if (edit2.text = '') and (selectAp = 0)
then Exit;
if (qMode = 'F1') or (qMode = 'F2')
then addrText := d[selectAp].addr
else addrText := m[selectAp].addr1;
if edit2.text <> ''
then addrText := edit2.text;
edit2.text := '';
Clipboard.AsText := addrText;
LParams := GMapURL + UrlEncode(addrText,'/:',False);
dbg('IE: ' + IEpath);
dbg('Option:' + LParams);
LhInstance := ShellExecute(Handle,
'open',
PChar(IEpath),
PChar(LParams),
nil,
5); {本来は SW_SHOW:5 など 3は最大表示}
if LhInstance <= 32 then begin
showmessage('IEの起動に失敗しました'+NL+ IEpath +NL+ LParams);
end;
edit1.setfocus;
end;