■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
IE履歴の編集をしたいのですが・・・
1 名前: メンタイの徒 投稿日: 2000/10/17(火) 14:14
過去に訪れたサイトやフォルダのアドレスが保存されている'履歴'から
アドレスの取得や削除は出来るのでしょうか?
私が調べたところ、レジストリにHistoryとして指定された
フォルダにあるファイルに履歴情報を保存しているような感じなのですが、
それを操作する(つまり履歴を編集する)インターフェイスがわかりません。
どなたかご教示ください。

OSはWindows9xorNT系です。
開発はVC++で行っております。
よろしくお願いします。


2 名前: SAGE 投稿日: 2000/10/17(火) 21:44
そのフォルダの中に
*.url ファイルで保存してるんだったと思うので、(違ったら御免)
INIを扱うのと同じ要領でいいんじゃないでしょか。


3 名前: メンタイの徒 投稿日: 2000/10/18(水) 20:05
私もそれは確認したのですが、
そのフォルダの中にはindex.datというファイルが1つあるだけなんですよ、
(exp等で見ると一見、フォルダとurlで構成されているように見えるのですが・・・)
IEでHistory管理に使ってるCOM IFが何かわかれば糸口が見える気がするんですけどね。

2さん、どうもありがとうございました。



4 名前: 2 投稿日: 2000/10/18(水) 21:17
およ。ホントだ。
じゃぁ、仕方ないのでindex.datを解析するとか。(^^;


5 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/18(水) 22:11
IUrlHistoryStg2


6 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/18(水) 22:12
とりあえずhttp://msdn.microsoft.comで検索したら?
All Words"InternetExplorer History Interface"とか検索すると
IUrlHistoryStg,IUrlHistoryStg2とか出てきます。(IE5.5以降のみですが)
IOmHistoryはIE4以降で使えるみたいだけど、インターフェースが乏しいですね。



7 名前: メンタイの徒 投稿日: 2000/10/19(木) 12:27
おお、すばらしい!
これで何とか出来そうな気がします!!!
ほんと、ありがとうございます!
出来たら報告しますね!


8 名前: メンタイの徒 投稿日: 2000/10/21(土) 23:39

#include <windows.h>
#include <Mshtmlc.h>

int main(int argc, char* argv[])
{
IOmHistory* pHisotry;
HRESULT hr;
DWORD cRef;
CoInitialize(NULL);
hr = CoCreateInstance(CLSID_COmHistory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IOmHistory,
reinterpret_cast<void **>(&pHisotry));
if (SUCCEEDED(hr))
{
// ここにこれない!
cRef = pHisotry->Release();
}
CoUninitialize();
return 0;
}

このような方法でインターフェイスの取得を試みたのですが、
下記のようなエラーが発生してしまいコンパイルが通りません。
どなたか、原因のわかる方はいらっしゃらないでしょうか?
よろしくおねがいします、

error LNK2001: 外部シンボル "_CLSID_COmHistory" は未解決です
fatal error LNK1120: 外部参照 1 が未解決です。


9 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/22(日) 00:37
これはコンパイルエラーじゃなくてリンカのエラー。
COM方面は疎いので大して力にはなれんが、足りないのがCLSIDの定義
のみであれば、UUID.LIBあたりをリンクすれば良いのではないかな。



10 名前: メンタイの徒 投稿日: 2000/10/22(日) 14:54
uuid.libを確認したのですが、デフォルトで組み込まれておりまして、
関係無いようなのです。
それ以外にも、libファイルは全て試したのですが、どれもダメでした。

う〜ん、わからんですよー・・・


11 名前: バッカーです 投稿日: 2000/10/23(月) 06:44
http://ourworld.compuserve.com/homepages/w_baudisch/Homepage.htm
ここのサイトの主が
http://ourworld.compuserve.com/homepages/w_baudisch/HistoryInspector.htm

http://ourworld.compuserve.com/homepages/w_baudisch/HistoryReader.htm
を作っているのでとりあえずメールで聞いてみよう。




12 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 10:55
IUrlHistoryStg2だったら使ったことがある

IUrlHistoryStg2* pHistory;
IEnumSTATURL* URLs;
_STATURL url;

CoInitialize(NULL);

hr = CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC_SERVER,
 IID_IUrlHistoryStg2, reinterpret_cast<void **>(&pHistory));

if(SUCCEEDED(hr))
{
 pHistory->EnumUrls( &URLs );
 while( celt == 1 )
 {
  URLs->Next( 1, &url, &celt );
 
  // url.pwcsTitle
// タイトル

// url.ftLastVisited
// サイトにいった日

// url.pwcsUrl
// サイトのURL

 URLs->Release();
 }
}

cRef = pHistory->Release();
CoUninitialize();



13 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 15:02
ふつうこっちだよね


14 名前: メンタイの徒 投稿日: 2000/10/23(月) 23:58
遅くなりましてすいません。
>11
もう少しやってみてどうにもならないようでしたらダメもとですが、
メールしてみます。ありがとうございますね!
>12
IE5.5からの機能みたいなので、こっちが使用できないんですよ、
ターゲットが良くてIE4環境なので、IOmHistoryを使おうと思ったんです。
でも、すごく親切にして頂いてホントにありがとうございます。



15 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 00:51
>14
IE5でもつかえたよ、たしか
ドキュメントはなかったが。


16 名前: メンタイの徒 投稿日: 2000/10/24(火) 09:22
>15
ターゲットがIE5じゃないんですよー(;;
IWebBrowser2は使用しているようですので、IE4以下ではないかと踏んでいるんです。

ところでみなさんはインターフェイスからCLSIDってどうやって調べてますか?
私はidlを見てるのですが、なにかもっといいやり方はあるのでしょうか?