HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0516
うひょブラウザがサーバーに送る情報を変更したい5解決


うひょ

リンク

2007/5/16(Wed) 18:28:05|NO.8294

HSPスクリプトからIEを表示したとき、
そのIEがサーバーに送る情報を変更したいのですがそのようなことは
できるのでしょうか?
また、もし出来るならどのようにすれば出来るのでしょうか?
具体的には、ブラウザの種類を変更したいです。
よろしくお願いします。



この記事に返信する


pizza

リンク

2007/5/17(Thu) 02:50:36|NO.8310

> ブラウザの種類

ユーザーエージェントですよね?
下記のようにするか、Navigateメソッドの五番目の引数でHTTPヘッダに
User-Agentを追加するかで変更出来るみたいです。


#uselib "urlmon.dll" #func UrlMkSetSessionOption "UrlMkSetSessionOption" int, sptr, int, int // このプロセスのユーザーエージェントを変更する #define URLMON_OPTION_USERAGENT 0x10000001 szAgent = "test browser" axobj ie, "Shell.Explorer.2" UrlMkSetSessionOption URLMON_OPTION_USERAGENT, szAgent, strlen(szAgent), 0 url = "http://taruo.net/e/?" // 診断君 ie->"Navigate" url stop



うひょ

リンク

2007/5/17(Thu) 18:22:11|NO.8315

ありがとうございます!
このスクリプトで解決することができました。
また、URLMON_OPTION_USERAGENTを変更したりして試してみたんですが
とくに何も変化しません。
他にどのような定数があるのでしょうか?
一応解決にしておきます。



pizza

リンク

2007/5/17(Thu) 19:47:27|NO.8316

定数は↓


#define INTERNET_OPTION_PROXY 38 #define INTERNET_OPTION_REFRESH 37 #define URLMON_OPTION_USERAGENT 0x10000001 #define URLMON_OPTION_USERAGENT_REFRESH 0x10000002


詳しくはこちらを参照してください。
http://msdn2.microsoft.com/en-us/library/ms775125.aspx

HTTPヘッダを使ったやり方↓


#define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}" #define DISPID_BEFORENAVIGATE2 250 #define DISPID_NEWWINDOW2 251 #define VARIANT_TRUE (-1) szAgent = "test browser" // 追加するHTTPヘッダ。改行(CRLF)区切りで szHttpHeader = "User-Agent: " + szAgent + "\n" // リファラも指定してみる szHttpHeader += "referer: http://www.onionsoft.net/hsp/\n" axobj ie, "Shell.Explorer.2" comevent ie_event, ie, DIID_DWebBrowserEvents2, *lb_event ie->"Navigate" "http://taruo.net/e/?" stop *lb_event switch comevdisp(ie_event) case DISPID_BEFORENAVIGATE2 gosub *lb_OnBeforeNavigate2 swbreak default swbreak swend return *lb_OnBeforeNavigate2 comevarg pDisp, ie_event, 0 comevarg url, ie_event, 1 comevarg flags, ie_event, 2, 2 comevarg frameName, ie_event, 3, 2 comevarg postData, ie_event, 4, 2 comevarg header, ie_event, 5 comevarg cancel, ie_event, 6, 2 // 追加ヘッダにユーザーエージェントが入っていればreturn // (サイズで判断しても良いかも) if instr(header, 0, szAgent) != -1 : return // Navigateキャンセル cancel("value") = VARIANT_TRUE // ヘッダを追加してNavigate pDisp->"Navigate" url, flags, frameName, postData, szHttpHeader return



うひょ

リンク

2007/5/17(Thu) 22:05:03|NO.8318

ありがとうございます!



pizza

リンク

2007/5/18(Fri) 00:18:39|NO.8321

あれだとDocumentCompleteが2回発生しますね。
(cancelが上書きされる)

cancelはNavigateの後に設定してください。
配列とかでスタックにする手もあると思いますがメンドーですね。


// ヘッダを追加してNavigate pDisp->"Navigate" url, flags, frameName, postData, szHttpHeader // Navigateキャンセル cancel("value") = VARIANT_TRUE



ONION software Copyright 1997-2021(c) All rights reserved.