Webで公開しているソフトウェアがあるとします。
そのソフトウェアを起動(or 『最新版を確認する』のようなメニューを選択)したときに、
Web上に最新版が出ているかどうかを確認するには、どのようにすればいいのでしょうか?
フリーソフトを使っていると、たまにこういう機能を持ったソフトに出会います。
最新版の確認が手軽に出来て便利だと思うし、なんかかっこいいので、
自分のにもこの機能を持たせたいです。
一応、wininetとかを使うのだろうという目星はついているのですが、
どのようにプログラムを組めばよいのかよくわかりません。
###タイトルは、少し分かりづらいかもしれませんが、うまい表現方法が思い浮かばなかったもので・・・・・・。
最新版の確認について
ちょっと時間が無いので詳細は省きますが
最新版のバージョン情報だけ書いたtxtを別にWebで公開しておいて
それをInternetReadFileで読んで自分のバージョンと照合するのが良いかと思われます
http://www.geocities.jp/wininet_dll_jp/ ... etReadFile
最新版のバージョン情報だけ書いたtxtを別にWebで公開しておいて
それをInternetReadFileで読んで自分のバージョンと照合するのが良いかと思われます
http://www.geocities.jp/wininet_dll_jp/ ... etReadFile
> ちょっと時間が無いので詳細は省きますが
> 最新版のバージョン情報だけ書いたtxtを別にWebで公開しておいて
> それをInternetReadFileで読んで自分のバージョンと照合するのが良いかと思われます
>http://www.geocities.jp/wininet_dll_jp/ ... etReadFile
具体的にはどのようにすればよいのでしょうか?
> 最新版のバージョン情報だけ書いたtxtを別にWebで公開しておいて
> それをInternetReadFileで読んで自分のバージョンと照合するのが良いかと思われます
>http://www.geocities.jp/wininet_dll_jp/ ... etReadFile
具体的にはどのようにすればよいのでしょうか?
以下にgoogleのトップページから5バイト読み取る例を挙げます
これを前回述べた”最新バージョンの番号が書かれたテキスト”に対して行えば、最新版のバージョン番号が読み取れます
これをアプリケーションの側で定義しておいた自身のバージョンと比較します
[ここをクリックすると内容が表示されます][/url]
InternetReadFileの後にDebugを仕掛ければbufの中身が"<html"になってる事が確認できるかと思いますコード: 全て選択
'wininetの宣言
Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (Agent As BytePtr,AccessType As DWord,ProxyName As BytePtr,ProxyBypass As BytePtr,flags As DWord) As HANDLE
Declare Function InternetCloseHandle Lib "wininet" (hInternet As HANDLE) As Long
Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (hInternet As HANDLE,Url As BytePtr,Headers As BytePtr, HeaderSize As DWord, flags As DWord,Context As DWord) As HANDLE
Declare Function InternetReadFile Lib "wininet" (hInternet As HANDLE,buf As VoidPtr,BufSize As DWord,ByRef ReadSize As DWord) As Long
'定数
Const INTERNET_OPEN_TYPE_DIRECT = 1
'変数等
Dim hInet As HANDLE,hInetUrl As HANDLE
Dim buf[5] As Byte
Dim ReadSize As DWord
'インターネットハンドル取得
hInet = InternetOpen("hoge1.0",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0)
'URLハンドル取得(第2引数にアクセスしたいURLを入れる)
hInetUrl = InternetOpenUrl(hInet,"http://www.google.co.jp/",NULL,0,0,0)
'5バイト読む
InternetReadFile(hInetUrl,buf,5,ReadSize)
'ハンドルを閉じる
InternetCloseHandle(hInetUrl)
InternetCloseHandle(hInet)
これを前回述べた”最新バージョンの番号が書かれたテキスト”に対して行えば、最新版のバージョン番号が読み取れます
これをアプリケーションの側で定義しておいた自身のバージョンと比較します
ウォルテスでした
> 以下にgoogleのトップページから5バイト読み取る例を挙げます
>
>
> InternetReadFileの後にDebugを仕掛ければbufの中身が"<html"になってる事が確認できるかと思います
> これを前回述べた”最新バージョンの番号が書かれたテキスト”に対して行えば、最新版のバージョン番号が読み取れます
> これをアプリケーションの側で定義しておいた自身のバージョンと比較します
trioさん、ありがとうございます。
大まかな流れは理解できたので、なんとかなりそうです。
ps.最初に書き込んだ時にパスワードがどうしても思い出せなくて…適当なHNで書いてしまいました(笑)
>
>
[ここをクリックすると内容が表示されます][/url]
> コード: 全て選択
> 'wininetの宣言
> Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (Agent As BytePtr,AccessType As DWord,ProxyName As BytePtr,ProxyBypass As BytePtr,flags As DWord) As HANDLE
> Declare Function InternetCloseHandle Lib "wininet" (hInternet As HANDLE) As Long
> Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (hInternet As HANDLE,Url As BytePtr,Headers As BytePtr, HeaderSize As DWord, flags As DWord,Context As DWord) As HANDLE
> Declare Function InternetReadFile Lib "wininet" (hInternet As HANDLE,buf As VoidPtr,BufSize As DWord,ByRef ReadSize As DWord) As Long
>
> '定数
> Const INTERNET_OPEN_TYPE_DIRECT = 1
>
> '変数等
> Dim hInet As HANDLE,hInetUrl As HANDLE
> Dim buf[5] As Byte
> Dim ReadSize As DWord
>
> 'インターネットハンドル取得
> hInet = InternetOpen("hoge1.0",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0)
> 'URLハンドル取得(第2引数にアクセスしたいURLを入れる)
> hInetUrl = InternetOpenUrl(hInet,"http://www.google.co.jp/",NULL,0,0,0)
> '5バイト読む
> InternetReadFile(hInetUrl,buf,5,ReadSize)
> 'ハンドルを閉じる
> InternetCloseHandle(hInetUrl)
> InternetCloseHandle(hInet)
> InternetReadFileの後にDebugを仕掛ければbufの中身が"<html"になってる事が確認できるかと思います
> これを前回述べた”最新バージョンの番号が書かれたテキスト”に対して行えば、最新版のバージョン番号が読み取れます
> これをアプリケーションの側で定義しておいた自身のバージョンと比較します
trioさん、ありがとうございます。
大まかな流れは理解できたので、なんとかなりそうです。
ps.最初に書き込んだ時にパスワードがどうしても思い出せなくて…適当なHNで書いてしまいました(笑)